工業(yè)以太網(wǎng)協(xié)議棧FPGA IP核的實(shí)現(xiàn)_第1頁
工業(yè)以太網(wǎng)協(xié)議棧FPGA IP核的實(shí)現(xiàn)_第2頁
工業(yè)以太網(wǎng)協(xié)議棧FPGA IP核的實(shí)現(xiàn)_第3頁
工業(yè)以太網(wǎng)協(xié)議棧FPGA IP核的實(shí)現(xiàn)_第4頁
工業(yè)以太網(wǎng)協(xié)議棧FPGA IP核的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、.冉冉紅日的博客工業(yè)以太網(wǎng)協(xié)議棧FPGAIP核的實(shí)現(xiàn)隨著物聯(lián)網(wǎng)的廣泛應(yīng)用,在嵌入式系統(tǒng)中,越來越多的設(shè)備、傳感器使用工業(yè)以太網(wǎng)作為通信媒介,因?yàn)楣I(yè)以太網(wǎng)有著速度與安全可靠雙重優(yōu)勢。在較高端設(shè)備中,由于存在如DSP、ARM之類的處理器,指令代碼運(yùn)行處理速度很快,再有OS進(jìn)行管理,此時(shí)將以太網(wǎng)網(wǎng)卡芯片驅(qū)動(dòng)程序和協(xié)議棧加入進(jìn)來,比較簡單方便,易于設(shè)備管理和功能更改,這種方案已經(jīng)應(yīng)用的非常成熟了。在某些低端設(shè)備中,只有單片機(jī)作為處理器,如果還是像上述那樣實(shí)現(xiàn)以太網(wǎng)的話,單片機(jī)的負(fù)荷勢必會(huì)大大增加,對(duì)于與單片機(jī)相連的設(shè)備的實(shí)時(shí)性控制就會(huì)大大降低。因此,在要加入以太網(wǎng)通信的設(shè)備中選用單片機(jī)作為處理器不是

2、一種好方案。除了單片機(jī)、DSP、ARM外,還有一種處理器也被廣泛應(yīng)用,那就是FPGA。現(xiàn)在FPGA的功能越來越多,片內(nèi)資源也越來越多。像新出的ALTERA FPGA內(nèi)部就已有ARM硬核,在ALTERA的所有系列中都能實(shí)現(xiàn)軟核CPU,此CPU的運(yùn)行速度相比一般的單片機(jī)來說還要更快些。但如果用它來管理TCP/IP協(xié)議棧,我覺得也就會(huì)像單片機(jī)一樣,負(fù)載過重,就像讓一個(gè)10歲的小孩挑50斤的擔(dān)子一樣。此外,我個(gè)人覺得,軟核CPU畢竟沒有單片機(jī)穩(wěn)定,在FPGA系統(tǒng)中,讓軟核CPU只做管理就好了,而像以太網(wǎng)協(xié)議棧的這樣獨(dú)立性強(qiáng),又比較復(fù)雜的工作就由一個(gè)IP核來實(shí)現(xiàn)。雖然這樣的IP核實(shí)現(xiàn)起來不容易,但對(duì)于實(shí)

3、時(shí)性要求高、數(shù)據(jù)傳輸速度要求高、穩(wěn)定性要求高的設(shè)備,采用這種方案是非常好的。因此,我想根據(jù)嵌入式設(shè)備的特點(diǎn),簡化TCP/IP協(xié)議棧的內(nèi)容,實(shí)現(xiàn)嵌入式設(shè)備需要的功能,而不需要的就剔除掉。比如,不需要那么復(fù)雜的ARP管理,只需將緩存上一次有效的IP-MAC地址;如果只用UDP協(xié)議,那么就只需實(shí)現(xiàn)簡易ARP、IP和UDP就可以了。這樣不僅能節(jié)約硬件資源,同時(shí)簡化了程序,簡化了邏輯,提高了系統(tǒng)的穩(wěn)定性,越簡單的事物,穩(wěn)定性越好。1NET_STACK IP核概述1.1IP核功能簡介1)此IP核支持TCP/IP協(xié)議棧中的ARP(簡化)、IP、UDP、TCP(簡化)、ICMP-Ping協(xié)議,覆蓋協(xié)議棧中的網(wǎng)

4、絡(luò)接口層、網(wǎng)際層和傳輸層,能應(yīng)用于10/100/1000Mbps網(wǎng)絡(luò)系統(tǒng)中。2)此IP核中只處理ARP應(yīng)答,不發(fā)送ARP請(qǐng)求;只有一個(gè)MAC-IP對(duì)緩沖區(qū),即只保存上次接收到的來自主機(jī)的ARP請(qǐng)求中的MAC-IP對(duì)。3)IP協(xié)議支持IP首部長度為20,協(xié)議類型為IPV4,不支持分片、選項(xiàng)等功能,發(fā)送IP包中的TTL值固定為64。4)TCP協(xié)議支持TCP首部長度為20,不支持SACK、窗等選項(xiàng)功能,單次傳輸最大凈負(fù)荷數(shù)據(jù)為1460字節(jié)。5)此IP核支持完整的UDP協(xié)議,單次傳輸最大凈負(fù)荷數(shù)據(jù)為1472字節(jié)。6)在IP核配置時(shí)UDP和TCP不能同時(shí)被包含,ICMP可以和他們組合包含,只需在配置文件

5、中通過宏定義來加載、卸除組件,操作非常簡單。7)IP核中用于緩沖接收和發(fā)送的數(shù)據(jù)的緩存區(qū)大小可以獨(dú)立配置。8)應(yīng)用于IP核的網(wǎng)絡(luò)參數(shù)可以動(dòng)態(tài)在線調(diào)整。9)此IP核能應(yīng)用于交換機(jī)組成的局域網(wǎng)絡(luò)中。1.2IP核接口此IP核在UDP模式和在TCP模式下的頂層接口分別如下圖1.1和圖1.2所示,前綴為nat_的信號(hào)為需要設(shè)置的網(wǎng)絡(luò)參數(shù);前綴為L3的信號(hào)為與應(yīng)用層邏輯接口的信號(hào),它遵循Avalon Stream接口協(xié)議,其中ready信號(hào)對(duì)應(yīng)的readyLatency等于0,data信號(hào)的數(shù)據(jù)模式是大端模式,此接口在SignalTapII中捕獲傳輸奇數(shù)字節(jié)的時(shí)序圖如下圖1.3所示;前綴為L1的信號(hào)為與網(wǎng)

6、絡(luò)芯片控制器邏輯接口的信號(hào),它也遵循Avalon Stream接口協(xié)議。圖1.1 NET_STACK IP核UDP模式頂層接口圖1.2 NET_STACK IP核TCP模式頂層接口圖1.3接口時(shí)序圖1.3IP核使用NET_STACK IP核使用非常簡單,在應(yīng)用時(shí)可以采用三種方式將此IP核集成到您的系統(tǒng)中:1)采用Verilog源碼方式,將此IP核看做一個(gè)模塊集成到您的系統(tǒng)中;2)采用原理圖方式,將此IP的頂層模塊轉(zhuǎn)化為原理圖符號(hào),進(jìn)而集成到您的系統(tǒng)中;3)采用組件方式,在SOPC Builder或Qsys中將此IP核轉(zhuǎn)化為一個(gè)組件,進(jìn)而集成到您的系統(tǒng)中。無論采用哪種方式,在系統(tǒng)工程編譯之前,需

7、要做如下工作:1)設(shè)置IP核的工作模式,UDP或TCP模式,加載/卸除Ping功能組件;2)設(shè)置IP核內(nèi)接收緩沖區(qū)和發(fā)送緩沖區(qū)RAM的大小;3)設(shè)置網(wǎng)絡(luò)參數(shù):本地物理地址nat_mac_addr、本地IP地址nat_ip_addr和本地端口號(hào)nat_port。2NET_STACK IP核性能評(píng)估2.1資源占用此IP核占用的資源類型只有邏輯資源和片內(nèi)RAM兩種,下圖2.1和圖2.2分別為IP核在UDP模式和TCP模式下在測試工程中占有的資源情況,目標(biāo)器件為ALTERA公司的CycloneII系列EP2C35F484C7,開發(fā)環(huán)境為QuartusII 11.0。圖2.1 NET_STACK IP核

8、UDP模式占用資源情況圖2.2 NET_STACK IP核TCP模式占用資源情況2.2Ping功能Ping功能屬于ICMP協(xié)議,它是一個(gè)非常好用且有用的TCP/IP工具,是網(wǎng)絡(luò)維護(hù)中最重要的一個(gè)命令,它主要的功能是檢測網(wǎng)絡(luò)的連通狀況和分析網(wǎng)絡(luò)速度。此IP核能非常方便地加載和卸除Ping功能組件,只要在net_define.v文檔中通過宏ICMP_INCLUDED的定義或取消來控制即可。在ALTERA公司器件EP2C35F484中編譯,綜合分析優(yōu)化參數(shù)設(shè)置為“Balance”,如下圖2.3所示,只占用229個(gè)邏輯單元,具體消耗的資源如下圖2.4所示。圖2.3 QuartusII中分析綜合優(yōu)化參數(shù)

9、圖2.4 PING組件占用資源在單板中運(yùn)行包含Ping功能的IP核,且單板的IP設(shè)置為192.168.0.31,在上位機(jī)中運(yùn)行Ping命令,界面如下圖2.3所示:圖2.3 DOS界面下Ping測試2.3數(shù)據(jù)處理速度測試測試環(huán)境:采用閉環(huán)LOOPBACK測試系統(tǒng),即將與應(yīng)用層邏輯接口的接收信號(hào)和發(fā)送信號(hào)對(duì)應(yīng)短接,器件為CycloneII系列EP2C35F484C7,編譯器為QuartusII 11.0,網(wǎng)卡控制器為DM9000CEP,測量的時(shí)間段為NET_STACK接收到DM9000A_CTRLER(此為網(wǎng)絡(luò)芯片控制器IP核)發(fā)送區(qū)的最后一個(gè)數(shù)據(jù)至NET_STACK向DM9000A_CTRLER

10、發(fā)送第一個(gè)數(shù)據(jù)這段時(shí)間,下表中所有時(shí)長反映的是協(xié)議棧分析數(shù)據(jù)包的響應(yīng)速度,與所用網(wǎng)絡(luò)是10M或100M無關(guān)。處理類型用戶數(shù)據(jù)個(gè)數(shù)(字節(jié))所用時(shí)長(clk)ARP應(yīng)答-30UDP發(fā)送1020UDP發(fā)送4020UDP發(fā)送10020UDP發(fā)送40020UDP發(fā)送80020UDP發(fā)送102420UDP接收1015UDP接收4015UDP接收10015UDP接收40015UDP接收80015UDP接收102415TCP發(fā)送4025TCP發(fā)送40025TCP發(fā)送102425TCP接收4013TCP接收40013TCP接收102413從上述表中可以看出,采用UDP/TCP協(xié)議接收不同的用戶數(shù)據(jù),IP核內(nèi)處理

11、接收數(shù)據(jù)的時(shí)間是相同的,發(fā)送也一樣,IP核內(nèi)處理發(fā)送的數(shù)據(jù)的時(shí)間也不隨用戶數(shù)據(jù)個(gè)數(shù)的多少而改變。由上述可知,TCP/IP協(xié)議棧IP核與外部器件不存在直接聯(lián)系,因此,它的系統(tǒng)時(shí)鐘速率不受外部器件IO訪問速率的影響,只與FPGA器件的速度等級(jí)以及IP核內(nèi)部結(jié)構(gòu)有關(guān),根據(jù)公式1可以計(jì)算出本文中的TCP/IP協(xié)議棧IP核的數(shù)據(jù)處理速率。S =(M)/(NTclk)(式1)結(jié)合上述表中數(shù)據(jù),M 取值為1024,Tclk取值為10ns(系統(tǒng)時(shí)鐘為100MHz),N 取最大值為20,計(jì)算得到S 約為40960Mbps,遠(yuǎn)大于目前千兆網(wǎng)的數(shù)據(jù)傳輸速率。因此,此TCP/IP協(xié)議棧IP核不僅可以適用于目前100/

12、1000M網(wǎng)絡(luò)系統(tǒng),而且還可以適用于未來的10G網(wǎng)絡(luò)系統(tǒng)。2.4100M網(wǎng)絡(luò)凈負(fù)荷測速測試環(huán)境:器件為CycloneII系列EP2C35F484C7,系統(tǒng)時(shí)鐘為100MHz,網(wǎng)卡控制器為DM9000CEP,上位機(jī)通過發(fā)送命令控制含此IP核的單板,讓單板連續(xù)發(fā)送多個(gè)數(shù)據(jù)包,同時(shí)記錄發(fā)送數(shù)據(jù)包的時(shí)間,以此來測量網(wǎng)絡(luò)的上行凈負(fù)荷速率,測試結(jié)果如下表所示。協(xié)議類型最大凈負(fù)荷最小速率最大速率UDP1472字節(jié)32.1Mbps76.9MbpsTCP1460字節(jié)21.6Mbps35.7Mbps2.5網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)此IP核能應(yīng)用于交換機(jī)組成的局域網(wǎng)絡(luò),測試實(shí)物圖如下圖2.4所示。圖2.4局域網(wǎng)絡(luò)通信測試2.6最

13、高時(shí)鐘頻率在ALTERA公司的CycloneII系列EP2C35F484C7器件,QuartusII 11.0開發(fā)環(huán)境中的TimeQuest Timing Analyzer組件下測試得到的IP核系統(tǒng)時(shí)鐘clk最高為122.05MHz。注:如果需要更高的時(shí)鐘頻率,可以在犧牲資源面積的前提下將系統(tǒng)時(shí)鐘clk進(jìn)一步提高。3參數(shù)更改此IP核在應(yīng)用過程中有如下參數(shù)需要修改:1)工作模式,默認(rèn)值:UDP模式;2)接收和發(fā)送緩沖區(qū)RAM的大小,默認(rèn)值:接收和發(fā)送RAM大小都為5122字節(jié);3)網(wǎng)絡(luò)參數(shù),默認(rèn)值:MAC=01-02-03-04-05-06,IP=192.168.0.1,PORT=1024。3.

14、1更改工作模式IP核中包含三個(gè)組件:ICMP-Ping組件、UDP組件、TCP組件,在實(shí)際應(yīng)用中需要使用哪些功能,則在net_define.v文件中包含這個(gè)組件的宏,其中UDP組件和TCP組件不能同時(shí)使用。例如:要使用Ping功能和UDP通信,則在net_define.v文件將代碼修改為:/= Protocol Included =/define ICMP_INCLUDED1define UDP_INCLUDED1/ UDP和TCP只能選擇一個(gè)/defineTCP_INCLUDED13.2更改RAM大小此IP核中的發(fā)送通道和接收通道具有獨(dú)立的數(shù)據(jù)緩沖區(qū)RAM,可以分別進(jìn)行更改其大小,更改的步驟

15、如下:步驟一:使用QuartusII中的MegaWizard Plug-in Manager進(jìn)行RAM參數(shù)設(shè)置,設(shè)置細(xì)節(jié)請(qǐng)參看工業(yè)以太網(wǎng)協(xié)議棧NET_STACK IP核技術(shù)設(shè)計(jì)文檔中的章節(jié)2.2的內(nèi)容。步驟二:更改net_define.v中的RBW和/或TBW的值,此值須和步驟一中設(shè)置的參數(shù)值一致。3.3更改網(wǎng)絡(luò)參數(shù)此IP核中的網(wǎng)絡(luò)參數(shù)有本地MAC地址、本地IP地址、本地端口號(hào),當(dāng)需要更改其中任意一個(gè)或多個(gè)時(shí),只需在net_stack_top實(shí)例化的時(shí)候,在接口中賦值即可。例如,想要將網(wǎng)絡(luò)參數(shù)設(shè)置為:MAC地址為01-60-6E-11-02-0F,IP地址為192.168.0.31,本地端口號(hào)

16、為6800,則接口參數(shù)設(shè)置為:.nat_ip_addr(32hC0A8001F),.nat_port(16h1A90),.nat_mac_addr(48h01606E11020F),在上一篇博文中,介紹了如何在FPGA中實(shí)現(xiàn)UDP、ARP、IP子協(xié)議及其使用,經(jīng)過調(diào)試、應(yīng)用后,發(fā)現(xiàn)有些地方是可以改進(jìn)的,比如在接收通道上,對(duì)于IP、UDP子協(xié)議的分析,首部的分析可以在網(wǎng)絡(luò)接口層中就解析出來,然后再在IP、UDP模塊中檢測判斷,這樣不僅可以加快分析處理的速度,而且可以簡化結(jié)構(gòu)、邏輯編寫。在實(shí)際應(yīng)用中,除了UDP被廣泛使用外,TCP也常常被應(yīng)用在嵌入式系統(tǒng)中。開始一想到TCP的管理,就感覺很復(fù)雜,如

17、果在FPGA中實(shí)現(xiàn),肯定不容易,也就沒有再細(xì)想下去。后來靜下心來,仔細(xì)閱讀了TCP協(xié)議,對(duì)TCP狀態(tài)跳轉(zhuǎn)圖進(jìn)行分析,發(fā)現(xiàn)其實(shí)不是那么復(fù)雜,可以簡化,去掉一些復(fù)雜功能,只保留最基本的結(jié)構(gòu),就可以用于一些網(wǎng)絡(luò)結(jié)構(gòu)簡單的嵌入式系統(tǒng)中。TCP協(xié)議之所以復(fù)雜,是因?yàn)樗紤]的很全面,像分片、滑動(dòng)窗、流量監(jiān)控等等,它覆蓋面很寬,可以滿足很多情況的應(yīng)用,但其最基本的也就是管理連接、發(fā)送應(yīng)答、出錯(cuò)超時(shí)重發(fā),重點(diǎn)是看重其是面向連接的,應(yīng)用層不需要對(duì)數(shù)據(jù)傳輸進(jìn)行維護(hù),同時(shí)它分為客戶端和服務(wù)器兩種情況。而對(duì)于一些網(wǎng)絡(luò)結(jié)構(gòu)簡單的系統(tǒng),比如PC機(jī)與單板是直連,或中間只有一個(gè)路由器,網(wǎng)絡(luò)上的數(shù)據(jù)很“規(guī)整”,沒有無用的數(shù)據(jù)傳輸,單板側(cè)作為一個(gè)服務(wù)器端,接收PC機(jī)客戶端的訪問,然后應(yīng)答相應(yīng)的數(shù)據(jù),以實(shí)現(xiàn)PC機(jī)對(duì)單板的監(jiān)控和數(shù)據(jù)傳輸。經(jīng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論