基于千兆以太網(wǎng)的高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)
2.3 系統(tǒng)實(shí)現(xiàn)
千兆以太網(wǎng)由物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層和應(yīng)用層組成。在FPGA內(nèi)部實(shí)現(xiàn)MAC層以及MAC層以上的部分TCP/IP協(xié)議,其中包括ARP協(xié)議,IP協(xié)議,UDP協(xié)議以及部分ICMP協(xié)議。物理層使用DP83865芯片。FPGA內(nèi)部系統(tǒng)框圖如圖3所示。本文引用地址:http://www.ex-cimer.com/article/156459.htm
MAC控制器上層的協(xié)議在FPGA內(nèi)部用硬件描述語言實(shí)現(xiàn),這些協(xié)議將與MAC核共同組成網(wǎng)絡(luò)控制系統(tǒng),各部分協(xié)議之間密切配合,共同完成網(wǎng)絡(luò)數(shù)據(jù)收發(fā)的功能。協(xié)議系統(tǒng)的時(shí)鐘速率設(shè)定為125 MHz,可以最大程度地發(fā)揮MAC核的作用,使千兆以太網(wǎng)的數(shù)據(jù)吞吐率達(dá)到最大。
系統(tǒng)中關(guān)鍵的技術(shù)問題在于協(xié)議的效率問題。在調(diào)試初期,先以百兆速度運(yùn)行,由于系統(tǒng)時(shí)鐘為25 MHz,相對(duì)較低,沒有出現(xiàn)程序因效率低下而導(dǎo)致系統(tǒng)不穩(wěn)定的情況。當(dāng)在原有基礎(chǔ)上改為千兆以太網(wǎng)時(shí),系統(tǒng)出現(xiàn)不穩(wěn)定地情況,所發(fā)送的數(shù)據(jù)幀不能穩(wěn)定地發(fā)送至上位機(jī),有丟失數(shù)據(jù)幀的情況。
于是對(duì)協(xié)議部分進(jìn)行優(yōu)化,以提高其運(yùn)行效率。在編寫程序時(shí),良好的代碼風(fēng)格尤為重要。時(shí)序電路中最重要的是狀態(tài)機(jī),所以狀態(tài)機(jī)的性能在一定程度上決定了整個(gè)程序的性能。協(xié)議中狀態(tài)轉(zhuǎn)移比較復(fù)雜,對(duì)狀態(tài)進(jìn)行合并、減少狀態(tài)數(shù)量之后,程序效率明顯提高。此外,由于需要處理大批量的數(shù)據(jù),而且數(shù)據(jù)將流經(jīng)每一層協(xié)議,因而各層協(xié)議之間使用完全流水結(jié)構(gòu),銜接緊密,實(shí)時(shí)性更高,而且不必為每一
層開辟緩沖區(qū),節(jié)省了資源。
2.4 上位機(jī)控制
使用Visual C++編寫上位機(jī)程序,上位機(jī)通過網(wǎng)絡(luò)向FPGA發(fā)送相關(guān)命令,F(xiàn)PGA接收到命令后進(jìn)行相應(yīng)操作,并將數(shù)據(jù)通過千兆以太網(wǎng)發(fā)送至計(jì)算機(jī),由上位機(jī)程序?qū)邮盏降臄?shù)據(jù)進(jìn)行存儲(chǔ)。上位機(jī)程序在MFC環(huán)境下使用WinSock編程實(shí)現(xiàn),使用面向無連接的數(shù)據(jù)報(bào)套接字,即采用UDP協(xié)議,無需建立連接。為提高系統(tǒng)效率,在程序中使用多線程技術(shù),一個(gè)線程負(fù)責(zé)接收數(shù)據(jù),一個(gè)線程負(fù)責(zé)存儲(chǔ)數(shù)據(jù),可以有效提高程序運(yùn)行效率。
2.5 測(cè)試結(jié)果
在系統(tǒng)中,將存儲(chǔ)在電路板上Flash中的數(shù)據(jù)通過千兆以太網(wǎng)傳輸至計(jì)算機(jī),使用UDP協(xié)議,每次傳輸1 024 Byte。經(jīng)測(cè)試,此千兆以太網(wǎng)性能穩(wěn)定,數(shù)據(jù)吞吐率高。圖4所示是由SignalTap II采樣得到的由FPGA輸出的UDP波形,采樣時(shí)鐘為250 MHz。
在圖4中,rx_clk為125 MHz時(shí)鐘,gm_tx_d是由MAC發(fā)送至物理層芯片的數(shù)據(jù)幀。由圖可見,MAC軟核每個(gè)時(shí)鐘周期發(fā)送8 bit數(shù)據(jù),則此千兆以太網(wǎng)帶寬為1 000 Mb·s-1。千兆以太網(wǎng)額外開銷小,大約占用FPGA資源的7%,為系統(tǒng)留下了充足的設(shè)計(jì)空間。對(duì)千兆以太網(wǎng)進(jìn)行測(cè)試時(shí),每次發(fā)送數(shù)十萬數(shù)據(jù)幀至上位機(jī),當(dāng)檢測(cè)到錯(cuò)誤幀或數(shù)據(jù)幀丟失時(shí)立即停止發(fā)送,在所進(jìn)行的一系列測(cè)試中,沒有出現(xiàn)中途停止發(fā)送的情況,說明沒有數(shù)據(jù)幀丟失或在傳輸中出錯(cuò),系統(tǒng)工作穩(wěn)定。
數(shù)據(jù)傳輸至計(jì)算機(jī)后由上位機(jī)程序接收并存儲(chǔ),由于上位機(jī)程序效率偏低,千兆以太網(wǎng)傳輸速率受到限制。如果進(jìn)一步優(yōu)化上位機(jī)程序,可以提高千兆以太網(wǎng)帶寬利用率。若兩個(gè)電路系統(tǒng)使用千兆以太網(wǎng)互連,因?yàn)槎际羌冇布娐?,運(yùn)行效率較高,可以發(fā)揮千兆以太網(wǎng)高帶寬的特性。
3 結(jié)束語
設(shè)計(jì)中使用三速以太網(wǎng)軟核,并對(duì)源程序進(jìn)行了一系列優(yōu)化,代碼效率較高,系統(tǒng)工作穩(wěn)定,資源利用率較高,數(shù)據(jù)吞吐率最高可達(dá)1 000 Mb·s-1。千兆以太網(wǎng)成本低,可以在多種平臺(tái)下應(yīng)用,為高速數(shù)據(jù)傳輸提供了方便的途徑。
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論