FPGA高端項(xiàng)目:純verilog的 UDP 協(xié)議棧,提供11套工程源碼和技術(shù)支持
1、前言
目前網(wǎng)上的fpga實(shí)現(xiàn)udp基本生態(tài)如下:
1:verilog編寫的udp收發(fā)器,但中間的FIFO或者RAM等調(diào)用了IP,或者不帶ping功能,這樣的代碼功能正常也能用,但不帶ping功能基本就是廢物,在實(shí)際項(xiàng)目中不會(huì)用這樣的代碼,試想,多機(jī)互聯(lián),出現(xiàn)了問題,你的網(wǎng)卡都不帶ping功能,連基本的問題排查機(jī)制都不具備,這樣的代碼誰敢用?
2:帶ping功能的udp收發(fā)器,代碼優(yōu)秀也好用,但基本不開源,不會(huì)提供源碼給你,這樣的代碼也有不足,那就是出了問題不知道怎么排查,畢竟你沒有源碼,無可奈何;
3:使用了Xilinx的Tri Mode Ethernet MAC三速網(wǎng)IP實(shí)現(xiàn),這樣的代碼也很優(yōu)秀,但還是那個(gè)問題,沒有源碼,且三速網(wǎng)IP需要licence,三速網(wǎng)IP實(shí)現(xiàn)了rgmii到gmii再到axis的轉(zhuǎn)換;
4:使用FPGA的GTX資源利用SFP光口實(shí)現(xiàn)UDP,通信,這種方案不需要外接網(wǎng)絡(luò)變壓器即可完成;
5:真正意義上的verilog實(shí)現(xiàn)的UDP協(xié)議棧,真正意義上的verilog實(shí)現(xiàn)意思是UDP協(xié)議棧全部代碼均使用verilog代碼,不適用任何IP核,包括FIFO、RAM等,這樣的UDP協(xié)議棧移植性很強(qiáng),這樣的協(xié)議棧在市面上也很少,幾乎很難得到,而很設(shè)計(jì)就是這樣的協(xié)議棧,呵呵。。。
本設(shè)計(jì)使用純verilog實(shí)現(xiàn)的UDP協(xié)議棧實(shí)現(xiàn)UDP回環(huán)通信測(cè)試,之所以只用到了數(shù)據(jù)回環(huán)模式,是因?yàn)楸驹O(shè)計(jì)旨在為用戶提供一個(gè)可任意移植修改的UDP協(xié)議棧架構(gòu),用戶可通過此架構(gòu)任意創(chuàng)建自己的項(xiàng)目,自由度和開放性極強(qiáng);基于市面上主流和占有率較高的FPGA器件,創(chuàng)建了11套工程源碼,F(xiàn)PGA器件適用于Xilinx和Altera,開發(fā)工具適用于Xilinx的vivado和Altera的Quartus,網(wǎng)絡(luò)PHY芯片支持MII、GMII、RGMII、SGMII等,11套工程源碼詳情如下:
本設(shè)計(jì)經(jīng)過反復(fù)大量測(cè)試穩(wěn)定可靠,可在項(xiàng)目中直接移植使用,工程代碼可綜合編譯上板調(diào)試,可直接項(xiàng)目移植,適用于在校學(xué)生、研究生項(xiàng)目開發(fā),也適用于在職工程師做項(xiàng)目開發(fā),可應(yīng)用于醫(yī)療、軍工等行業(yè)的數(shù)字通信領(lǐng)域;
提供完整的、跑通的工程源碼和技術(shù)支持;
工程源碼和技術(shù)支持的獲取方式放在了文章末尾,請(qǐng)耐心看到最后;
免責(zé)聲明
本工程及其源碼即有自己寫的一部分,也有網(wǎng)絡(luò)公開渠道獲取的一部分(包括CSDN、Xilinx官網(wǎng)、Altera官網(wǎng)等等),若大佬們覺得有所冒犯,請(qǐng)私信批評(píng)教育;基于此,本工程及其源碼僅限于讀者或粉絲個(gè)人學(xué)習(xí)和研究,禁止用于商業(yè)用途,若由于讀者或粉絲自身原因用于商業(yè)用途所導(dǎo)致的法律問題,與本博客及博主無關(guān),請(qǐng)謹(jǐn)慎使用。。。
更新說明
這個(gè)UDP協(xié)議棧是真的好用,忍不住移植了多個(gè)平臺(tái)的FPGA和多種型號(hào)的PHY,代碼層面并沒有更新,但增加了多種移植方案,數(shù)據(jù)總計(jì)多達(dá)11個(gè),后續(xù)還將繼續(xù)更新,敬請(qǐng)期待;
2、相關(guān)方案推薦
我這里已有的以太網(wǎng)方案
目前我這里有大量UDP協(xié)議的工程源碼,包括UDP數(shù)據(jù)回環(huán),視頻傳輸,AD采集傳輸?shù)龋灿蠺CP協(xié)議的工程,對(duì)網(wǎng)絡(luò)通信有需求的兄弟可以去看看:直接點(diǎn)擊前往
本協(xié)議棧的 10G-UDP版本
本UDP協(xié)議棧支持1G、10G、25G速率,本文介紹的是1G速率的應(yīng)用,之前寫過一篇博客介紹本協(xié)議棧10G速率的應(yīng)用,在10G模式下,基于市面上主流和占有率較高的FPGA器件,創(chuàng)建了7套工程源碼,F(xiàn)PGA器件適用于Xilinx,開發(fā)工具適用于Xilinx的vivado,高速接口資源使用到了GTH、GTY、10G Ethernet PCS/PMA(10GBASE-R/KR)等,對(duì)10G UDP網(wǎng)絡(luò)通信有需求的兄弟可以去看看:
直接點(diǎn)擊前往
本協(xié)議棧的 25G-UDP版本
本UDP協(xié)議棧支持1G、10G、25G速率,本文介紹的是1G速率的應(yīng)用,之前寫過一篇博客介紹本協(xié)議棧25G速率的應(yīng)用,在25G模式下,基于市面上主流和占有率較高的FPGA器件,創(chuàng)建了1套工程源碼,F(xiàn)PGA器件適用于Xilinx,開發(fā)工具適用于Xilinx的vivado,高速接口資源使用到了GTY,對(duì)25G UDP網(wǎng)絡(luò)通信有需求的兄弟可以去看看:
直接點(diǎn)擊前往
1G 千兆網(wǎng) TCP–>服務(wù)器 方案
TCP分為服務(wù)器和客戶端,兩者代碼是不一樣的,看具體需求,既然本博客介紹的是TCP客戶端,那么肯定就有TCP服務(wù)器,本來TCP服務(wù)器之前一直都有,但一直沒有調(diào)通,經(jīng)過兩年半的練習(xí)調(diào)試,總算是調(diào)通了;TCP服務(wù)器依然是4套工程源碼,我另外寫了一篇博客介紹TCP服務(wù)器,感興趣的朋友可以去看看:直接點(diǎn)擊前往
1G 千兆網(wǎng) TCP–>客戶端 方案
TCP分為服務(wù)器和客戶端,兩者代碼是不一樣的,看具體需求,既然本博客介紹的是TCP服務(wù)器,那么肯定就有TCP客戶端,本來TCP客戶端之前一直都有,但一直沒有調(diào)通,經(jīng)過兩年半的練習(xí)調(diào)試,總算是調(diào)通了;TCP客戶端依然是4套工程源碼,我另外寫了一篇博客介紹TCP客戶端,感興趣的朋友可以去看看:直接點(diǎn)擊前往
10G 萬兆網(wǎng) TCP–>服務(wù)器+客戶端 方案
我這里也有10G 萬兆網(wǎng) TCP 方案,該方案有服務(wù)器和客戶端兩套代碼,在Xilinx KU和KUP等平臺(tái)測(cè)試通過并很穩(wěn)定,對(duì)10G 萬兆網(wǎng) TCP 方案感興趣的朋友可以去看看:直接點(diǎn)擊前往
3、該UDP協(xié)議棧性能
1:純verilog實(shí)現(xiàn),沒有用到任何一個(gè)IP核;
2:移植性天花板,該協(xié)議??稍赬ilinx、Altera等各大FPGA型號(hào)之間任意移植,因?yàn)槭菦]有任何IP,源語也有參數(shù)可選擇;
3:適應(yīng)性強(qiáng),目前已在RTL8211、B50610、88E1518等多款phy上成功測(cè)試,也可以用GT資源的SFP接口實(shí)現(xiàn)UDP協(xié)議的以太網(wǎng)通信;支持MII、GMII、RGMII、SGMII等PHY接口;
4:時(shí)序收斂很到位;
5:動(dòng)態(tài)ARP功能;
6:不帶ping功能;
7:MAC層RGMII轉(zhuǎn)GMII后由AXIS接口輸出,完全可以替代Xilinx的Tri Mode Ethernet MAC IP核;
8:最高支持25G速率,本設(shè)計(jì)使用1G;
4、詳細(xì)設(shè)計(jì)方案
設(shè)計(jì)架構(gòu)框圖
詳細(xì)設(shè)計(jì)方案如下框圖:
這只是一個(gè)總體架構(gòu),不同的工程可能在框圖中并不一致,具體參考代碼;
網(wǎng)絡(luò)調(diào)試助手
這只是一個(gè)回環(huán)測(cè)試工具,常用的Win軟件,用來測(cè)試UDP數(shù)據(jù)收發(fā);無需多言;
網(wǎng)絡(luò)PHY
本設(shè)計(jì)一共設(shè)計(jì)了11套工程,以適應(yīng)不同的網(wǎng)絡(luò)PHY芯片型號(hào)以及對(duì)應(yīng)的接口模式,詳情如下:
RTL8211E、RTL8211FD:有RGMII接口的工程;
88E1111:有RGMII、GMII、SGMII接口的工程;
88E1518:有RGMII接口的工程;
B50610:有RGMII接口的工程;
PEF7071:有RGMII接口的工程;
DP83848J:有MII接口的工程;
IDELAYE源語
這是Xilinx系列FPGA特有的功能模塊,目的是為接收的PHY數(shù)據(jù)進(jìn)行延時(shí)和對(duì)齊,采用了 IDELAYE源語,該源語在不同的FPGA器件上略有差異,本設(shè)計(jì)中的A7、K7、Zynq用的是IDELAYE2;IDELAYE2源語需要與IDELAYCTRL一起搭配使用,需要參考時(shí)鐘200M;代碼部分如下:例化位置在fpga.v;
MAC層
MAC層由verilog代碼實(shí)現(xiàn),沒有使用任何IP,但是用到了相關(guān)源語,Xilinx系列FPGA為IDDR、ODDR;Altera系列FPGA為
altddio_in、altddio_out;MAC層實(shí)現(xiàn)的功能有兩個(gè),一是對(duì)PHY側(cè)的數(shù)據(jù)進(jìn)行處理,接收端為雙時(shí)鐘沿?cái)?shù)據(jù)解為單時(shí)鐘沿?cái)?shù)據(jù)并對(duì)齊,發(fā)送則相反;二是實(shí)現(xiàn)PHY側(cè)和用戶側(cè)的數(shù)據(jù)格式轉(zhuǎn)換并進(jìn)行CRC8校驗(yàn),接收端為將PHY側(cè)的并行數(shù)據(jù)轉(zhuǎn)換為用戶側(cè)的AXI4-Stream數(shù)據(jù)流,發(fā)送則相反;代碼位置如下:
AXI4-Stream FIFO
網(wǎng)絡(luò)數(shù)據(jù)經(jīng)過MAC層以后,輸出的是AXI4-Stream數(shù)據(jù)流,如果直接將數(shù)據(jù)送入U(xiǎn)DP協(xié)議棧,有數(shù)據(jù)沖突的風(fēng)險(xiǎn),為了降低這種風(fēng)險(xiǎn),使用純verilog實(shí)現(xiàn)的AXI4-Stream FIFO作為緩沖,在MAC層與UDP協(xié)議棧之間建立“橋梁”,MAC層解析出來的例如原MAC地址、目的MAC地址等信息也通過AXI4-Stream FIFO轉(zhuǎn)發(fā);AXI4-Stream FIFO代碼位置如下:
UDP協(xié)議棧
UDP協(xié)議棧的功能就是用verilog硬件描述語言完成標(biāo)準(zhǔn)UDP協(xié)議;它由動(dòng)態(tài)ARP層、IP層、UDP層構(gòu)成,動(dòng)態(tài)ARP層完成ARP協(xié)議內(nèi)容的數(shù)據(jù)收發(fā),對(duì)于接收端來說是數(shù)據(jù)幀解包,從以太網(wǎng)數(shù)據(jù)幀中提取ARP數(shù)據(jù)段的有效數(shù)據(jù),對(duì)于發(fā)送端來說是數(shù)據(jù)幀組包,將用戶端發(fā)來的有效數(shù)據(jù)封裝成ARP協(xié)議的數(shù)據(jù)幀,作為以太網(wǎng)數(shù)據(jù)幀的ARP數(shù)據(jù)段;代碼中設(shè)置了ARP動(dòng)態(tài)緩存,即arp_cache,收發(fā)兩端都進(jìn)行crc校驗(yàn);
IP層完成IP協(xié)議內(nèi)容的數(shù)據(jù)收發(fā),對(duì)于接收端來說是數(shù)據(jù)幀解包,從以太網(wǎng)數(shù)據(jù)幀中提取IP數(shù)據(jù)段的有效數(shù)據(jù),對(duì)于發(fā)送端來說是數(shù)據(jù)幀組包,將用戶端發(fā)來的有效數(shù)據(jù)封裝成IP協(xié)議的數(shù)據(jù)幀,作為以太網(wǎng)數(shù)據(jù)幀的IP數(shù)據(jù)段;IP層與動(dòng)態(tài)ARP層是數(shù)據(jù)交互的,模塊相互包含,代碼架構(gòu)無法明顯劃分;
UDP層完成UDP協(xié)議內(nèi)容的數(shù)據(jù)收發(fā),對(duì)于接收端來說是數(shù)據(jù)幀解包,從以太網(wǎng)數(shù)據(jù)幀中提取UDP數(shù)據(jù)段的有效數(shù)據(jù),對(duì)于發(fā)送端來說是數(shù)據(jù)幀組包,將用戶端發(fā)來的有效數(shù)據(jù)封裝成UDP協(xié)議的數(shù)據(jù)幀,作為以太網(wǎng)數(shù)據(jù)幀的UDP數(shù)據(jù)段;IP層與動(dòng)態(tài)ARP層是數(shù)據(jù)交互的,模塊相互包含,代碼架構(gòu)無法明顯劃分;UDP層會(huì)對(duì)UDP數(shù)據(jù)做前后檢驗(yàn);
UDP協(xié)議棧架構(gòu)封裝后代碼位置如下:
UDP協(xié)議棧是直接與用戶邏輯數(shù)據(jù)對(duì)接的接口,所以對(duì)于FPGAS開發(fā)者而言,只要知道了UDP協(xié)議棧的數(shù)據(jù)接口,就能在用戶側(cè)編寫與之對(duì)接的時(shí)序來控制數(shù)據(jù)收發(fā),UDP協(xié)議棧的接口時(shí)序?yàn)锳XI4-Stream,時(shí)序如下:
發(fā)送端時(shí)序如下:
__ __ __ __ __ __ __
clk __/ \__/ \__/ \__/ \__/ \__/ \__/ \__
______________ ___________
s_eth_hdr_valid \_________________/
_____
s_eth_hdr_ready ________/ \_____________________________
_____
s_eth_dest_mac XXXXXXXXX_DMAC_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
_____
s_eth_dest_mac XXXXXXXXX_SMAC_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
___________ _____ _____
s_eth_payload_axis_tdata XXXXXXXXX_A0________X_A1__X_A2__XXXXXXXXXXXX
_______________________
s_eth_payload_axis_tvalid ________/ \___________
_________________
s_eth_payload_axis_tready ______________/ \___________
_____
s_eth_payload_axis_tlast __________________________/ \___________
s_eth_payload_axis_tuser ____________________________________________
接收端時(shí)序與發(fā)送端一樣;
IP地址修改
FPGA與PC通信而言,F(xiàn)PGA作為UDP服務(wù)器,PC作為UDP客戶端,需要在FPGA代碼里設(shè)置MAC、IP等配置信息,這是UDP通信的重要信息,開發(fā)者至少需要知道該部分代碼的位置,甚至根據(jù)自己的需要修改,代碼的位置如下:
可以看到,我這里的配置如下:
FPGA開發(fā)板MAC地址:02-00-00-00-00-00;
FPGA開發(fā)板IP地址:192.168.1.128;
FPGA開發(fā)板網(wǎng)關(guān):192.168.1.1;
FPGA開發(fā)板子網(wǎng)掩碼:255.255.255.0;
那么PC端的IP地址應(yīng)該設(shè)為多少呢?
因?yàn)樵诨丨h(huán)代碼里寫成了發(fā)送的目的IP=接收到的目的IP,所以只需要在PC端設(shè)置與192.168.1.128網(wǎng)段一樣的IP地址即可,比如我在測(cè)試時(shí)設(shè)置PC端IP地址為:192.168.1.10;如下:
當(dāng)然,你也可以配置為192.168.1.11、192.168.1.12、192.168.1.100等等;
默認(rèn)的FPGA開發(fā)板和PC端的端口號(hào)都是1234;代碼的位置如下:
這部分代碼位于fpga_core.v;
UDP數(shù)據(jù)回環(huán)
之所以只用到了數(shù)據(jù)回環(huán)模式,是因?yàn)楸驹O(shè)計(jì)旨在為用戶提供一個(gè)可任意一直修改的UDP協(xié)議棧架構(gòu),用戶可通過此架構(gòu)任意創(chuàng)建自己的項(xiàng)目,自由度和開放性極強(qiáng);使用一個(gè)純verilog實(shí)現(xiàn)的AXI4-Stream FIFO來做數(shù)據(jù)回環(huán)操作,因?yàn)閁DP協(xié)議棧的用戶數(shù)據(jù)接口正是AXI4-Stream數(shù)據(jù)流,代碼的位置如下:
代碼里直接用assign語句將AXI4-Stream FIFO的收發(fā)兩端連接,如下:
AXI4-Stream FIFO配置為了8192,如果你的FPGA邏輯資源較小,配置為1024就可以了;
這部分代碼位于fpga_core.v;
總體代碼架構(gòu)
以XilinxFPGA的RGMII接口工程為例,代碼架構(gòu)如下:
不同的工程與代碼架構(gòu)對(duì)應(yīng)時(shí)可能略有差異,但總體而言差不多,具體工程要看具體代碼;
5、工程源碼-1 詳解
開發(fā)板FPGA型號(hào):Xilinx Artix7 XC7A35T–xc7a35ticsg324-1L;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:DP83848J,MII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
6、工程源碼-2 詳解
開發(fā)板FPGA型號(hào):Xilinx Artix7 XC7A35T–xc7a35tfgg484-2;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:RTL8211FD,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
7、工程源碼-3 詳解
開發(fā)板FPGA型號(hào):Xilinx Artix 7 XC7A200T–xc7a200tsbg484-1;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:RTL8211E,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
8、工程源碼-4 詳解
開發(fā)板FPGA型號(hào):Xilinx Kintex 7 XC7K325–xc7k325tffg900-2;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:88E1111,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
9、工程源碼-5 詳解
開發(fā)板FPGA型號(hào):Xilinx Kintex 7 XC7K325–xc7k325tffg900-2;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:88E1111,GMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
10、工程源碼-6 詳解
開發(fā)板FPGA型號(hào):Xilinx Kintex 7 XC7K325–xc7k325tffg900-2;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:88E1111,SGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
88E1111在SGMII接口模式下,已經(jīng)不需要我們前面講過的MAC層了,而是直接調(diào)用Xilinx官方的1G/2.5G Ethernet PCS/PMA or SGMII IP核當(dāng)做MAC,該IP需要去Xilinx官網(wǎng)申請(qǐng)Licence才能使用,在1G線速率模式下對(duì)GTX的參考時(shí)鐘固定位125M,IP配置如下:
工程代碼架構(gòu)如下:可以參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié)作比較;
FPGA資源消耗和功耗預(yù)估如下;
11、工程源碼-7 詳解
開發(fā)板FPGA型號(hào):Xilinx Kintex 7 XC7K325–xc7k325tffg676-2;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:B50610,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
12、工程源碼-8 詳解
開發(fā)板FPGA型號(hào):Xilinx Kintex 7 XC7K325–xc7k325tffg676-2;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:88E1518,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
13、工程源碼-9 詳解
開發(fā)板FPGA型號(hào):Altera Cyclone IV–EP4CE115F29C7;
開發(fā)環(huán)境:Quartus 18.1;
網(wǎng)絡(luò)PHY:88E1111,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)如下:
FPGA資源消耗和功耗預(yù)估如下;
14、工程源碼-10 詳解
開發(fā)板FPGA型號(hào):Altera Cyclone 10–5SGXEA7N2F45C2;
開發(fā)環(huán)境:Quartus 18.1;
網(wǎng)絡(luò)PHY:PEF7071,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
需要注意的是,Quartus 18.1標(biāo)準(zhǔn)版本不支持Cyclone 10器件,需要到Altera官網(wǎng)下載Cyclone 10的器件庫,并在Quartus 18.1中安裝庫文件,然后重啟Quartus 18.1后才能使用;
工程代碼架構(gòu)如下:
FPGA資源消耗和功耗預(yù)估如下;
15、工程源碼-11 詳解
開發(fā)板FPGA型號(hào):Xilinx Zynq7020–xc7z020clg400-2;
開發(fā)環(huán)境:Vivado 2022.2;
網(wǎng)絡(luò)PHY:B50610,RGMII接口,千兆網(wǎng);
輸入\輸出:UDP 網(wǎng)絡(luò)通信;
測(cè)試項(xiàng):數(shù)據(jù)回環(huán)收發(fā);
工程代碼架構(gòu)參考第4章節(jié)的“總體代碼架構(gòu)”小節(jié);
FPGA資源消耗和功耗預(yù)估如下;
16、工程移植說明
vivado版本不一致處理
1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點(diǎn)擊文件–>另存為;但此方法并不保險(xiǎn),最保險(xiǎn)的方法是將你的vivado版本升級(jí)到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,解決如下:
打開工程后會(huì)發(fā)現(xiàn)IP都被鎖住了,如下:
此時(shí)需要升級(jí)IP,操作如下:
FPGA型號(hào)不一致處理
如果你的FPGA型號(hào)與我的不一致,則需要更改FPGA型號(hào),操作如下:
更改FPGA型號(hào)后還需要升級(jí)IP,升級(jí)IP的方法前面已經(jīng)講述了;
其他注意事項(xiàng)
1:由于每個(gè)板子的DDR不一定完全一樣,所以MIG IP需要根據(jù)你自己的原理圖進(jìn)行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據(jù)你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;
17、上板調(diào)試驗(yàn)證并演示
準(zhǔn)備工作
需要準(zhǔn)備以下物品:
1:FPGA開發(fā)板;
2:網(wǎng)線;
3:上位機(jī)電腦,臺(tái)式或筆記本;
4:網(wǎng)絡(luò)調(diào)試助手;
以vivado工程7為例進(jìn)行上板調(diào)試;
連接如下,然后上電下載bit:
首先設(shè)置電腦端IP如下:
開發(fā)板的IP地址在代碼中的設(shè)置如下,在fpga_core.v里,可以自由修改:
查看ARP
打開cmd,輸入 arp -a查看電腦的arp緩存表,如下:
UDP數(shù)據(jù)回環(huán)測(cè)試
打開網(wǎng)絡(luò)調(diào)試助手并配置,如下:
單次發(fā)送數(shù)據(jù)測(cè)試結(jié)果如下:
循環(huán)發(fā)送數(shù)據(jù)測(cè)試結(jié)果如下,1秒時(shí)間間隔循環(huán):文章來源:http://www.zghlxwxcb.cn/news/detail-546224.html
18、福利:工程代碼的獲取
福利:工程代碼的獲取
代碼太大,無法郵箱發(fā)送,以某度網(wǎng)盤鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤資料如下:
Xilinx系列FPGA工程文件夾如下:
Altera系列FPGA工程文件夾如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-546224.html
到了這里,關(guān)于FPGA純verilog實(shí)現(xiàn)UDP協(xié)議棧 AXIS用戶接口,可替代Tri Mode Ethernet MAC,提供三套工程源碼和技術(shù)支持的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!