国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于EDK的高速數(shù)據(jù)收發(fā)嵌入式用戶IP核設(shè)計

2015-12-20 01:09:34范曉星席鵬飛
電子科技 2015年2期
關(guān)鍵詞:接收數(shù)據(jù)發(fā)送數(shù)據(jù)內(nèi)存

范曉星,席鵬飛,孟 琪

(西安電子科技大學(xué)電子信息攻防對抗與仿真技術(shù)教育部重點實驗室,陜西西安 710071)

隨著可編程邏輯器件的進步和發(fā)展,F(xiàn)PGA在嵌入式系統(tǒng)中發(fā)揮著重要作用。因此,眾多FPGA廠商將專用的嵌入式處理器PowerPC、ARM等嵌入到FPGA芯片中。其集成了嵌入式處理器的FPGA芯片被定義為FPGA平臺。這種基于FPGA嵌入式平臺提供了一個靈活的解決方案,在該方案中,一個單FPGA芯片上提供了大量不同的IP軟核和硬核資源,這些固件和硬件可隨時升級。這種可編程的結(jié)構(gòu)特點,大幅縮短了系統(tǒng)的開發(fā)時間,而同一平臺能應(yīng)用在多個領(lǐng)域,提高了平臺的資源復(fù)用率[1]。

針對平臺 FPGA設(shè)計,Xilinx公司推出了 EDK(Embedded Development Kit),專門用于FPGA內(nèi)部嵌入式處理器、軟硬件協(xié)同設(shè)計工具,包含了大量與PowerPC設(shè)計相關(guān)的IP核,使用EDK進行設(shè)計可以大幅簡化設(shè)計步驟并縮短開發(fā)周期,但在EDK中的IP核并不能滿足設(shè)計人員在設(shè)計中的使用。而Xilinx公司的另一硬件開發(fā)工具ISE(Integrated Software Environment)中具有眾多EDK中沒有的IP資源。因此,本文提供了一種調(diào)用ISE中的IP核構(gòu)建在EDK環(huán)境下使用的IP核設(shè)計。該設(shè)計可完成FPGA與片外的高速串行通信,實現(xiàn)讀寫內(nèi)存的功能。

1 IP整體結(jié)構(gòu)

自定義用戶IP核總體結(jié)構(gòu)如圖1所示。

圖1 自定義用戶IP結(jié)構(gòu)圖

如圖1所示,IP核基于Xilinx公司Virtex-5 FX系列的PowerPC硬核嵌入式系統(tǒng)設(shè)計。用戶IP核通過PLB總線連接在PowerPC系統(tǒng)中;通過兩路GTX硬核收發(fā)數(shù)據(jù),與FPGA外部進行串行通信,數(shù)據(jù)傳輸速率可達6.0 Gbit·s-1;數(shù)據(jù)通過緩存模塊和NPI接口寫入內(nèi)存控制器 MPMC,或從 MPMC讀出,并通過MPMC實現(xiàn)內(nèi)存讀寫。

2 RocketIO GTX硬核

RocketIO GTX是Xilinx公司FPGA中的硬核,是一種具有通用性、易用性、低功耗、低成本的千兆位串行收發(fā)器。設(shè)計將使用此硬核完成與FPGA外部的高速串行通信功能。

設(shè)計采用Virtex-5 FXT系列FPGA,其GTX主要特性如下[2]:(1)高速全雙工收發(fā),每個通道支持750 Mbit·s-1~6.5 Gbit·s-1的數(shù)據(jù)傳輸速率。(2)內(nèi)嵌了發(fā)送時鐘生成和接收時鐘恢復(fù)模塊,減少了外部電路。(3)自同步時鐘數(shù)據(jù)發(fā)送方式。(4)5級可調(diào)輸出差分電壓,提高了兼容性。(5)可編程的發(fā)射預(yù)加重、接收線性均衡器和判決反饋均衡器,提高信號的完整性。(6)支持直流和交流耦合。(7)可編程的片內(nèi)差分終端50/75Ω電阻,減少了外接終端電阻。(8)支持內(nèi)部的串行和并行回環(huán)測試模式,方便調(diào)試。(9)8b/10b編解碼,可編程的邊界對齊字符(COMMA)檢測,方式靈活,支持多種串行通信協(xié)議。(10)具有用戶動態(tài)重配置端口。

根據(jù)設(shè)計所需,在ISE中按照Xilinx官方GTX核例化向?qū)е笇?dǎo)[3]例化GTX核,測試收發(fā)數(shù)據(jù)性能。設(shè)計將 GTX 配置為150 MHz專用時鐘,3.0 Gbit·s-1串行速率,采用8b/10b編碼,內(nèi)部16 bit數(shù)據(jù),K字符選擇K28.5。

圖2給出了使用一對GTX收發(fā)數(shù)據(jù)的時序,圖2為用Chipscope抓取的時序圖。

圖2 GTX數(shù)據(jù)傳輸時序圖

在Virtex-5 FPGA上例化出兩通道一對GTX核tile0,在FPGA外部將tile0_0通道 GTX的發(fā)送端與tile0_1通道GTX的接收端相連,組成tile0_0通道發(fā)送數(shù)據(jù),tile0_1通道接收數(shù)據(jù)的通信回路。通過發(fā)送遞增碼進行測試,如圖2所示,tile0_1通道接收到的數(shù)據(jù)有30個周期的延時,這是消耗在鏈路上的時間。信號tile0_txcharisk0_i為“00”,說明 tile0_txdata0_i在鏈路上發(fā)送的是數(shù)據(jù);信號tile0_rxcharisk1_i為“00”,說明tile0_rxdata1_i接收到的是數(shù)據(jù),而不是控制字符;信號 tile0_rxbyteisaligned1_i為“1”,說明 tile0_rxdata1_i接收到的數(shù)據(jù)已經(jīng)對齊[2]。

3 內(nèi)存控制器MPMC及NPI總線

在接收數(shù)據(jù)時,將GTX接收端收到的數(shù)據(jù)通過高速數(shù)據(jù)總線NPI總線[4]寫入內(nèi)存進行緩存;在發(fā)送數(shù)據(jù)時,先將數(shù)據(jù)讀入內(nèi)存進行緩存,GTX發(fā)送端通過NPI總線從內(nèi)存中取數(shù)據(jù),然后發(fā)送出去。Xilinx公司在EDK開發(fā)工具里提供了內(nèi)存控制器軟核MPMC,對內(nèi)存的讀寫操作通過調(diào)用MPMC完成,因此本高速數(shù)據(jù)收發(fā)用戶IP需要NPI接口與MPMC進行數(shù)據(jù)傳輸。

3.1 MPMC

MPMC(Multi-Port Memory Controlletr)是一個全部支持雙數(shù)據(jù)傳輸模式(DDR和DDR2)和單數(shù)據(jù)傳輸模式(SDRAM)的參數(shù)化內(nèi)存控制器[4]。MPMC有8個相互獨立的端口,每個端口都可以獨立訪問內(nèi)存,MPMC的仲裁器會按一定的規(guī)則仲裁并決定其先后。同時,MPMC的每個端口均帶有緩存,所以在寫入數(shù)據(jù)時,數(shù)據(jù)是先寫入緩存,等這個端口取得內(nèi)存寫入權(quán)后再從緩存寫入內(nèi)存。數(shù)據(jù)寫入緩存再寫入內(nèi)存的過程對用戶不可見。所以對用戶的邏輯來說,只要將數(shù)據(jù)寫入MPMC的端口即可。

MPMC的每個端口都可配置成可以連接PowerPC處理器、MicroBlaze、CoreConnect和 MPMC NPI結(jié)構(gòu)的個性接口模塊(PIMs)。MPMC共提供 PLB、XCL、SDMA和NPI 4種接口。XCL主要在處理器的Cache從內(nèi)存讀取數(shù)據(jù)時使用;SDMA在外部數(shù)據(jù)要用DMA方式寫入內(nèi)存時使用,其支持SGDMP;PLB接口主要用于處理器通過PLB總線訪問內(nèi)存;NPI接口是讓用戶在設(shè)計中利用MPMC特性的接口。設(shè)計采用控制通道與數(shù)據(jù)通道分開的方式,不共用總線,提高性能。其中,采用PLB接口與處理器進行控制信息和狀態(tài)信息的交換,采用NPI接口訪問內(nèi)存。圖3為在EDK環(huán)境下將MPMC的端口配置出PLB和NPI接口。

圖3 MPMC端口配置

3.2 NPI接口控制器

NPI接口有以下特性:(1)提供一個簡單的內(nèi)存接口以適應(yīng)不同協(xié)議。(2)提供地址線、數(shù)據(jù)線和控制信號來進行內(nèi)存操作。(3)允許同時通過FIFO進行數(shù)據(jù)的讀/寫。(4)可以配置成32位或64位的數(shù)據(jù)寬度以適應(yīng)不同的系統(tǒng)需求[4]。

NPI接口控制器(NPI_CTRL)用于實現(xiàn)NPI接口協(xié)議,數(shù)據(jù)寬度為64位,支持 burst工作模式,一次burst讀或?qū)懽疃嗫梢詡鬏?56 Byte數(shù)據(jù),每次burst后硬件會自動更新地址,得到下一個 burst的起始地址。

發(fā)送數(shù)據(jù)時,NPI接口控制器(NPI_CTRL)根據(jù)命令和配置信息從內(nèi)存中指定的起始地址處讀取指定數(shù)量的數(shù)據(jù)到發(fā)送數(shù)據(jù)緩沖區(qū)(send_data_fifo),然后由GTX發(fā)送到FPGA外;接收數(shù)據(jù)時,GTX接收到的數(shù)據(jù)寫入接收數(shù)據(jù)緩沖區(qū)(received_data_fifo),然后由NPI接口控制器(NPI_CTRL)根據(jù)命令和配置信息將數(shù)據(jù)寫入內(nèi)存中的指定起始地址處。

圖4和圖5分別是MPMC中64位NPI接口128 Byte長度burst讀和寫時序圖[4]。圖中,size表示 burst長度,addr表示起始地址。當(dāng)要進行burst讀操作時,先將size設(shè)為0x04,addr設(shè)為0x80,同時將 addrReq置為有效請求地址仲裁,當(dāng)AddrAck有效時表示地址請求得到允許,約為25個時鐘周期后,RdFIFO_Pop信號會有效表示數(shù)據(jù)已讀出,經(jīng)過1個、2個或3個時鐘周期延遲后,起始地址0x80處的128 Byte數(shù)據(jù)就會依次出現(xiàn)在RdFIFO_Data端口。當(dāng)要進行burst寫操作時,將WrFIFO_Push置為有效,在WrFIFO_Push有效時寫入32 word即128 Byte數(shù)據(jù),WrFIFO_BE為0XFF表示每次寫入的64位數(shù)據(jù)均有效,當(dāng)寫到32 word的最后一個時,給出寫入的起始地址addr和burst長度size,同時將 addrReq置為有效并請求地址仲裁,當(dāng)AddrAck有效時表示地址請求得到允許,隨機MPMC控制器將WrFIFO的數(shù)據(jù)寫入內(nèi)存指定起始地址處,當(dāng)WrFIFO的數(shù)據(jù)全部寫入內(nèi)存時WrFIFO_empty置為有效。

圖5 64位NPI接口burst寫

4 數(shù)據(jù)緩存模塊

由于使用的不是單通道GTX,因此數(shù)據(jù)位寬不匹配。所以無論是從內(nèi)存中取數(shù)據(jù)由GTX發(fā)出或?qū)TX接收到的數(shù)據(jù)寫入內(nèi)存,都需要進行緩存處理。

在接收數(shù)據(jù)時,單一通道GTX的數(shù)據(jù)位寬為16 bit,采用兩通道進行數(shù)據(jù)傳輸,所以共32 bit數(shù)據(jù)。NPI接口采用的數(shù)據(jù)位寬是64 bit,所以需要進行位寬轉(zhuǎn)換。但接收數(shù)據(jù)是被動的,因此兩路GTX接收到的數(shù)據(jù)不一定在時間上同步,可能有先后到達的關(guān)系,因此利用異步FIFO構(gòu)建兩級緩存[5],解決位寬不匹配和時間不同步問題。具體接收數(shù)據(jù)緩存程序結(jié)構(gòu)如圖6所示。

圖6 接收數(shù)據(jù)緩存模塊結(jié)構(gòu)圖

由圖6可看到接收數(shù)據(jù)緩存模塊由3個異步FIFO構(gòu)成。其中First_fifo_1和First_fifo_2為16 bit輸入16 bit輸出,構(gòu)成第一級緩存;Received_data_fifo為32 bit輸入64 bit輸出,為第二級緩存。通過兩級緩存,將兩路GTX接收到的32 bit不同步數(shù)據(jù)轉(zhuǎn)為64 bit同步數(shù)據(jù),再通過NPI接口寫入內(nèi)存。接收數(shù)據(jù)緩存模塊的工作時序通過Chipscope抓取結(jié)果如圖7所示。

圖7 接收數(shù)據(jù)緩存模塊時序圖

圖7中,兩通道GTX發(fā)送的都是遞增碼,F(xiàn)itrst_fifo_1寫入數(shù)據(jù)比First_fifo_2寫入數(shù)據(jù)早2 027個時鐘周期。Received_data_fifo每次同時從Fitrst_fifo_1和Fitrst_fifo_2中讀取固定值數(shù)據(jù),并轉(zhuǎn)為64 bit輸出。通過一級緩存,成功解決了兩路數(shù)據(jù)不同步的問題。通過二級緩存,數(shù)據(jù)轉(zhuǎn)為64 bit進入NPI接口控制模塊(NPI_CTRL),然后寫入MPMC。

在發(fā)送數(shù)據(jù)時,通過NPI接口從內(nèi)存中讀取的數(shù)據(jù)為64 bit,兩路GTX的數(shù)據(jù)位寬為32 bit,所以還是需要進行緩存以完成位寬轉(zhuǎn)換。因為發(fā)送數(shù)據(jù)是主動的,所以不存在發(fā)送不同步的問題,因此只需利用異步FIFO構(gòu)建一級緩存即可。具體發(fā)送數(shù)據(jù)緩存程序結(jié)構(gòu)如圖8所示。發(fā)送數(shù)據(jù)緩存模塊工作時序由Chipscope抓取得到,如圖9所示。

圖8 發(fā)送數(shù)據(jù)模塊結(jié)構(gòu)圖

圖9 發(fā)送數(shù)據(jù)緩存模塊時序圖

如圖9所示,Send_data_fifo將從NPI接口接收到的64 bit數(shù)據(jù)轉(zhuǎn)換為32 bit,并傳輸給兩路GTX的發(fā)送端 tile0_txdata0_i和 tile0_txdata1_i。

5 嵌入式用戶IP核的封裝

以上完成的各模塊工作都只在ISE環(huán)境下完成邏輯開發(fā),還并不能在EDK環(huán)境下直接作為嵌入式IP核使用,因此需要進行EDK用戶IP核的封裝。EDK為設(shè)計人員提供了自動化設(shè)計向?qū)?Base System Builder,BSB),可以指引工程師快速完成設(shè)計過程[1]。通過此向?qū)?,建立基于PowerPC的簡單嵌入式系統(tǒng)。其System Assembly View圖,系統(tǒng)結(jié)構(gòu)圖分別如圖10和圖11所示。

圖10 System Assembly View圖

圖11 系統(tǒng)結(jié)構(gòu)圖

用戶IP核通過PLB總線連接在PowerPC處理器上。PLB總線[6]是一種高帶寬、低延遲、高性能的處理器總線,用于連接高性能CPU、高速存儲器控制器、仲裁器、高速的DMA控制器等高性能、大帶寬的片上設(shè)備。由于PLB總線協(xié)議信號多,較復(fù)雜,為使用戶更方便地使用、加快開發(fā)進度,Xilinx公司為用戶開發(fā)了添加用戶IP核向?qū)IP(Create and Import Peripheral Wizard),添加用戶自定義IP核[7]。該向?qū)ё詣由蒔LB總線與用戶邏輯之間的接口,即IPIF(IPInterface)。利用IPIF解決PLB總線接口和用戶邏輯接口之間的轉(zhuǎn)換。在用戶邏輯看來,PLB接口表現(xiàn)為簡單的IPIC(IP Inter Connect)接口。用戶使用該向?qū)н€可根據(jù)需要選擇相應(yīng)的模塊和功能[8]。設(shè)計中PLB總線只用于傳遞少量的參數(shù)和狀態(tài)信息,因此,PLB模塊配制成了從設(shè)備。核心模塊SLAVE Attachment提供了PLB從設(shè)備的基本功能,它在PLB總線和IPIC之間執(zhí)行協(xié)議和時序的轉(zhuǎn)換,PLB模塊的結(jié)構(gòu)如圖12所示。

圖12 PLBV46_SLAVE_SINGLE結(jié)構(gòu)圖

PLB模塊中的User_logic為在ISE環(huán)境下開發(fā)的邏輯,組成如圖13所示。將RocketIO模塊,數(shù)據(jù)緩存模塊,NPI接口(NPI_CTRL)控制模塊做正確連接,用IPIC和IPIF連接起來,成為嵌入式IP核的邏輯。

圖13 用戶邏輯結(jié)構(gòu)圖

使用CIP生成的用戶自定義IP核保存在EDK工程目錄的pcore文件夾,用戶IP核目錄如圖14所示。

圖14 用戶IP核目錄結(jié)構(gòu)圖

文件夾hdl用于存放用戶IP的HDL代碼,即.v或.vhd文件。設(shè)計使用VHDL語言[9],所以各模塊的HDL代碼文件都保存在vhdl文件夾下。文件夾netlist用于保存設(shè)計所用到的網(wǎng)表文件。本設(shè)計使用了ISE工具的IP核,RocketIO、FIFO、icon及 ila,其網(wǎng)表文件都保存在netlist文件夾下。文件夾data用于存放用戶IP的配置文件[1]。MPD文件為微處理器外設(shè)規(guī)范(Microprocessor Peripheral Definition),定義了外設(shè)接口。在MPD文件中列出了總線接口端口和默認(rèn)連接,列出了參數(shù)和默認(rèn)值。PAO文件為外設(shè)分析命令文件(Peripheral Analyze Order),包含了hdl文件的列表,是綜合和定義分析命令所需的。BBD文件黑盒定義(Black Box Definition)文件,管理被優(yōu)化的硬件網(wǎng)標(biāo)的文件位置,用于所設(shè)計外設(shè)的黑盒部分。運行PowerPC簡單系統(tǒng)工程,接收FPGA外部數(shù)據(jù),通過串口打印讀出寫進DDR2中的數(shù)據(jù)。由圖15可以看到,遞增碼未出現(xiàn)錯位與不同步問題,表明所設(shè)計達到了要求。

圖15 串口打印從DDR2讀出數(shù)據(jù)

6 結(jié)束語

介紹了一種用ISE邏輯開發(fā)工具中的IP核來構(gòu)建嵌入式開發(fā)平臺EDK中,用戶自定義IP核的方法,并且本設(shè)計完成了高速數(shù)據(jù)收發(fā)通信的功能。此外,設(shè)計采用兩路GTX,可通過增加GTX通道數(shù),或者配置GTX為更高帶寬,以增加系統(tǒng)帶寬,具有良好的擴展性。設(shè)計在連接PowerPC處理器的系統(tǒng)下完成[10],只要采用PLB總線,此自定義IP可以直接移植到MicroBlaze處理器系統(tǒng)中,具有良好的移植性。

[1]何賓.片上可編程系統(tǒng)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2010.

[2]Xilinx.Virtex-5 FPGA GTX transceiver user guide[M].USA:Xilinx Conpration,2009.

[3]Xilinx.Virtex -5 FPGA RocketIOGTX transceiver wizard v1.5 getting started guide[M].USA:Xilinx Conpration,2008.

[4]Xilinx.Multi- port memory controller(MPMC)(v.4.03.a)[M].USA:Xilinx Conpration,2008.

[5]Xilinx.FIFO generator v4.4 user guide[M].USA:Xilinx Conpration,2008.

[6]Xilinx.PLB usage in Xilinx FPGAs[M].USA:Xilinx Conpration,2005.

[7]葉肇晉,張稀楠,馬磊.基與Xilinx FPGA片上嵌入式用戶IP核開發(fā)[M].西安:西安電子科技大學(xué)出版社,2008.

[8]Xilinx.PLBV46 slave single(v1.01a)[M].USA:Xilinx Conpration,2008.

[9]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].西安:西安電子科技大學(xué)出版社,1998.

[10]趙峰,馬迪銘,孫煒,等.FPGA上的嵌入式系統(tǒng)設(shè)計實例[M].西安:西安電子科技大學(xué)出版社,2008.

猜你喜歡
接收數(shù)據(jù)發(fā)送數(shù)據(jù)內(nèi)存
移動自組網(wǎng)中MAC層協(xié)議研究
沖激噪聲背景下基于幅度預(yù)處理的測向新方法*
“春夏秋冬”的內(nèi)存
低復(fù)雜度多輸入多輸出雷達目標(biāo)角度估計方法
基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點性能分析
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
使用IPSec安全傳輸數(shù)據(jù)
單片機模擬串口數(shù)據(jù)接收程序的實現(xiàn)及優(yōu)化
基于內(nèi)存的地理信息訪問技術(shù)
基于PCMCIA的ARINC429通信卡設(shè)計
微處理機(2010年3期)2010-06-13 11:32:54
盐津县| 武城县| 潞西市| 宜州市| 威远县| 民县| 武清区| 汕尾市| 青冈县| 永福县| 新平| 桦川县| 金寨县| 琼结县| 霍州市| 西华县| 太康县| 西昌市| 渭南市| 阳春市| 黄山市| 肥东县| 建昌县| 南投市| 望谟县| 克什克腾旗| 丰县| 新宾| 汶上县| 台东市| 广水市| 五家渠市| 丹棱县| 广宗县| 仙游县| 肇庆市| 广西| 吉林省| 大城县| 东丽区| 新昌县|