本文介紹一個FPGA開源項(xiàng)目:UDP RGMII千兆以太網(wǎng)通信。該項(xiàng)目在我之前的工作中主要是用于FPGA和電腦端之間進(jìn)行圖像數(shù)據(jù)傳輸。本文簡要介紹一下該項(xiàng)目的千兆以太網(wǎng)通信方案、以太網(wǎng)IP核的使用以及Vivado工程源代碼結(jié)構(gòu)。
Vivado 的 Tri Mode Ethernet MAC IP核需要付費(fèi)才能使用,因此本文提供完整工程源碼。
01軟硬件平臺
- 軟件平臺:Vivado 2017.4;
- 硬件平臺:XC7K410TFFG900-2;
02RGMII接口
本設(shè)計(jì)采用 RGMII 接口的 88E1512 芯片。RGMII 接口的主要優(yōu)勢在于,它可以同時適用于1000M、100M、10M三種速率,并且接口占用引腳數(shù)較少。
RGMII 使用 4bit 數(shù)據(jù)接口采用上下沿 DDR(Double Data Rate)的方式在一個時鐘周期內(nèi)傳輸 8bit 數(shù)據(jù)信號,即上升沿發(fā)送或者接收數(shù)據(jù)的低4位[3:0],下降沿發(fā)送或者接收數(shù)據(jù)的高4位[7:4]。同理,使用 1bit 控制接口采用 DDR 的方式在一個時鐘周期內(nèi)傳輸 2bit 控制信號。
- 發(fā)送端:tx_clk,tx_d[3:0],tx_ctrl;
- 接收端:rx_clk,rx_d[3:0],rx_ctrl;

- 三種速率模式
RGMII 接口適用于1000M、100M、10M三種傳輸速率。
當(dāng)工作于1000M時,時鐘信號TXC和RXC均為 125MHz,4bit數(shù)據(jù)信號上下沿值均有效,控制信號上下沿值也均有效。
當(dāng)工作于100M時,時鐘信號TXC和RXC均為25MHz,4bit數(shù)據(jù)信號只有上升沿值[3:0]有效,相當(dāng)于此時數(shù)據(jù)信號切換為單沿SDR(Single Data Rata)4位輸模式??刂菩盘柸詾樯舷卵赜行?。
當(dāng)工作于10M時,時鐘信號TXC和RXC均為2.5MHz,數(shù)據(jù)信號和控制信號的使用和100M速率時完全相同。
03UDP通信方案
該以太網(wǎng)通信方案參考米聯(lián)客例程設(shè)計(jì),硬件接口采用RGMII,IP核調(diào)用Vivado 的 Tri Mode Ethernet MAC。通信方案如下圖所示,最上層為用戶邏輯模塊,用于處理和使用解析后的以太網(wǎng)通信數(shù)據(jù);uiudp_stack 模塊采用米聯(lián)客例程提供的協(xié)議棧網(wǎng)表文件;FPGA 以太網(wǎng)IP核采用Tri Mode Ethernet Mac;PHY芯片采用 88E1512;最后 RJ-45 接口通過網(wǎng)線與上位機(jī)連接。

下圖為以太網(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ù)據(jù)跨時鐘域處理。

04工程源碼結(jié)構(gòu)
下圖是該項(xiàng)目 Vivado 工程源碼結(jié)構(gòu):

其中,
- udp_transmit:UDP以太網(wǎng)數(shù)據(jù)收發(fā)模塊;
- loopback_test:UDP以太網(wǎng)數(shù)據(jù)回環(huán)傳輸測試模塊;
- tri_mode_ethernet_mac_0_axi_lite_sm:用于配置、讀取以太網(wǎng)IP核寄存器等。
05IP核參數(shù)配置
使用千兆通訊,因此將速率設(shè)為 1Gbps;

接口參數(shù)配置如下:

另外,有關(guān) UDP 協(xié)議棧 uiudp_stack 的詳細(xì)信息這里不再介紹,其pdf文檔和源碼一起提供,有需要的小伙伴可以自己去查閱。
06其它注意事項(xiàng)
- PHY芯片 復(fù)位信號 :上電后將復(fù)位信號拉高;
- FPGA RGMII輸出 I/O 口 電平標(biāo)準(zhǔn) :配置成 SSTL 電平標(biāo)準(zhǔn)。
-
FPGA
+關(guān)注
關(guān)注
1652文章
22225瀏覽量
628263 -
千兆以太網(wǎng)
+關(guān)注
關(guān)注
0文章
77瀏覽量
14196 -
UDP
+關(guān)注
關(guān)注
0文章
331瀏覽量
35137 -
Vivado
+關(guān)注
關(guān)注
19文章
844瀏覽量
70324 -
RGMII
+關(guān)注
關(guān)注
0文章
31瀏覽量
12631
發(fā)布評論請先 登錄
【紫光同創(chuàng)國產(chǎn)FPGA教程】【第二十三章】千兆以太網(wǎng)傳輸實(shí)驗(yàn)
如何使用Vitis自帶的LWIP模板進(jìn)行PS端千兆以太網(wǎng)TCP通信?
基于AlteraFPGA的千兆以太網(wǎng)實(shí)現(xiàn)方案
PC與FPGA的以太網(wǎng)通信
DE2-115開發(fā)板以太網(wǎng)通信問題
簡談基于FPGA的千兆以太網(wǎng)
以太網(wǎng)通訊控制儀器,使用UDP協(xié)議,儀器無響應(yīng)
簡談基于FPGA的千兆以太網(wǎng)設(shè)計(jì)
Xilinx KU系列三速以太網(wǎng)IP核RGMII時序約束方法
基于FPGA的UDP千兆以太網(wǎng)光通信
基于FPGA的UDP萬兆光通信測試
基于FPGA的UDP RGMII千兆以太網(wǎng)設(shè)計(jì)
解決以太網(wǎng)RGMII通信的電源時序難題

基于FPGA的UDP RGMII千兆以太網(wǎng)通信方案
評論