基于千兆以太網的高速數據傳輸系統(tǒng)設計
摘要:介紹了千兆以太網接口以及TCP/IP協(xié)議,提出了幾種設計方案,講述了一種使用FPGA和MAC軟核建立千兆以太網的方法。實驗證明,這種方法穩(wěn)定性好、傳輸帶寬高、額外成本低,適用于大多數高速數據傳輸系統(tǒng),是一種成本低、性能優(yōu)越、可靠性高的高速數據傳輸系統(tǒng)設計方案。
關鍵詞:千兆以太網;高速數據傳輸;FPGA
隨著電子技術的發(fā)展,高速數據傳輸在現代電子系統(tǒng)中起著重要的作用。普通計算機的接口有USB接口、以太網接口,串口等。在速度方面,以太網接口和USB接口速度相對較高,而串口傳輸速度較慢,難以實現高速數據傳輸。其中USB2.0最高傳輸速度為480 Mb/s,快速以太網為100 Mb/s,千兆以太網為1 000 Mb/s。此外,光纖接口和PCIe接口傳輸速度也較高,但難以與普通計算機互連。因此千兆以太網技術是電路系統(tǒng)與計算機進行高速數據傳輸的必然趨勢。千兆以太網兼容原以太網標準所規(guī)定的全部技術規(guī)范,包括CSMA/CD協(xié)議,全雙工以及流量控制協(xié)議等。
1 TCP/IP協(xié)議分析
目前網絡協(xié)議使用的是TCP/IP協(xié)議,TCP/IP體系將網絡分為應用層、運輸層、網絡層以及數據鏈路層,如圖1所示,每一層分別負責不同的通信功能。
[!--empirenews.page--]
TCP/IP協(xié)議是一個協(xié)議族,集成有數據傳輸、流量控制、校驗、糾錯以及管理等多種功能。要通過網絡接口實現數據傳輸,沒有必要實現完整的TCP/IP協(xié)議,而且在有限的硬件資源上實現整個協(xié)議族也是不切實際的。圖1為TCP/IP協(xié)議族的分層結構,實現數據傳輸需要在每一層實現一種協(xié)議。應用層主要實現用戶控制,接收數據以及為發(fā)送數據做相應準備等。在運輸層,選擇UDP協(xié)議。UDP協(xié)議是面向無連接的,它提供不可靠的傳輸服務,不保證一定能將數據傳輸到目的地。而TCP協(xié)議是面向連接的,它提供可靠的傳輸服務,能保證正確的數據傳輸,協(xié)議中包括重傳機制、分片機制以及流量控制機制等。但UDP比TCP簡單的多,易于實現,占用資源也比較少。在網絡層,選擇IP協(xié)議和部分ICMP協(xié)議。IP協(xié)議用于數據傳輸,而ICMP協(xié)議用于測試,如ping命令就屬于ICMP協(xié)議。在鏈路層,需要有MAC控制器實現以太網數據幀的打包解包、校驗和計算等。另外,還需要實現ARP協(xié)議。ARP協(xié)議用于通知通信雙方各自的硬件地址信息。
2 方案選擇及實現
2.1 千兆以太網的設計方案研究
千兆以太網的關鍵技術在于千兆以太網的MAC控制器和以太網接口的實現。目前市場上物理層芯片和MAC芯片都比較多,但大多數MAC芯片是PCI或PCIe接口,這種芯片主要用于計算機主板,而GMII接口的MAC芯片接口簡單,便于用戶使用。對于不同的系統(tǒng),設計千兆以太網的方法應根據系統(tǒng)的處理器類型而定,目前主流的處理器有FPGA、DSP、SOC、PowerPC等,根據處理器類型,大致可分為以下3種:
(1)使用FPGA作為主控制器,可以使用一片物理層協(xié)議芯片實現物理層,一片MAC芯片實現MAC層,而上層協(xié)議在FPGA內部使用硬件描述語言實現。也可以在FPGA內部使用MAC核代替MAC芯片,從而簡化系統(tǒng)設計。如Xilinx Virtex-5系列FPGA中就集成有10/100/11 000 Mb·s-1以太網MAC控制器硬核,而Altera提供Triple Speed EthemetMegaCore軟核控制器。
(2)使用集成有MAC控制器的DSP芯片,外部使用物理層芯片來實現物理層。如TI公司的TMS320C647x系列DSP,它采用哈佛總線結構,集成
度較高,運算速度快。可以完全使用C語言編程,操作方便。
(3)使用基于嵌入式操作系統(tǒng)的TCP/IP協(xié)議棧,如PowerPC芯片,它可以嵌入某些操作系統(tǒng),如Linux系統(tǒng),能夠方便的實現TCP/IP控制,外部使用一片物理層芯片即可。由于有TCP/IP協(xié)議棧的支持,省去了編寫協(xié)議的工作。
在系統(tǒng)中,主控制芯片選擇Altera公司的StratixlI系列FPGA,StratixII系列FPGA片資源豐富,支持多種電平標準,并集成有M4K,M512等多種形式的存儲器資源,可以實現數據的緩沖及存儲。MAC控制器使用該公司提供的MAC軟核來實現,該軟核支持多款物理層芯片,選擇NI公司的DP83865芯片,系統(tǒng)如圖2所示。
此方案較其他方案有明顯的優(yōu)勢。(1)DP83865采用GMII接口,簡單易用,而且性價比很高,與Altera公司的MAC軟核一起使用上簡化了設計者的工作,能有效縮短產品開發(fā)周期。(2)MAC軟核在FPGA內部占用的邏輯資源較少,所以并不會增加系統(tǒng)的額外開銷。
2.2 物理層芯片介紹
DP83865支持10Base-T/100Base-Tx/1000Base-T以太網協(xié)議,它使用0.18 μm、1.8 V CMOS工藝,使用MII、GMII或RGMII的媒體獨立接口,簡化了與MAC控制器的連接,具有超低功耗、完全自適應等特點,便于用戶實現10/100/1 000 Mb·s-1以太網。芯片內部設有32個寄存器,可以通過MDIO接口訪問其內部寄存器。Altera公司的MAC軟核內部映射有兩個物理層芯片的寄存器組空間,其地址空間與DP83865內部寄存器一一對應,用戶可以通過訪問MAC軟核內部寄存器以達到訪問DP83865的寄存器目的,MAC軟核將自動通過MDIO接口訪問DP83865的寄存器。這樣,如果要重新設定DP83865內部寄存器值,或者在調試過程中要通過讀取寄存器來判斷芯片的工作狀態(tài),可以直接訪問其在MAC軟核內部映射的寄存器空間,從而簡化設計。[!--empirenews.page--]
2.3 系統(tǒng)實現
千兆以太網由物理層、數據鏈路層、網絡層、運輸層和應用層組成。在FPGA內部實現MAC層以及MAC層以上的部分TCP/IP協(xié)議,其中包括ARP協(xié)議,IP協(xié)議,UDP協(xié)議以及部分ICMP協(xié)議。物理層使用DP83865芯片。FPGA內部系統(tǒng)框圖如圖3所示。
MAC控制器上層的協(xié)議在FPGA內部用硬件描述語言實現,這些協(xié)議將與MAC核共同組成網絡控制系統(tǒng),各部分協(xié)議之間密切配合,共同完成網絡數據收發(fā)的功能。協(xié)議系統(tǒng)的時鐘速率設定為125 MHz,可以最大程度地發(fā)揮MAC核的作用,使千兆以太網的數據吞吐率達到最大。
系統(tǒng)中關鍵的技術問題在于協(xié)議的效率問題。在調試初期,先以百兆速度運行,由于系統(tǒng)時鐘為25 MHz,相對較低,沒有出現程序因效率低下而導致系統(tǒng)不穩(wěn)定的情況。當在原有基礎上改為千兆以太網時,系統(tǒng)出現不穩(wěn)定地情況,所發(fā)送的數據幀不能穩(wěn)定地發(fā)送至上位機,有丟失數據幀的情況。
于是對協(xié)議部分進行優(yōu)化,以提高其運行效率。在編寫程序時,良好的代碼風格尤為重要。時序電路中最重要的是狀態(tài)機,所以狀態(tài)機的性能在一定程度上決定了整個程序的性能。協(xié)議中狀態(tài)轉移比較復雜,對狀態(tài)進行合并、減少狀態(tài)數量之后,程序效率明顯提高。此外,由于需要處理大批量的數據,而且數據將流經每一層協(xié)議,因而各層協(xié)議之間使用完全流水結構,銜接緊密,實時性更高,而且不必為每一
層開辟緩沖區(qū),節(jié)省了資源。
2.4 上位機控制
使用Visual C++編寫上位機程序,上位機通過網絡向FPGA發(fā)送相關命令,FPGA接收到命令后進行相應操作,并將數據通過千兆以太網發(fā)送至計算機,由上位機程序對接收到的數據進行存儲。上位機程序在MFC環(huán)境下使用WinSock編程實現,使用面向無連接的數據報套接字,即采用UDP協(xié)議,無需建立連接。為提高系統(tǒng)效率,在程序中使用多線程技術,一個線程負責接收數據,一個線程負責存儲數據,可以有效提高程序運行效率。
2.5 測試結果
在系統(tǒng)中,將存儲在電路板上Flash中的數據通過千兆以太網傳輸至計算機,使用UDP協(xié)議,每次傳輸1 024 Byte。經測試,此千兆以太網性能穩(wěn)定,數據吞吐率高。圖4所示是由SignalTap II采樣得到的由FPGA輸出的UDP波形,采樣時鐘為250 MHz。
在圖4中,rx_clk為125 MHz時鐘,gm_tx_d是由MAC發(fā)送至物理層芯片的數據幀。由圖可見,MAC軟核每個時鐘周期發(fā)送8 bit數據,則此千兆以太網帶寬為1 000 Mb·s-1。千兆以太網額外開銷小,大約占用FPGA資源的7%,為系統(tǒng)留下了充足的設計空間。對千兆以太網進行測試時,每次發(fā)送數十萬數據幀至上位機,當檢測到錯誤幀或數據幀丟失時立即停止發(fā)送,在所進行的一系列測試中,沒有出現中途停止發(fā)送的情況,說明沒有數據幀丟失或在傳輸中出錯,系統(tǒng)工作穩(wěn)定。
數據傳輸至計算機后由上位機程序接收并存儲,由于上位機程序效率偏低,千兆以太網傳輸速率受到限制。如果進一步優(yōu)化上位機程序,可以提高千兆以太網帶寬利用率。若兩個電路系統(tǒng)使用千兆以太網互連,因為都是純硬件電路,運行效率較高,可以發(fā)揮千兆以太網高帶寬的特性。
3 結束語
設計中使用三速以太網軟核,并對源程序進行了一系列優(yōu)化,代碼效率較高,系統(tǒng)工作穩(wěn)定,資源利用率較高,數據吞吐率最高可達1 000 Mb·s-1。千兆以太網成本低,可以在多種平臺下應用,為高速數據傳輸提供了方便的途徑。