隨著通信技術(shù)的發(fā)展,千兆以太網(wǎng)因在傳輸中具備高帶寬和高速率的特點(diǎn),成為高速傳輸設(shè)備的首選?;赬ilinx FPGA的嵌入式系統(tǒng)設(shè)計(jì)整合了一系列的知識(shí)產(chǎn)權(quán)(IP)核使其功能強(qiáng)大,從而使得利用FPGA進(jìn)行嵌入式串行千兆以太網(wǎng)開發(fā)成為可能。
本設(shè)計(jì)使用Xilinx公司65 nm工藝級別的Virtex5 FXT系列芯片,滿足嵌入式系統(tǒng)設(shè)計(jì)所應(yīng)具備的高性能、高密度、低功耗和低成本的要求。V5 Hard TEMAC模塊提供了專用的以太網(wǎng)功能,并通過FPGA內(nèi)部高速串行收發(fā)器GTX和Marvell公司的88E1111物理層接口芯片相連,完成串行千兆以太網(wǎng)的接口功能。物理層接口芯片支持MII、GMII、RGMII 和SGMII四種以太網(wǎng)接口模式。相對GMII接口而言,SGMII接口的I/O端口數(shù)目少,便于PCB布線,并且數(shù)據(jù)信號(hào)以差分對的形式出現(xiàn),有利于保證信號(hào)完整性[1]。
本文將FPGA內(nèi)嵌PowerPC硬核處理器、Xilinx精簡嵌入式操作系統(tǒng)Xilkernel,以及相應(yīng)的外設(shè)IP Core相結(jié)合,完成嵌入式串行千兆以太網(wǎng)的設(shè)計(jì)。
1 總體設(shè)計(jì)
系統(tǒng)硬件平臺(tái)中選用Xilinx公司的Virtex5 FX70t作為主控芯片,它集成了PowerPC440處理器模塊和高速RocketIO GTX收發(fā)器。
外部存儲(chǔ)器采用Micron公司的128M×16位DDR SDRAM芯片MT47H128M16HG 31T,為程序運(yùn)行提供空間。
在網(wǎng)絡(luò)芯片方面有兩種方案可供選擇,即單物理層芯片方案和物理層加MAC層集成于同一芯片方案[2]?;谝子诳刂品矫娴目紤],采用Marvell公司的88E1111單物理層接口芯片作為解決方案,該芯片支持10BASET、100BASETX和1000BASET以太網(wǎng)協(xié)議。本系統(tǒng)硬件由Virtex5 FX70t芯片、88E1111 PHY芯片、DDRII芯片、8個(gè)撥碼開關(guān)(8DIPS)、8個(gè)LED燈和RJ45接口構(gòu)成,其連接框圖如圖1所示。
?
圖1 系統(tǒng)硬件連接框圖
串行千兆以太網(wǎng)設(shè)計(jì)中,需使用FPGA內(nèi)部RocketIO GTX收發(fā)器完成SGMII鏈路的建立。RocketIO GTX是集成在Virtex5 FX70t芯片中靈活的、功能可配置的千兆位級串行收發(fā)器,支持750 Mbps~6.5 Gbps的數(shù)據(jù)傳輸速率,滿足千兆以太網(wǎng)系統(tǒng)設(shè)計(jì)中數(shù)據(jù)傳輸速率的要求。本設(shè)計(jì)通過在FPGA中例化EMAC硬核,并將相應(yīng)的FPGA端口和外部PHY芯片88E1111相連完成SGMII鏈路的建立。SGMII接口使用全雙工模式,有收發(fā)兩個(gè)獨(dú)立的通道,每個(gè)通道使用一對差分信號(hào)線,采用無時(shí)鐘信號(hào)模式,RocketIO GTX收發(fā)器從串行數(shù)據(jù)中恢復(fù)時(shí)鐘用于差分?jǐn)?shù)據(jù)的發(fā)送與接收。
SGMII接口實(shí)現(xiàn)框圖如圖2所示。
圖2 SGMII接口實(shí)現(xiàn)框圖
本系統(tǒng)基于Xilinx公司嵌入式系統(tǒng)開發(fā)工具EDK12.3完成軟硬件協(xié)同設(shè)計(jì)。EDK12.3由XPS (Xilinx Platform Studio)、SDK(Software Development Kit)等組成。設(shè)計(jì)時(shí)需在XPS環(huán)境下添加所需的IP核,生成硬件系統(tǒng)框架,并添加相應(yīng)的引腳約束和時(shí)序約束,然后調(diào)用Platgen生成嵌入式系統(tǒng)硬件部分的網(wǎng)表(.NGC)文件和比特(.bit)文件,并通過軟件描述文件(.MSS文件)來設(shè)置系統(tǒng)軟件配置;接著將硬件設(shè)計(jì)導(dǎo)入到SDK中,并在SDK中生成各個(gè)外設(shè)的驅(qū)動(dòng)層和庫,設(shè)置相應(yīng)軟件的操作系統(tǒng)、庫、外設(shè)驅(qū)動(dòng)的屬性,添加應(yīng)用軟件項(xiàng)目并編寫應(yīng)用軟件;最后,調(diào)用處理器對應(yīng)的編譯器編譯軟件并和硬件可執(zhí)行文件合成后,生成最終的二進(jìn)制比特文件,下載到目標(biāo)板進(jìn)行系統(tǒng)調(diào)試[3]。
2 PowerPC的硬件設(shè)計(jì)
設(shè)計(jì)中采用的FPGA內(nèi)嵌硬核處理器PowerPC440屬于32位精簡指令集嵌入式處理器,它采用擴(kuò)展型BookE結(jié)構(gòu),其內(nèi)部包括一個(gè)高性能、可雙指令處理并有七級流水線的微內(nèi)核。同時(shí),具有靈活的存儲(chǔ)器管理單元(MMU)、3個(gè)相互獨(dú)立的128位PLB總線接口、4個(gè)直接存儲(chǔ)器存儲(chǔ)(DMA)控制單元,以及設(shè)備控制寄存器(DCR) 等[4]。它集成了32 KB指令和32 KB數(shù)據(jù)緩存,在550 MHz時(shí)鐘頻率下可提供高達(dá)1 100 DMIPS的性能。在本設(shè)計(jì)中,PowerPC440通過PLB總線與外設(shè)端口相連,其硬件架構(gòu)如圖3所示。
?
圖3 嵌入式系統(tǒng)硬件架構(gòu)
系統(tǒng)硬件平臺(tái)的搭建(包括PowerPC處理器功能配置、系統(tǒng)總線結(jié)構(gòu)以及相應(yīng)的地址映射)均在EDK集成開發(fā)環(huán)境XPS中完成。
設(shè)計(jì)中采用片內(nèi)高速數(shù)據(jù)總線PLB連接各種控制IP核,PowerPC440通過PLB總線完成對內(nèi)部IP核以及外設(shè)的訪問和控制功能。其中,外部PHY芯片通過與在FPGA內(nèi)部例化EMAC核(Ethernet MAC)相連,掛載在PLB總線上,完成SGMII鏈路的建立;DDR II芯片通過IP核多端口存儲(chǔ)控制器(Multiport Memory Controller,MPMC)掛載在PLB總線上,實(shí)現(xiàn)外部存儲(chǔ)功能;串口通過串口控制器IP核(Xps_uartlite)與PLB總線相連,用于打印輸出調(diào)試狀態(tài)信息;8個(gè)撥碼開關(guān)DIP和LED燈分別通過GPIO口與PLB總線相連,實(shí)現(xiàn)簡單的控制與狀態(tài)顯示功能。
硬件結(jié)構(gòu)如圖4所示。
圖4 PowerPC硬件結(jié)構(gòu)圖
本系統(tǒng)使用時(shí)鐘生成器IP核生成系統(tǒng)各模塊工作時(shí)所需時(shí)鐘。該IP核模塊的輸入時(shí)鐘為FPGA全局時(shí)鐘引腳輸入的100 MHz時(shí)鐘,經(jīng)過相應(yīng)的倍頻,生成400 MHz的PowerPC440工作時(shí)鐘,生成200 MHz的DDR II工作時(shí)鐘以及125 MHz的Ethernet MAC工作時(shí)鐘。
在各模塊添加及連接結(jié)束后,需添加UCF約束文件,包括FPGA引腳約束和相應(yīng)的時(shí)序約束等,并對XPS自動(dòng)生成的微處理器硬件規(guī)范MHS文件進(jìn)行相應(yīng)的修改,對系統(tǒng)進(jìn)行適當(dāng)?shù)膬?yōu)化。生成的系統(tǒng)在綜合、布局、布線無誤后生成最終的.bit文件,準(zhǔn)備下載到電路板上。
3 嵌入式系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件部分需實(shí)現(xiàn)TCP/IP網(wǎng)絡(luò)協(xié)議,TCP/IP協(xié)議模型包括應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層[5]。網(wǎng)絡(luò)接口層分為PHY層和MAC層兩部分。其中,PHY層由外部PHY芯片88E1111實(shí)現(xiàn),MAC層由Xilinx公司的Hard Ethernet MAC IP核實(shí)現(xiàn),并作為整個(gè)PowerPC系統(tǒng)硬件的一部分在FPGA的內(nèi)部實(shí)現(xiàn)。
網(wǎng)絡(luò)層和傳輸層主要采用LwIP協(xié)議模塊編寫相應(yīng)的軟件代碼。LwIP同時(shí)支持服務(wù)器模式和客戶端模式,提供RAW和Socket兩種API。它的特點(diǎn)是在保持TCP/IP協(xié)議主要功能的情況下,減少對RAW的使用,使得LwIP在各類高檔嵌入式系統(tǒng)開發(fā)中得到廣泛的應(yīng)用。本設(shè)計(jì)選擇Xilinx公司的精簡嵌入式操作系統(tǒng)Xilkernel,用于更好地管理系統(tǒng)資源。
Xilkernel能與EDK形成的硬件系統(tǒng)緊密結(jié)合,是一種可定制的簡單高效系統(tǒng)。Xilkernel系統(tǒng)的配置可以在開發(fā)環(huán)境SDK中進(jìn)行手動(dòng)設(shè)置。本設(shè)計(jì)中運(yùn)用LwIP協(xié)議模塊編寫運(yùn)行在Xilkernel操作系統(tǒng)上的應(yīng)用軟件,實(shí)現(xiàn)了Web Server(網(wǎng)頁服務(wù))、FTP(File Transfer Protocl)、Telnet遠(yuǎn)程登錄服務(wù)、iperf應(yīng)用等功能。下面以網(wǎng)頁服務(wù)程序、iperf服務(wù)器和客戶端程序?yàn)槔龑浖O(shè)計(jì)流程進(jìn)行說明。
具體流程描述如下:
① 在Xilkernel系統(tǒng)的靜態(tài)啟動(dòng)線程main_thread()中,初始化網(wǎng)絡(luò)協(xié)議和文件系統(tǒng)。
② 調(diào)用線程生成函數(shù)sys_thread_new()生成并啟動(dòng)線程1。
③ 在線程1中設(shè)置電路板硬件的MAC地址、網(wǎng)關(guān)、IP地址和子網(wǎng)掩碼等參數(shù),并初始化網(wǎng)絡(luò)接口。具體設(shè)置方式如下:MAC地址為00:0a:35:00:01:02;IP4地址為192.168.1.10;IP4地址掩碼為255.255.255.0;IP4地址網(wǎng)關(guān)為192.168.1.1。
④ 初始化一個(gè)Socket,將它與IP地址和端口號(hào)綁定,然后開始監(jiān)聽網(wǎng)絡(luò),一旦監(jiān)聽到網(wǎng)絡(luò)請求,再由函數(shù)sys_thread_new()生成一個(gè)線程2去響應(yīng),用于緩存接收到的數(shù)據(jù)包。然后,通過函數(shù)launch_app_threads()判斷監(jiān)聽到的網(wǎng)絡(luò)請求屬于哪種類型,并由函數(shù)sys_thread_new()生成相應(yīng)的線程3去處理。
如果是網(wǎng)絡(luò)服務(wù)請求,則將網(wǎng)頁文件輸出到PC機(jī)上,并接收PC機(jī)傳輸?shù)目刂茢?shù)據(jù)信息,其程序流程如圖5所示。如果是iperf應(yīng)用請求,則發(fā)送或接收相應(yīng)的數(shù)據(jù)完成對請求的響應(yīng)。
?
圖5 網(wǎng)頁服務(wù)程序流程
網(wǎng)頁服務(wù)程序運(yùn)行前需在FPGA外部的DDR中建立文件系統(tǒng),將用于控制的相關(guān)網(wǎng)頁文件保存在該文件系統(tǒng)中。系統(tǒng)在運(yùn)行時(shí),訪問預(yù)設(shè)的IP地址,會(huì)將相關(guān)網(wǎng)頁文件傳輸?shù)竭h(yuǎn)端控制電腦上,并通過網(wǎng)頁中的超鏈接命令腳本將預(yù)設(shè)的控制信息傳送給PowerPC處理器,用以控制電路板上的LED燈亮滅,或者讀取電路板上撥碼開關(guān)的狀態(tài)值并在服務(wù)器首頁上顯示。
本設(shè)計(jì)中采用iperf網(wǎng)絡(luò)測試軟件對其性能進(jìn)行測試。采用9 000字節(jié)巨幀可以實(shí)現(xiàn)高達(dá)490 Mbps的傳輸速率。
結(jié)語
本文成功使用Virtex5 FX70t芯片實(shí)現(xiàn)串行千兆以太網(wǎng)系統(tǒng),并通過網(wǎng)頁服務(wù)程序?qū)ζ涔δ芗右则?yàn)證。本系統(tǒng)在硬件電路設(shè)計(jì)階段具有I/O端口數(shù)目少、便于PCB布線,以及信號(hào)完整性容易保證等優(yōu)點(diǎn)。通過iperf網(wǎng)絡(luò)測試軟件對其傳輸速率進(jìn)行測試,其結(jié)果達(dá)到高速數(shù)據(jù)傳輸?shù)囊蟆?/p>
參考文獻(xiàn)
[1] Xilinx.Virtex5 FPGA Embedded TriMode Ethernet MAC User Guide. [EB/OL].[20120711]. ~cs150/sp10/Project/Checkpoint2/ ug194.pdf.
[2] 高一沅,黃春暉.基于MicroBlaze的以太網(wǎng)通信系統(tǒng)平臺(tái)設(shè)計(jì)的研究[J].現(xiàn)代電子技術(shù),2007(17):2931.
[3] 王長清,陳棟.基于FPGA的千兆以太網(wǎng)通信板的設(shè)計(jì)與實(shí)現(xiàn)[J].河南師范大學(xué)學(xué)報(bào):自然科學(xué)版,2011,39(1):8689.
[4] 宋曉翠,張晉寧.基于PowerPC440的嵌入式系統(tǒng)設(shè)計(jì)與研究[J].新特器件應(yīng)用,2009,11(7):1921.
[5] 徐欣,于紅旗,易凡,等. 基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2005.
評論