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

下載本文檔

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

文檔簡介

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

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

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

4、0;   IP核功能簡介1)         此IP核支持TCP/IP協(xié)議棧中的ARP(簡化)、IP、UDP、TCP(簡化)、ICMP-Ping協(xié)議,覆蓋協(xié)議棧中的網(wǎng)絡(luò)接口層、網(wǎng)際層和傳輸層,能應(yīng)用于10/100/1000Mbps網(wǎng)絡(luò)系統(tǒng)中。2)         此IP核中只處理ARP應(yīng)答,不發(fā)送ARP請求;只有一個MAC-IP對緩沖區(qū),即只保存上次接收到的來自主機(jī)的ARP請求中的MAC

5、-IP對。3)         IP協(xié)議支持IP首部長度為20,協(xié)議類型為IPV4,不支持分片、選項等功能,發(fā)送IP包中的TTL值固定為64。4)         TCP協(xié)議支持TCP首部長度為20,不支持SACK、窗等選項功能,單次傳輸最大凈負(fù)荷數(shù)據(jù)為1460字節(jié)。5)         此IP核支持完整的UDP協(xié)議,單次傳輸最

6、大凈負(fù)荷數(shù)據(jù)為1472字節(jié)。6)         在IP核配置時UDP和TCP不能同時被包含,ICMP可以和他們組合包含,只需在配置文件中通過宏定義來加載、卸除組件,操作非常簡單。7)         IP核中用于緩沖接收和發(fā)送的數(shù)據(jù)的緩存區(qū)大小可以獨(dú)立配置。8)         應(yīng)用于IP核的網(wǎng)絡(luò)參數(shù)可以動態(tài)在線調(diào)整。9)&#

7、160;        此IP核能應(yīng)用于交換機(jī)組成的局域網(wǎng)絡(luò)中。1.2     IP核接口此IP核在UDP模式和在TCP模式下的頂層接口分別如下圖1.1和圖1.2所示,前綴為nat_的信號為需要設(shè)置的網(wǎng)絡(luò)參數(shù);前綴為L3的信號為與應(yīng)用層邏輯接口的信號,它遵循Avalon Stream接口協(xié)議,其中ready信號對應(yīng)的readyLatency等于0,data信號的數(shù)據(jù)模式是大端模式,此接口在SignalTapII中捕獲傳輸奇數(shù)字節(jié)的時序圖如下圖1.3所示;前綴為L1的

8、信號為與網(wǎng)絡(luò)芯片控制器邏輯接口的信號,它也遵循Avalon Stream接口協(xié)議。圖1.1 NET_STACK IP核UDP模式頂層接口圖1.2 NET_STACK IP核TCP模式頂層接口圖1.3 接口時序圖1.3     IP核使用NET_STACK IP核使用非常簡單,在應(yīng)用時可以采用三種方式將此IP核集成到您的系統(tǒng)中:1)         采用Verilog源碼方式,將此IP核看做一個模塊集成到您的系統(tǒng)中;2)  &#

9、160;      采用原理圖方式,將此IP的頂層模塊轉(zhuǎn)化為原理圖符號,進(jìn)而集成到您的系統(tǒng)中;3)         采用組件方式,在SOPC Builder或Qsys中將此IP核轉(zhuǎn)化為一個組件,進(jìn)而集成到您的系統(tǒng)中。無論采用哪種方式,在系統(tǒng)工程編譯之前,需要做如下工作:1)         設(shè)置IP核的工作模式,UDP或TCP模式,加載/卸除Ping功能組件

10、;2)         設(shè)置IP核內(nèi)接收緩沖區(qū)和發(fā)送緩沖區(qū)RAM的大小;3)         設(shè)置網(wǎng)絡(luò)參數(shù):本地物理地址nat_mac_addr、本地IP地址nat_ip_addr和本地端口號nat_port。2         NET_STACK IP核性能評估2.1     

11、資源占用此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核UDP模式占用資源情況 圖2.2 NET_STACK IP核TCP模式占用資源情況 2.2     Ping功能Ping功能屬于ICMP協(xié)議,它是一個非常好用且有用的TCP/IP工具,是網(wǎng)絡(luò)維護(hù)中最重要的一個命令,它主要

12、的功能是檢測網(wǎng)絡(luò)的連通狀況和分析網(wǎng)絡(luò)速度。此IP核能非常方便地加載和卸除Ping功能組件,只要在net_define.v文檔中通過宏ICMP_INCLUDED的定義或取消來控制即可。在ALTERA公司器件EP2C35F484中編譯,綜合分析優(yōu)化參數(shù)設(shè)置為“Balance”,如下圖2.3所示,只占用229個邏輯單元,具體消耗的資源如下圖2.4所示。圖2.3 QuartusII中分析綜合優(yōu)化參數(shù) 圖2.4 PING組件占用資源在單板中運(yùn)行包含Ping功能的IP核,且單板的IP設(shè)置為,在上位機(jī)中運(yùn)行Ping命令,界面如下圖2.3所示:圖2.3 DOS界面下Ping測試2.3 &#

13、160;   數(shù)據(jù)處理速度測試測試環(huán)境:采用閉環(huán)LOOPBACK測試系統(tǒng),即將與應(yīng)用層邏輯接口的接收信號和發(fā)送信號對應(yīng)短接,器件為CycloneII系列EP2C35F484C7,編譯器為QuartusII 11.0,網(wǎng)卡控制器為DM9000CEP,測量的時間段為NET_STACK接收到DM9000A_CTRLER(此為網(wǎng)絡(luò)芯片控制器IP核)發(fā)送區(qū)的最后一個數(shù)據(jù)至NET_STACK向DM9000A_CTRLER發(fā)送第一個數(shù)據(jù)這段時間,下表中所有時長反映的是協(xié)議棧分析數(shù)據(jù)包的響應(yīng)速度,與所用網(wǎng)絡(luò)是10M或100M無關(guān)。處理類型用戶數(shù)據(jù)個數(shù)(字節(jié))所用時長(clk)AR

14、P應(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)處理接收數(shù)據(jù)的時間是相同的,發(fā)送也一樣,IP核內(nèi)處理發(fā)送的數(shù)據(jù)的時間也不隨用戶數(shù)據(jù)個數(shù)的多少而改變。由上述可知,TCP/IP協(xié)議棧IP核與外部器件不存在直接聯(lián)系,

15、因此,它的系統(tǒng)時鐘速率不受外部器件IO訪問速率的影響,只與FPGA器件的速度等級以及IP核內(nèi)部結(jié)構(gòu)有關(guān),根據(jù)公式1可以計算出本文中的TCP/IP協(xié)議棧IP核的數(shù)據(jù)處理速率。                S =(M×)/(N×Tclk)               &#

16、160;   (式1)    結(jié)合上述表中數(shù)據(jù),M 取值為1024,Tclk取值為10ns(系統(tǒng)時鐘為100MHz),N 取最大值為20,計算得到S 約為40960Mbps,遠(yuǎn)大于目前千兆網(wǎng)的數(shù)據(jù)傳輸速率。因此,此TCP/IP協(xié)議棧IP核不僅可以適用于目前100/1000M網(wǎng)絡(luò)系統(tǒng),而且還可以適用于未來的10G網(wǎng)絡(luò)系統(tǒng)。2.4     100M網(wǎng)絡(luò)凈負(fù)荷測速測試環(huán)境:器件為CycloneII系列EP2C35F484C7,系統(tǒng)時鐘為100MHz,網(wǎng)卡控制器為DM9000CEP,

17、上位機(jī)通過發(fā)送命令控制含此IP核的單板,讓單板連續(xù)發(fā)送多個數(shù)據(jù)包,同時記錄發(fā)送數(shù)據(jù)包的時間,以此來測量網(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ò),測試實物圖如下圖2.4所示。 圖2.4 局域網(wǎng)絡(luò)通信測試2.6     最高時鐘頻率在ALTERA公司的CycloneII系

18、列EP2C35F484C7器件,QuartusII 11.0開發(fā)環(huán)境中的TimeQuest Timing Analyzer組件下測試得到的IP核系統(tǒng)時鐘clk最高為122.05MHz。注:如果需要更高的時鐘頻率,可以在犧牲資源面積的前提下將系統(tǒng)時鐘clk進(jìn)一步提高。3         參數(shù)更改此IP核在應(yīng)用過程中有如下參數(shù)需要修改:1)         工作模式,默認(rèn)值:UDP模式;2)  

19、60;      接收和發(fā)送緩沖區(qū)RAM的大小,默認(rèn)值:接收和發(fā)送RAM大小都為512×2字節(jié);3)         網(wǎng)絡(luò)參數(shù),默認(rèn)值:MAC=01-02-03-04-05-06,PORT=1024。3.1     更改工作模式IP核中包含三個組件:ICMP-Ping組件、UDP組件、TCP組件,在實際應(yīng)用中需要使用哪些功能,則在net_define.v文件中包含這個組件的宏,其中UDP

20、組件和TCP組件不能同時使用。例如:要使用Ping功能和UDP通信,則在net_define.v文件將代碼修改為:/= Protocol Included =/define ICMP_INCLUDED   1  define UDP_INCLUDED    1       / UDP和TCP只能選擇一個/define   TCP_INCLUDED    13.2

21、60;    更改RAM大小此IP核中的發(fā)送通道和接收通道具有獨(dú)立的數(shù)據(jù)緩沖區(qū)RAM,可以分別進(jìn)行更改其大小,更改的步驟如下:步驟一:使用QuartusII中的MegaWizard Plug-in Manager進(jìn)行RAM參數(shù)設(shè)置,設(shè)置細(xì)節(jié)請參看工業(yè)以太網(wǎng)協(xié)議棧NET_STACK IP核技術(shù)設(shè)計文檔中的章節(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地址、本地端口號

22、,當(dāng)需要更改其中任意一個或多個時,只需在net_stack_top實例化的時候,在接口中賦值即可。例如,想要將網(wǎng)絡(luò)參數(shù)設(shè)置為:MAC地址為01-60-6E-11-02-0F,IP地址為,本地端口號為6800,則接口參數(shù)設(shè)置為:.nat_ip_addr                   (32'hC0A8001F       &#

23、160;               ),      .nat_port                      (16'h1A90  &#

24、160;                        ),      .nat_mac_addr                  (48'h01606E11020F                   ),   在上一篇博文中,介紹了如何在F

溫馨提示

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

最新文檔

評論

0/150

提交評論