01概述
本文總結(jié)一下前段時(shí)間完成的FPGA以太網(wǎng)通信功能。該方案參考了MILIANKE的設(shè)計(jì),但在其基礎(chǔ)上簡化了某些不必要的步驟以及解決了一些由于忽視細(xì)節(jié)導(dǎo)致的棘手的問題。
02RGMII接口
本設(shè)計(jì)采用RGMII接口的88E1512芯片。RGMII接口的主要優(yōu)勢(shì)在于,它可以同時(shí)適用于1000M、100M、10M三種速率,并且接口占用引腳數(shù)較少。
RGMII 使用 4bit 數(shù)據(jù)接口采用上下沿 DDR(Double Data Rate)的方式在一個(gè)時(shí)鐘周期內(nèi)傳輸 8bit 數(shù)據(jù)信號(hào),即上升沿發(fā)送或者接收數(shù)據(jù)的低4位[3:0],下降沿發(fā)送或者接收數(shù)據(jù)的高4位[7:4]。同理,使用 1bit 控制接口采用 DDR 的方式在一個(gè)時(shí)鐘周期內(nèi)傳輸 2bit 控制信號(hào)。
- 發(fā)送端:tx_clk,tx_d[3:0],tx_ctrl;
- 接收端:rx_clk,rx_d[3:0],rx_ctrl;
圖1 RGMII接口
- 三種速率模式
MII接口適用于1000M、100M、10M三種傳輸速率。
當(dāng)工作于1000M 時(shí),時(shí)鐘信號(hào) TXC 和 RXC 均為 125MHz,4bit數(shù)據(jù)信號(hào)上下沿值均有效,控制信號(hào)上下沿值也均有效。
當(dāng)工作于 100M時(shí),時(shí)鐘信號(hào) TXC 和 RXC均為25MHz,4bit數(shù)據(jù)信號(hào)只有上升沿值[3:0]有效,相當(dāng)于此時(shí)數(shù)據(jù)信號(hào)切換為單沿SDR(Single Data Rata)4位輸模式。控制信號(hào)仍為上下沿有效。
當(dāng)工作于10M時(shí),時(shí)鐘信號(hào)TXC和RXC均為2.5MHz,數(shù)據(jù)信號(hào)和控制信號(hào)的使用和100M速率時(shí)完全相同。
03UDP通信方案
該以太網(wǎng)通信方案如圖2所示,最上層為用戶邏輯模塊,用于處理和使用解析后的以太網(wǎng)通信數(shù)據(jù);uiudp_stack模塊采用MILIANKE提供的協(xié)議棧網(wǎng)表文件;FPGA 以太網(wǎng)IP核采用Tri Mode Ethernet Mac;PHY芯片采用88E1512;最后RJ-45接口通過網(wǎng)線與上位機(jī)連接。
圖2 FPGA UDP以太網(wǎng)通信方案
- IP核配置
使用千兆通訊,因此將速率設(shè)為 1Gbps;
接口參數(shù)配置如下:
有關(guān)Shared Logic的選擇可參考我之前寫的文章。
04以太網(wǎng)數(shù)據(jù)流回環(huán)傳輸方案
如圖3所示,以太網(wǎng)數(shù)據(jù)環(huán)路傳輸方案,是在電腦上通過網(wǎng)絡(luò)調(diào)試助手向FPGA發(fā)送任意小于1472字節(jié)長度的UDP數(shù)據(jù)包。由于Tri Mode Ethernet Mac IP核接口數(shù)據(jù)流為8bits/125M,而uiudp_stack為64bits/15.625M,因此需要在中間插入FIFO緩存模塊,進(jìn)行數(shù)據(jù)位寬轉(zhuǎn)換以及跨時(shí)鐘域處理。
圖3 以太網(wǎng)數(shù)據(jù)回環(huán)傳輸方案
05調(diào)試遇到問題
修改電腦IP地址、子網(wǎng)掩碼,上位機(jī)UDP端口號(hào)、IP地址,然后測(cè)試了軟件功能,發(fā)現(xiàn)UDP丟包率較高,為30%左右,而且FPGA端接收回路數(shù)據(jù)沒問題,只是發(fā)送回路有問題。因此對(duì)軟件中所有模塊進(jìn)行測(cè)試,修改所有可能影響丟包率的代碼部分,都沒能解決問題。
“排除一切不可能的原因,剩下的即使再不可能,那也是真相”,當(dāng)軟件沒有問題,那只能是硬件部分有問題了。于是我考慮這很可能是因?yàn)镕PGA引腳配置不對(duì)。
一開始tx_d引腳I/O電平標(biāo)準(zhǔn)配置為LVCMOS,考慮到RGMII接口為雙沿動(dòng)作,數(shù)據(jù)傳輸速率較高,可能LVCMOS無法滿足,因此參考了DDR3的設(shè)計(jì),改用SSTL電平。編譯之后重新做回環(huán)測(cè)試,UDP丟包率<1/1000,問題解決。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21803瀏覽量
606464 -
接口
+關(guān)注
關(guān)注
33文章
8720瀏覽量
152041 -
千兆以太網(wǎng)
+關(guān)注
關(guān)注
0文章
67瀏覽量
13928 -
UDP
+關(guān)注
關(guān)注
0文章
328瀏覽量
34062 -
RGMII
+關(guān)注
關(guān)注
0文章
28瀏覽量
12224
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于Xilinx FPGA的千兆以太網(wǎng)控制器的開發(fā)
![基于Xilinx <b class='flag-5'>FPGA</b>的<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>控制器的開發(fā)](https://file1.elecfans.com//web2/M00/A6/7E/wKgZomUMPhWAQnaoAABPXlBCgSk482.jpg)
簡談基于FPGA的千兆以太網(wǎng)
![簡談基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>](https://file.elecfans.com/web1/M00/A0/61/pIYBAF1D3jKAWxiSAABNlOPjz3A867.png)
【紫光同創(chuàng)國產(chǎn)FPGA教程】【第二十三章】千兆以太網(wǎng)傳輸實(shí)驗(yàn)
![【紫光同創(chuàng)國產(chǎn)<b class='flag-5'>FPGA</b>教程】【第二十三章】<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>傳輸實(shí)驗(yàn)](https://file.elecfans.com/web1/M00/E9/30/o4YBAGBtJe2AIha4AAGUwAmCtBg901.png)
如何使用Vitis自帶的LWIP模板進(jìn)行PS端千兆以太網(wǎng)TCP通信?
![如何使用Vitis自帶的LWIP模板進(jìn)行PS端<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>TCP通信?](https://file1.elecfans.com/web2/M00/DE/26/wKgZomYtuKiABLnnAAA3l3ALMRU080.png)
百兆以太網(wǎng)改千兆,要怎么修改程序?
簡談基于FPGA的千兆以太網(wǎng)
簡談基于FPGA的千兆以太網(wǎng)設(shè)計(jì)
基于FPGA的十端口千兆以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)
千兆以太網(wǎng)發(fā)展現(xiàn)狀 千兆以太網(wǎng)技術(shù)優(yōu)勢(shì)
![<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>發(fā)展現(xiàn)狀 <b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>技術(shù)優(yōu)勢(shì)](https://file.elecfans.com/web1/M00/E6/04/o4YBAGBWvWSARSdwAAC_H5atQ6c686.png)
如何快速分辨以太網(wǎng)與千兆以太網(wǎng)
![如何快速分辨<b class='flag-5'>以太網(wǎng)</b>與<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>](https://file.elecfans.com//web2/M00/41/2B/pYYBAGJ03cuAGJNOAABVzb8kU5o711.png)
FPGA如何為以太網(wǎng)和千兆以太網(wǎng)解決低功耗問題
![<b class='flag-5'>FPGA</b>如何為<b class='flag-5'>以太網(wǎng)</b>和<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>解決低功耗問題](https://file.elecfans.com/web2/M00/41/E3/poYBAGJ2NDyAT9kdAACr5dLtFh4455.png)
基于FPGA的UDP千兆以太網(wǎng)光通信
![基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b><b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>光通信](https://file1.elecfans.com/web2/M00/A1/02/wKgZomTwCEKAVn--AAEftC83BUs766.jpg)
基于FPGA的UDP萬兆光通信測(cè)試
![基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b>萬兆光通信測(cè)試](https://file1.elecfans.com/web2/M00/A2/AD/wKgaomTxn4aAY8hkAAItZ3Zuv_g474.jpg)
基于FPGA的UDP RGMII千兆以太網(wǎng)通信方案
![基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b> <b class='flag-5'>RGMII</b><b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>通信方案](https://file1.elecfans.com/web2/M00/A2/F5/wKgaomT1mYqABd8ZAAAeZkYyPeI069.jpg)
評(píng)論