本文介紹一個(gè)FPGA開(kāi)源項(xiàng)目:UDP RGMII千兆以太網(wǎng)通信。該項(xiàng)目在我之前的工作中主要是用于FPGA和電腦端之間進(jìn)行圖像數(shù)據(jù)傳輸。本文簡(jiǎn)要介紹一下該項(xiàng)目的千兆以太網(wǎng)通信方案、以太網(wǎng)IP核的使用以及Vivado工程源代碼結(jié)構(gòu)。
Vivado 的 Tri Mode Ethernet MAC IP核需要付費(fèi)才能使用,因此本文提供完整工程源碼。
01軟硬件平臺(tái)
- 軟件平臺(tái):Vivado 2017.4;
- 硬件平臺(tái):XC7K410TFFG900-2;
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;
- 三種速率模式
RGMII 接口適用于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)通信方案參考米聯(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 接口通過(guò)網(wǎng)線與上位機(jī)連接。
下圖為以太網(wǎng)數(shù)據(jù)環(huán)路傳輸測(cè)試方案,在電腦上通過(guò)網(wǎng)絡(luò)調(diào)試助手向FPGA發(fā)送任意小于1472字節(jié)長(zhǎng)度的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ù)跨時(shí)鐘域處理。
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)傳輸測(cè)試模塊;
- 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ù)位信號(hào) :上電后將復(fù)位信號(hào)拉高;
- FPGA RGMII輸出 I/O 口 電平標(biāo)準(zhǔn) :配置成 SSTL 電平標(biāo)準(zhǔn)。
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601232 -
千兆以太網(wǎng)
+關(guān)注
關(guān)注
0文章
66瀏覽量
13843 -
UDP
+關(guān)注
關(guān)注
0文章
322瀏覽量
33849 -
Vivado
+關(guān)注
關(guān)注
19文章
804瀏覽量
66222 -
RGMII
+關(guān)注
關(guān)注
0文章
27瀏覽量
12141
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論