摘要:針對CPCI 架構(gòu)通用信號處理平臺上利用系統(tǒng)自身以太網(wǎng)絡(luò)接口實現(xiàn)數(shù)據(jù)傳輸效率低、擴展性差等問題, 提出一種采用高速Link 口基于FPGA 上硬核Pow erPC405 的嵌入式千兆以太網(wǎng)通信實現(xiàn)方案, 詳細(xì)說明了以太網(wǎng)通信板卡的硬件和邏輯的實現(xiàn), 并分析了TCP/ IP 性能最大化的技術(shù)。
傳統(tǒng)基于CPCI 架構(gòu)通用信號處理平臺, 由于其并行CPCI 總線物理傳輸速率的限制, 加上存在以太網(wǎng)協(xié)議系統(tǒng)消耗, 造成通過主板網(wǎng)絡(luò)接口數(shù)據(jù)傳輸效率很低, 遠(yuǎn)遠(yuǎn)不能滿足雷達(dá)、聲納等復(fù)雜系統(tǒng)對網(wǎng)絡(luò)通訊帶寬的需求。
采用新型高性能FPGA 芯片, 利用高速Link 口4GByte/ s 傳輸帶寬, 開發(fā)新的千兆以太網(wǎng)通信板, 實現(xiàn)以太網(wǎng)和高速Link 口數(shù)據(jù)的交互, 解決通用CPCI 架構(gòu)信號處理平臺之間數(shù)據(jù)傳輸?shù)腎O 瓶頸問題. 千兆以太網(wǎng)通信板是滿足CPCI 規(guī)范的一個功能模塊, 可以靈活的應(yīng)用到模擬器、信號處理和數(shù)據(jù)采集等實際CPCI 架構(gòu)系統(tǒng)中, 從而滿足武器裝備系統(tǒng)網(wǎng)絡(luò)化、通用化、一體化、模塊化的要求。
1 基于FPGA 的千兆以太網(wǎng)通信板的系統(tǒng)應(yīng)用
基于FPGA 的千兆以太網(wǎng)通信板在CPCI 架構(gòu)通用信號處理平臺上實現(xiàn)聲納模擬系統(tǒng)應(yīng)用時實現(xiàn)框圖如下圖1 示, 模擬的聲納信號需要通過以太網(wǎng)傳送給Linux 集群計算機。
?
在基于FPGA 的千兆以太網(wǎng)通信卡的信號處理平臺上, DSP 板、A/ D 板、D/ A 板和千兆以太網(wǎng)通信板之間的高速、大容量數(shù)據(jù)交換是通過高速Link 口來實現(xiàn)的. 系統(tǒng)間的數(shù)據(jù)交互是通過千兆以太網(wǎng)實現(xiàn)的, 利用高速Link 口, 通過千兆以太網(wǎng)數(shù)據(jù)通信板,實現(xiàn)系統(tǒng)高速Link 口和千兆以太網(wǎng)的無縫銜接, 從而能夠解決CPCI 總線帶寬問題, 實現(xiàn)數(shù)據(jù)的和Linux 集群機等其他應(yīng)用系統(tǒng)的共享和交互. CPCI 總線( 32 bit x 33 Mhz)主要用于實現(xiàn)系統(tǒng)主板和功能板卡( DSP板、A/ D 板、D/ A 板或千兆以太網(wǎng)通信板) ,以及功能板卡間數(shù)據(jù)互連, 完成系統(tǒng)控制、配置和低速數(shù)據(jù)傳輸?shù)裙δ堋?/p>
在CPCI 架構(gòu)通用信號處理平臺和Linux 集群計算機之間實現(xiàn)高速網(wǎng)絡(luò)數(shù)據(jù)交互的實現(xiàn)主要工作是開發(fā)Link 鏈路口到以太網(wǎng)通信的CPCI 架構(gòu)板卡。
2 基于FPGA 的千兆以太網(wǎng)通訊板卡的開發(fā)
本設(shè)計采用了基于Pow erPC405 處理器的SOPC 解決方案, 實現(xiàn)了基于FPGA 的高速嵌入式通信系統(tǒng)板卡, 數(shù)據(jù)通過千兆以太網(wǎng)實現(xiàn)系統(tǒng)間互連與共享, 主要介紹硬件和邏輯開發(fā)方面工作。
2. 1 通訊板硬件開發(fā)
設(shè)計的千兆以太網(wǎng)通信板卡符合CPCI 架構(gòu)U6 板卡標(biāo)準(zhǔn), 是基于Xilinx XC4VFX20 系列FPGA, 內(nèi)部集成了PowerPC405 處理器, 1 000 M 以太網(wǎng)MAC 模塊, 運行頻率高達(dá)300 MHz。
FPGA 實現(xiàn)Link 鏈路口數(shù)據(jù)到以太網(wǎng)MAC 層數(shù)據(jù)的轉(zhuǎn)換. PCI 接口芯片本地總線的接口邏輯, 系統(tǒng)控制等功能. PLX9056 實現(xiàn)了CPCI 接口邏輯. 在板上擴展了兩片MICRON 公司的256 Mb DDR 內(nèi)存, 作為上電時操作系統(tǒng)的加載和運行空間. 采用Marvell 公司的千兆以太網(wǎng)PHY 芯片88 E1111 和帶隔離器的RJ45 接口, 加上FPGA 中的MAC IP 核實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的傳輸功能. Plat form Flash 用于存儲FPGA 配置文件和系統(tǒng)文件. 本設(shè)計擴展了1 個RS422 串行接口用于嵌入式軟件的調(diào)試. 整個系統(tǒng)的硬件功能原理結(jié)構(gòu)框圖如圖2 所示。
?
在進行電路設(shè)計時, 要特別注意作為電路核心器件FPGA 各個引腳的連接. 重要快速的時鐘信號必須接到全局時鐘引腳上; 和DDR、PHY 芯片連接引腳所在的BANK 需要提供電壓參考要考慮DDR、PHY 芯片的工作電壓; DDR 布線時, 數(shù)據(jù)和地址線要等長走線, 數(shù)據(jù)線之間誤差控制在10 Mil 內(nèi), 地址線誤差要控制在20 Mil 以內(nèi), 時鐘也需要走差分等長線, 長度應(yīng)大于地址線。
2. 2 FPGA 中邏輯開發(fā)
開發(fā)采用Xilinx 公司的EDK10. 1 和ISE10. 1 工具軟件, EDK 稱為嵌入式開發(fā)工具包, 由XPS( Xilinx Plat form Studio) , SDK( Softw are development Kit ) , Creat-Import peripheral 和Bash shell 組成. 開發(fā)者可以調(diào)用上述所有工具, 來完成整個的嵌入式系統(tǒng)開發(fā). 在XPS 環(huán)境下添加所需的IP 核, 生成硬件系統(tǒng)框架;調(diào)用Platg en 生成嵌入式處理系統(tǒng)的網(wǎng)表文件( . NGC 文件) , 通過軟件描述文件( . MSS 文件) 來設(shè)置系統(tǒng)軟件配置, 并調(diào)用Libgen 生成驅(qū)動層和庫; 在XPS 工程中添加應(yīng)用軟件項目并編寫應(yīng)用軟件, 把EDK 中編寫好的工程作為一個模塊, 加入到ISE 工程中, 然后統(tǒng)一編譯, 然后調(diào)用處理器對應(yīng)的編譯器編譯并和硬件綜合后生成的. bit 文件合成后下載到目標(biāo)板便可以進行調(diào)試了。
基于FPGA 的嵌入式千兆以太網(wǎng)的通訊功能實現(xiàn)邏輯如下圖3 所示。 FPGA 中邏輯開發(fā)參考Xilinx 公司的GSRD 參考設(shè)計方案。 Virtex4 FPGA 芯片中嵌入了PowerPC405 處理器是針對嵌入式處理器開發(fā)應(yīng)用推出的一種32 位嵌入式處理器內(nèi)核, 它是一種硬核結(jié)構(gòu), 提供了相應(yīng)的總線架構(gòu), 豐富的IP 核資源, 以及方便、高效的設(shè)計開發(fā)工具, 簡單但靈活性強, 在目標(biāo)器件中可以任意配置. 多端口存儲器控制器( MPMC)有效分配了Pow erPC 指令/ 數(shù)據(jù)PLB 接口與一個通信用直接存儲器訪問控制器( CDMA C) 間的可用存儲器帶寬. CDMA C 通過Xilinx 標(biāo)準(zhǔn)Local Link 流線接口提供兩個連接到外設(shè)的DMA 雙向通道( 以太網(wǎng)接口數(shù)據(jù)通路和LINK 鏈路口通路)。 CDMAC 實現(xiàn)了數(shù)據(jù)重排, 用于支持存儲器中的分組緩沖器的強制排列. Local Link 千兆位級以太網(wǎng)MAC( LLGMAC) 外設(shè)整合了經(jīng)過U NH 測試的Xilinx LogiCORE 1-Gigabit 以太網(wǎng)MAC, 可以提供1 Gbps 1 000-BASE-X 以太網(wǎng)接口. LLGMAC 實現(xiàn)了發(fā)射通路和接收通路上的校驗和卸載功能, 從而實現(xiàn)了最優(yōu)的TCP 性能. 使用的是UartLite 模塊, 設(shè)置需要的波特率和校驗類型, 來實現(xiàn)異步收發(fā)器功能。
3 性能優(yōu)化
硬件確定好后, TCP/ IP 協(xié)議的系統(tǒng)消耗成為提高系統(tǒng)網(wǎng)絡(luò)帶寬的主要因素. 下面從單位字節(jié)、單位包的處理成本和系統(tǒng)架構(gòu)三方面討論實現(xiàn)千兆位以太網(wǎng)TCP/ IP 性能最大化的技術(shù)。
3. 1 TCP/ IP 單位字節(jié)處理成本
產(chǎn)生單位字節(jié)處理成本的兩個最常見的操作是緩沖區(qū)復(fù)制和TCP 校驗和計算. 可以引入零復(fù)制軟件API 函數(shù), 并將校驗和計算利用FPGA 邏輯結(jié)構(gòu)實現(xiàn), 將有助于減少單位字節(jié)處理成本. Linux 和其他操作系統(tǒng)提供了類似的零復(fù)制特性, 已經(jīng)引入了用于此目的的軟件接口, 這些軟件特性允許消除用戶應(yīng)用程序與TCP/ IP ?;虿僮飨到y(tǒng)之間的緩沖區(qū)復(fù)制。
校驗和卸載是以太網(wǎng)外設(shè)的一種特性. 它允許當(dāng)以太網(wǎng)幀在主存儲器與外設(shè)的硬件FIFO 之間傳輸時,在FPGA 結(jié)構(gòu)中進行TCP 有效載荷的校驗. 這些系統(tǒng)特性消除了代價較高的緩沖區(qū)復(fù)制與處理器校驗和操作, 讓處理器專心執(zhí)行協(xié)議操作和用戶功能. 可以在下面的實驗數(shù)據(jù)中得到驗證。
3. 2 TCP/ IP 單位包處理成本
包中斷、硬件接口和頭處理等數(shù)據(jù)發(fā)送與接收操作構(gòu)成單位包處理成本, 特別是在傳輸小包時, 中斷處理成本對處理器和存儲器子系統(tǒng)構(gòu)成相當(dāng)大的負(fù)擔(dān). 利用NAPI 結(jié)合巨幀傳輸技術(shù)用來減少中斷處理成本。
3. 3 系統(tǒng)架構(gòu)
存儲器帶寬對高性能網(wǎng)絡(luò)連接應(yīng)用來說是一個重要考慮事項. 利用了多端口DDR SDRAM 存儲器控制器, 在PowerPC 處理器本地總線( PLB) 接口與兩個數(shù)據(jù)端口間分配存儲器帶寬. 每個數(shù)據(jù)端口連接到一個直接存儲器訪問( DMA) 控制器, 從而允許硬件外設(shè)對存儲器進行高帶寬訪問。
系統(tǒng)的分散-收集與校驗和卸載特性為零復(fù)制功能提供了所需的硬件支持. 分散-收集特性是DMA 控制器的一種靈活性, 它允許軟件緩沖區(qū)位于任意字節(jié)偏移處. 這避免了處理器復(fù)制未對齊或碎片化的緩沖區(qū)。
對于需要使用嵌入式操作系統(tǒng)的應(yīng)用, 可提供MontaVista Linux 端口和來自T reck 的商業(yè)獨立TCP/IP 棧, 以滿足具有最高帶寬要求的應(yīng)用。
4 性能測試
測試環(huán)境:
系統(tǒng)板卡: PPC405 Clock-300 MHz
MPMC/ DDR Clock-300 MHz
PLBv46 Clock-100 MHz
XPS_LL_T EMA C Clock-300 MHz
測試主機: Pentium( R) Clock-1 600 MHz
內(nèi)存768MB
千兆以太網(wǎng)卡
Windows xp SP3
iPerf 網(wǎng)絡(luò)測試軟件
從測試的結(jié)果看, 利用經(jīng)零復(fù)制, 校驗和卸載優(yōu)化過的Treck 公司的TCP/ IP 協(xié)議棧, 采用9000 Byte 巨幀可以實現(xiàn)高達(dá)641 Mbps 的傳輸速率。
5 結(jié) 論
通過開發(fā)的基于FPGA 的Link 口到以太網(wǎng)的通信板, 利用優(yōu)化后的TCP/ IP 協(xié)議棧, 解決了原來CPCI架構(gòu)信號處理平臺上利用PCI 總線進行數(shù)據(jù)分發(fā)和轉(zhuǎn)存的IO 瓶頸問題. 基于FPGA 的Link 鏈路到以太網(wǎng)的通信板已經(jīng)成功應(yīng)用于某型聲納信號模擬器上, 并且作為一個通用以太網(wǎng)數(shù)據(jù)分發(fā)模塊可以應(yīng)用于CPCI架構(gòu)雷達(dá)、聲納信號處理和數(shù)據(jù)采集等系統(tǒng)應(yīng)用領(lǐng)域。
評論