亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Nios Ⅱ的音頻播放器設(shè)計(jì)與驅(qū)動(dòng)開發(fā)

        2010-04-12 00:00:00馮新宇蔣洪波祁紅巖
        現(xiàn)代電子技術(shù) 2010年4期

        摘 要:采用TOP-DOWN設(shè)計(jì)方法,在DE2開發(fā)平臺(tái)上完成音頻播放器設(shè)計(jì)。設(shè)計(jì)主要包括Nios Ⅱ軟核處理器、音頻控制器、I2C控制器和IDE接口等IP核構(gòu)成的Nios Ⅱ系統(tǒng),在此基礎(chǔ)上完成μClinux操作系統(tǒng)移植以及完成基于HAL層的音頻驅(qū)動(dòng)器的驅(qū)動(dòng)程序開發(fā),最后用C語言在Nios Ⅱ系統(tǒng)上編寫應(yīng)用程序進(jìn)行測試。該實(shí)現(xiàn)方法即是下一代消費(fèi)類電子發(fā)展的趨勢,也是集成電路發(fā)展的一個(gè)趨勢。

        關(guān)鍵詞:SoPC;音頻控制器;HAL;系統(tǒng)移植

        中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1004-373X(2010)04-097-05

        Design and Driver Development of Audio Player Based on Nios Ⅱ

        FENG Xinyu,JIANG Hongbo,QI Hongyan

        (Heilongjiang Institute of Science and Technology,Harbin,150027,China)

        Abstract:Using TOP-DOWN design method to develop audio player in the DE2 platform.The system mainly consists of Nios Ⅱ soft-core processor,audio controller,I2C controller,IDE interface and other IP core.It completes the μClinux operating system transplantation and driver drives of HAL,using C language write test bench for it.The method is trend of the next generation of consumer electronics and IC.

        Keywords:SoPC;audio controller;HAL;system transplantation

        0 引 言

        隨著集成電路的發(fā)展,嵌入式系統(tǒng)發(fā)生了深刻的變革,各種消費(fèi)類電子產(chǎn)品、終端設(shè)備都采用了嵌入設(shè)計(jì)技術(shù)。SoPC技術(shù)[1]作為嵌入式系統(tǒng)的重要分支,最近兩年發(fā)展迅猛,使用軟核處理器的概念[2]更加明確,但目前市場上還沒有軟核控制器的產(chǎn)品。隨著軟核處理器的不斷成熟,軟核處理器必將應(yīng)用在各種設(shè)備上,使得終端產(chǎn)品的價(jià)格也會(huì)因此而降低。在此,采用SoPC技術(shù),設(shè)計(jì)了由Nios Ⅱ軟核處理器作為中央處理單元、開發(fā)音頻控制器及I2C控制器等IP核[3]構(gòu)成的音頻播放器系統(tǒng)。在此基礎(chǔ)上,完成了μClinux操作系統(tǒng)移植及相應(yīng)驅(qū)動(dòng)程序開發(fā),用C語言在該系統(tǒng)上編寫應(yīng)用程序進(jìn)行測試,實(shí)現(xiàn)了一個(gè)完整的音頻播放器功能。

        1 系統(tǒng)的整體結(jié)構(gòu)

        在此使用的硬件開發(fā)平臺(tái)是DE2開發(fā)板,它是Altera公司針對大學(xué)教學(xué)以及研究機(jī)構(gòu)推出的FPGA開發(fā)平臺(tái)。DE2平臺(tái)上提供的硬件資源有Altera CycloneⅡ系列的EP2C35F672C6;主動(dòng)串行配置器件EPCS16U30;編程調(diào)試和用戶API設(shè)計(jì)的USB Blaster,支持JTAG模式和AS模式;512 KB SRAM;8 MB SDRAM;4 MB FLASH;SD卡接口;兩個(gè)板上時(shí)鐘源,50 MHz和27 MHz;24位音頻編解碼器等。音頻播放器的系統(tǒng)硬件框圖如圖1所示。

        圖1 系統(tǒng)硬件框圖

        在圖1中,處理器的工作由Nios Ⅱ軟核處理器完成;存儲(chǔ)器是存放音頻文件,DE2開發(fā)板外接了SD卡擴(kuò)展口,該設(shè)計(jì)采用SD卡作為數(shù)據(jù)的存儲(chǔ),音頻編解碼處理單元使用的是音頻編解碼芯片WM8731。

        實(shí)現(xiàn)音頻播放器需要開發(fā)二個(gè)接口,一個(gè)是處理器控制WM8731的控制接口,WM8731有3線和2線兩種控制方式,在此采用的是兩線的I2C控制模式;第二個(gè)接口是音頻編解碼控制器接口,也是設(shè)計(jì)的核心重點(diǎn),最后把這二個(gè)接口包裝成IP。IP與系統(tǒng)之間的互聯(lián)使用Avalon總線結(jié)構(gòu),與系統(tǒng)之間的關(guān)系[3]如圖2所示,其他IP由Altera公司免費(fèi)提供。

        圖2 SoPC Builde系統(tǒng)模塊

        2 I2C控制模塊與音頻編解碼控制接口設(shè)計(jì)

        2.1 I2C控制模塊接口設(shè)計(jì)

        在I2C控制器中,輸入SCLK是I2C控制器的時(shí)鐘輸入,頻率為20 kHz,通過外部晶振分頻可以得到。WM8731總線接口時(shí)序如圖3所示。

        圖3 WM8731 I2C總線控制時(shí)序

        WM8731控制接口采用兩線接口模式,起始條件是SDIN為下降沿而SCLK為上升沿的時(shí)刻。接下來的7位是設(shè)備地址,確定使用哪一個(gè)設(shè)備(這里使用就是WM8731),之后一位為確定數(shù)據(jù)的傳輸方向,0說明為寫狀態(tài)。設(shè)備在第9個(gè)時(shí)鐘周期通過SDIN,它為低電平態(tài),用于確定寄存器地址和讀/寫控制,應(yīng)答數(shù)據(jù)傳輸(ACK,一共需要3個(gè)應(yīng)答信號(hào))。B[15:8]包括了要控制的寄存器地址,B[7:0]包含的是數(shù)據(jù)信息。結(jié)束條件是傳輸數(shù)據(jù)后SDIN和SCLK均為高電平。

        由時(shí)序圖和WM8731芯片的具體控制過程得知,I2C控制器每次傳輸24 b數(shù)據(jù),前8 b是從設(shè)備地址,接下來的8 b是從設(shè)備寄存器地址,最后8 b是數(shù)據(jù),但是WM8731的寄存器地址是7 b,數(shù)據(jù)是9 b。所以實(shí)際傳輸時(shí),從設(shè)備寄存器地址的最后一位為數(shù)據(jù)的最高位,即第9 b。

        I2C控制器使用33個(gè)I2C時(shí)鐘周期,完成1次傳輸24 b數(shù)據(jù),第一個(gè)時(shí)鐘周期用于初始化控制器,第2,3個(gè)周期用于啟動(dòng)傳輸,第4~30個(gè)周期用于傳輸數(shù)據(jù)。其中,包括3個(gè)ACK信號(hào),最后3個(gè)時(shí)鐘周期用以停止傳輸??刂破髦惺褂昧艘粋€(gè)6 b計(jì)數(shù)器對傳輸周期計(jì)數(shù)。在開始傳輸之前和結(jié)束傳輸之后,總線的時(shí)鐘信號(hào)應(yīng)該保持高電平,并且起始條件和結(jié)束條件由I2C的兩個(gè)信號(hào)共同配合完成。

        I2C傳輸一次數(shù)據(jù)的控制流程如圖4所示。結(jié)合WM8731 I2C總線控制時(shí)序圖,SD0為控制器發(fā)送的串行數(shù)據(jù),END為傳輸結(jié)束標(biāo)志。當(dāng)復(fù)位信號(hào)為有效電平時(shí),發(fā)送計(jì)數(shù)器置為6′b111111,因?yàn)楫?dāng)計(jì)數(shù)器值為32時(shí),I2C控制總線停止傳輸數(shù)據(jù);當(dāng)復(fù)位電平無效時(shí),計(jì)數(shù)器賦值為0,等待數(shù)據(jù)傳輸開始標(biāo)志。當(dāng)傳輸標(biāo)志有效時(shí),計(jì)數(shù)器開始計(jì)數(shù),完成I2C控制器數(shù)據(jù)傳輸?shù)目刂乒δ?,?jì)數(shù)同時(shí)對計(jì)數(shù)器的值進(jìn)行判斷。當(dāng)計(jì)數(shù)器值為0(第1個(gè)時(shí)鐘周期)時(shí),對控制器進(jìn)行初始化;當(dāng)計(jì)數(shù)器為值1和2時(shí),啟動(dòng)傳輸,依次類推,與控制時(shí)序完全對應(yīng)。

        圖4 音頻控制器程序流程圖

        2.2 I2C配置模塊

        I2C配置模塊是通過例化I2C控制模塊完成對WM8731內(nèi)部11個(gè)寄存器包括工作模式、采樣率、音量等參數(shù)的設(shè)定。WM8731的寄存器以及參數(shù)值設(shè)置如表1所示。

        表1 WM8731的寄存器參數(shù)設(shè)置

        寄存器地址設(shè)置參數(shù)值寄存器地址設(shè)置參數(shù)值

        00H1AH0AH06H

        02H1AH0CH00H

        04H7BH0EH01H

        06H7BH10H02H

        08HF8H12H01H

        配置數(shù)據(jù)指通過查表的方式對數(shù)據(jù)進(jìn)行配置。從表中可以看出,數(shù)據(jù)為16 b,包括寄存器地址和寄存器數(shù)據(jù)。

        最后,把用Verilog代碼編寫的I2C控制器模塊程序,利用SoPC Builder工具進(jìn)行包裝,用IP的形式連接到系統(tǒng)的Avalon總線上。I2C控制功能所需的Avalon總線信號(hào)類型、傳輸方向及接口名稱如表2所示。

        2.3 音頻編解碼控制接口設(shè)計(jì)

        音頻控制模塊主要是完成對音頻編解碼芯片WM8731的接口控制。在接口的拓?fù)浣Y(jié)構(gòu)中,從端口需要接收或者發(fā)送音頻數(shù)據(jù),因而需要加一個(gè)音頻控制器,負(fù)責(zé)數(shù)據(jù)的傳輸。Nios Ⅱ把音頻控制器中的數(shù)據(jù)送給WM8731的數(shù)據(jù)接收引腳DACDAT,可以完成音頻的播放。同理,錄音過程也需要在WM8731中完成ADC轉(zhuǎn)換后,通過音頻控制器送給Nios Ⅱ處理。這里主要是一個(gè)音頻控制器和Avalon總線之間的相互通信,圖5為接口拓?fù)浣Y(jié)構(gòu)。

        表2 I2C信號(hào)和Avalon接口信號(hào)類型

        信號(hào)名稱方向位寬/b描述

        Avalon接口信號(hào)

        iCLKinput1時(shí)鐘

        iRST_Ninput1復(fù)位信號(hào)

        I2C_SCLKinput1總線時(shí)鐘信號(hào)

        I2C_SDATbidir1數(shù)據(jù)信號(hào)

        圖5 接口拓?fù)浣Y(jié)構(gòu)

        Nios Ⅱ處理器與WM8731之間的數(shù)據(jù)交換要求音頻控制器功能包括FIFO單元、數(shù)據(jù)并入串出轉(zhuǎn)換模塊、位時(shí)鐘發(fā)生器模塊、數(shù)據(jù)鎖存模塊等,音頻控制器結(jié)構(gòu)模塊如圖6所示。

        圖6 音頻控制器結(jié)構(gòu)模塊圖

        通過外部晶振分頻為音頻控制器提供一個(gè)WM8731所需的18 MHz工作頻率,這個(gè)頻率從引腳oAUD_XCK(WM8731主時(shí)鐘)輸出,數(shù)字音頻位時(shí)鐘(oAUD_BCK),left/right 采樣時(shí)鐘(oAUD_LRCK)都是從18 MHz經(jīng)過分頻處理得到。其中,oAUD_BCK信號(hào)頻率為3 MHz;oAUD_LRCK信號(hào)頻率為96 kHz,FIFO接收的數(shù)據(jù)經(jīng)過鎖存器控制后送到并入串出模塊,這時(shí)信號(hào)可以直接給音頻編解碼芯片來使用。音頻控制器端口信號(hào)如表3所示。

        最后還是利用SoPC Builder將編寫好的音頻控制器中Verilog代碼封裝成IP,在使用時(shí)調(diào)用即可。

        表3 音頻接口信號(hào)和Avalon接口信號(hào)類型

        信號(hào)名稱方向位寬/b

        Avalon接口信號(hào)

        iRST_ninput1

        iDATA[15:0]input16

        iWR_CLKinput1

        iCLK_18_4input1

        iWRinput1

        輸出信號(hào)

        oAUD_DATAoutput1

        oDATAoutput16

        oAUD_BCKoutput1

        oAUD_XCKoutput1

        oAUD_LRCKoutput1

        3 操作系統(tǒng)移植

        操作系統(tǒng)移植的實(shí)驗(yàn)環(huán)境為PC上采用虛擬機(jī)的方法來訪問Linux系統(tǒng),Linux操作系統(tǒng)使用的是Red Hat Enterprise 4 AS。在這個(gè)環(huán)境下進(jìn)行系統(tǒng)移植[4,5],需要下載一些Nios Ⅱ開發(fā)工具,如下:

        (1) nios2gcc.tar.bz2:nios2gcc交叉編譯工具;

        (2) μClinux-dist-20070130-nios2-02.diff.gz μClinux源代碼包;

        (3) μClinux-dist-20070130-nios2-02.diff.gz μClinux補(bǔ)丁。

        系統(tǒng)移植主要設(shè)計(jì)問題有bootloader配置、內(nèi)核配置和文件系統(tǒng)的配置。

        μClinux系統(tǒng)的日益完善,現(xiàn)行大部分操作系統(tǒng)移植屬于板級(jí)移植,即所用的處理器已經(jīng)被μClinux支持,板級(jí)移植需要修改或添加linux/arch/Nios2 nommu/scripts目錄中的文件,該目錄中主要是與具體硬件平臺(tái)相關(guān)的配置,可以利用Nios Ⅱ自帶的SoPC Builder軟件生成具體平臺(tái)對應(yīng)的配置文件[6,7]。但具體的細(xì)節(jié)略有不同。這里重點(diǎn)要修改兩個(gè)文件:altera.c和dm9000x.c。altera.c文件主要是文件本身默認(rèn)的存儲(chǔ)單元,其大小與實(shí)際的開發(fā)板略有出入,把默認(rèn)的的寄存器大小改為與開發(fā)板一致即可。第二個(gè)要修改的文件dm9000x.c,將其中的na_dm9000全部改為na_DM9000A,保存后退出。內(nèi)核的配置與一般μClinux內(nèi)核配置過程基本相同,配置好后,保存,重新編譯。最后可在make生成所需要的內(nèi)核,把編譯好的內(nèi)核文件通過jtag下載到系統(tǒng)中,得到如圖7所示的啟動(dòng)界面,它表明系統(tǒng)啟動(dòng)成功,可以對其進(jìn)行一般Linux的系統(tǒng)操作。

        4 音頻驅(qū)動(dòng)程序的編寫

        設(shè)備驅(qū)動(dòng)程序可以使用模塊的方式動(dòng)態(tài)地加載到內(nèi)核中去。它們之間的關(guān)系如圖8所示。

        設(shè)備注冊:設(shè)備注冊使用函數(shù)register_chrdev,調(diào)用后函數(shù)就可以向系統(tǒng)申請主設(shè)備號(hào),如果register_chrdev操作成功,設(shè)備名就會(huì)出現(xiàn)在/proc/devices文件里。設(shè)備注冊需要的頭文件為fs.h,具體的各個(gè)形式參數(shù)意義與注冊函數(shù)的形參相同[8],若函數(shù)返回值為0,說明關(guān)閉設(shè)備成功,否則返回-1。

        圖7 系統(tǒng)啟動(dòng)界面

        圖8 設(shè)備驅(qū)動(dòng)程序流程圖

        I/O設(shè)備的讀/寫:在PIO設(shè)備寄存器范圍內(nèi)使用結(jié)構(gòu)體變量訪問使用和分配PIO設(shè)備,可以提高驅(qū)動(dòng)程序的開發(fā)效率。-linux-2.6.x/include/asm-nios2nommu/pio_struct.h中定義了np_pio結(jié)構(gòu)體,如下:

        typedef volatile struct

        {

        int np_piodata;

        int np_piodirection;

        int np_piointerruptmask;

        int np_pioedgecapture;

        }np_pio;

        I/O內(nèi)存分配和映射:在使用之前,必須首先分配I/O內(nèi)存區(qū)域[9,10](memory region)的接口。該設(shè)計(jì)的設(shè)備驅(qū)動(dòng)程序申請內(nèi)存區(qū)域可以被定義為:

        request_mem_region((unsigned long)WM8731_BASE,sizeof(np_pio),\"de2_wm8731\");

        該函數(shù)從WM8731_BASE開始分配sizeof(np_pio)長的內(nèi)存區(qū)域。如果成功,返回非NULL指針;否則返回NULL值。

        設(shè)備操作:假定設(shè)備文件代表物理設(shè)備,這些物理設(shè)備一些用作輸入,一些用作輸出。因此,在內(nèi)核中驅(qū)動(dòng)程序?qū)τ谳敵鲈O(shè)備可以通過打開設(shè)備文件對它寫操作,就像寫一個(gè)文件,也可以通過打開設(shè)備完成如讀設(shè)備等操作,最后關(guān)閉文件,這些操作在file_operation結(jié)構(gòu)體[5]中定義。

        5 測 試

        對驅(qū)動(dòng)程序的驗(yàn)證主要是通過幾個(gè)應(yīng)用程序?qū)崿F(xiàn)的。在μClinux里,驅(qū)動(dòng)程序的編寫是在IDE里完成的,編譯通過后,與μClinux一起下載到開發(fā)板上進(jìn)行測試。當(dāng)驅(qū)動(dòng)程序加載到系統(tǒng)后,首先查看設(shè)備是否被加載上,利用命令查看設(shè)備號(hào),確認(rèn)設(shè)備是否被掛載上,在提示符后面,所用命令為:

        mount –n –t proc proc /proc

        cat /proc/devices

        顯示信息為:

        Character devices:

        1 men

        2 pty

        243 de2_wm8731

        可以看出設(shè)備de2_wm8731已經(jīng)被加載,其設(shè)備號(hào)為243。

        5.1 在IDE中編寫應(yīng)用程序

        編寫應(yīng)用程序的方法與普通C編程相同,主要是把音樂數(shù)據(jù)送到音頻控制器音頻數(shù)據(jù)接口,這里播放的是WAV格式的音頻文件。由于受到存儲(chǔ)空間的限制,首先要將WAV文件轉(zhuǎn)換成十進(jìn)制文件(二,八進(jìn)制亦可),選取其中的很小一段,以數(shù)組的形式放到應(yīng)用程序里,這些數(shù)組中存放的就是音頻測試數(shù)據(jù)。

        5.2 把WAV文件轉(zhuǎn)換成十進(jìn)制數(shù)據(jù)的方法

        當(dāng)音頻控制器不在μClinux操作系統(tǒng)下播放音頻數(shù)據(jù)時(shí),而是通過存儲(chǔ)媒質(zhì)(如SD卡)播放的,則可以把從buffer里讀出的數(shù)據(jù)以十進(jìn)制的方式打印出來,主要程序代碼為:

        while(1)

        { SD_read_lba(Buffer,j,1);

        printf(\"{\");

        while(i<512)

        { if(!IORD(WM8731_BASE,0))

        { Tmp1=(Buffer[i+1]<<8)|Buffer[i];

        printf(\",%d\",Buffer[i]);

        IOWR(WM8731_BASE,0,Tmp1);

        i+=1;

        }

        }

        printf(\"},\");

        這樣就把音頻數(shù)據(jù)以下列十進(jìn)制形式打印出來:

        37,255,52,255,38,0,84,255,94,0,119,255,148,0,157,255,202,0,196,255,255,0,238,255[HJ1〗

        5.3 應(yīng)用程序編譯

        編譯應(yīng)用程序需要編寫一小段makefile文件。這里把其他應(yīng)用程序的makefile拷貝過來進(jìn)行修改使用,該驗(yàn)證把系統(tǒng)中自帶的samples/hello/Makefile拷貝到應(yīng)用程序testaudio工程中,然后修改Makefile。

        Hello程序的Makefile文件主要程序段為:

        DEBUG = 1

        PROJ_NAME = hello

        INSTALL_DIR =

        PROGS :=$(PROJ_NAME).exe

        CFLAGS +=

        #

        # You should not need to modify anything beyond this point

        #

        TOPDIR = ..

        include $(TOPDIR)/Rules.mak

        修改的方法為:

        將Debug = 1 改為 Debug = 0

        將PROJ_NAME =hello 改為 PROJ_NAME = testaudio

        將TOPDIR = ..改為 TOPDIR = .

        在include $(TOPDIR)/Rules.mak 前面加上 include $(TOPDIR)/Settings.mak

        完成修改后,在工程中單擊右鍵,選擇Create Make Target,這時(shí)生成testaudio.exe文件,將其拷貝到文件系統(tǒng)里的bin文件夾下,再對文件系統(tǒng)進(jìn)行編譯,此后文件系統(tǒng)的/bin中就含有testaudio.exe程序。這時(shí)在μClinux下運(yùn)行該應(yīng)用程序即可。

        其他驅(qū)動(dòng)程序,如顯示、按鍵和LED采用類似的方法編寫測試程序,再向相應(yīng)的數(shù)據(jù)緩沖區(qū)內(nèi)寫數(shù)據(jù),這些數(shù)據(jù)都可以在相應(yīng)終端看到,且可以實(shí)現(xiàn)相應(yīng)的功能,驅(qū)動(dòng)成功。

        6 結(jié) 語

        這里主要是將嵌入式眾多技術(shù)中發(fā)展比較快的FPGA,SoPC、嵌入式操作系統(tǒng)等有機(jī)結(jié)合起來,利用DE2開發(fā)平臺(tái),主要完成以下幾方面工作:

        (1) 對DE2開發(fā)平臺(tái)功能模塊進(jìn)行劃分,掌握其開發(fā)平臺(tái)特性、使用方法,及SoPC系統(tǒng)設(shè)計(jì)過程、Avalon總線規(guī)范和使用方法;

        (2) 掌握音頻編解碼芯片的工作原理, 完成其接口設(shè)計(jì), 主要包括控制接口和音頻數(shù)字接口兩部分,并結(jié)合第三方IP,完成基于Nios Ⅱ音頻系統(tǒng)的FPGA的設(shè)計(jì);

        (3) 研究嵌入式操作系統(tǒng)相關(guān)知識(shí),完成μClinux系統(tǒng)中基于Nios Ⅱ硬件平臺(tái)的移植工作;

        (4) 研究嵌入式驅(qū)動(dòng)程序的基本方法,完成音頻驅(qū)動(dòng)程序的設(shè)計(jì)和調(diào)試。實(shí)現(xiàn)音頻驅(qū)動(dòng)程序的功能,可以正常播放音頻文件。

        參考文獻(xiàn)

        [1]李蘭英.Nios Ⅱ嵌入式軟核SoPC設(shè)計(jì)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.

        [2]Deng Qingxu,Xu Hai.An Embedded SoPC System using Automation Design[A].International Conference on Parallel Processing[C].IEEE Computer Society,2005:232-239.

        [3]張春生.面向SoPC的IP核設(shè)計(jì)與IP復(fù)用技術(shù)研究[D].長沙:國防科技大學(xué),2006.

        [4]ChinChen Chang,YungChen Chou.High Payload Data Embedding with Hybrid Strategy[J].Intelligent Information Hiding and Multimedia Signal Processing,2007,1:505-508.

        [5]Chen M C,F(xiàn)ang Y J,Zhang D H.Development of an Embedded Industrial Vision System[A].2006 1st IEEE Conference,Industrial Electronics and Applications[C].Singapore,2006:1-4.

        [6]Yingshieh Kung,Guashieh Shu.Development of a FPGA-based Motion Control IC for Robot Arm[A].IEEE International Conference on Industrial Technology[C].IEEE Computer Society,2005:1 397-1 402.

        [7]Onatban Corbet,Alessandro Rubini,Greg Kroab Hartman.Linux Device Driver[M].3版.魏永明,譯.北京:中國電力出版社,2006.

        [8]蔡偉綱.Nios Ⅱ軟件架構(gòu)解析[M].西安:西安電子科技大學(xué)出版社,2007.

        [9]Tam Nguyen,Zaliznyak.Architecture and Methodology of a SoPC with 3.25Gbps CDR Based SERDES and 1Gbps Dynamic Phase Alignment[A].Custom Integrated Circuits Confe-rence[C].IEEE Computer Society,2003:659-662.

        [10]Kuan Jen Lin,Chuang Hsiang Huang.Design and Implementation of a Schedulable DMAC on an AMBA-Based SoPC Platform[A].IEEE Asia Pacific on Conference Circuits and Systems[C].IEEE Computer Society,2005:279-282.

        九九久久国产精品大片| 国产成人无码精品久久久露脸 | 蜜桃视频一区二区三区四| 日本精品少妇一区二区三区| 久久综合久久鬼色| 亚洲线精品一区二区三区八戒| 日本熟妇视频在线中出| 国产一区亚洲二区三区| 人人摸人人操| 亚洲国产一区在线二区三区| 男人的天堂av网站一区二区| 黄片一级二级三级四级| 99re66在线观看精品免费| 国产麻豆成人精品av| 国产一区二区三区啪| 一级二级三一片内射视频| 一本色道久久亚洲精品| 无码人妻一区二区三区免费视频 | 天堂av在线美女免费| 国内精品久久久久影院一蜜桃| 中文人妻无码一区二区三区| 国产精品亚洲av一区二区三区| 色综合久久网| 99精产国品一二三产品香蕉| 久久婷婷国产精品香蕉| 国产蜜桃传媒在线观看| 日本最新免费二区三区| 欧美精品一区二区性色a+v| 日本护士一区二区三区高清热线| 日韩有码在线观看视频| 亚洲av无码专区在线播放| 四虎精品成人免费观看| 99在线无码精品秘 人口| 开心五月骚婷婷综合网| 日本艳妓bbw高潮一19| 91免费在线| 日本高清一区二区三区色| 成熟了的熟妇毛茸茸| 蜜桃av噜噜一区二区三区| 大白屁股流白浆一区二区三区| 亚洲精品视频1区2区|