天天看點

Verilog實作千兆以太網傳輸

1

本實驗将實作 FPGA 晶片和 PC 之間進行千兆以太網資料通信, 通信協定采用 Ethernet  UDP 通信協定。 FPGA 通過 GMII 總線和開發闆上的 Gigabit PHY 晶片通信, Gigabit PHY晶片把資料通過網線發給 PC。在上次的實驗中,我們詳細講解了網絡傳輸的過程中如何對資料進行傳輸,以及資料傳輸的格式,這次實驗中,我們詳細講解如何使用Verilog語言來實作将UDP資料的發送。

以太網資料通信的示意圖如下:

Verilog實作千兆以太網傳輸

這裡我再展示資料傳輸的格式圖檔。

Verilog實作千兆以太網傳輸

  其中資料包括三個方面的内容:IPv4資料標頭,UDP標頭,和使用者資料。

IPv4資料標頭:

Verilog實作千兆以太網傳輸

UDP資料標頭。

Verilog實作千兆以太網傳輸

2

   在AX515/AX530開發闆我們采用了Realtek千兆GPHY晶片RTL8211E 來實作千兆以太網資料通信。當網口 Link 到千兆以太網時, FPGA 通過 GMII 總線和 PHY 晶片進行資料通信,當網口 Link 到百兆以太網時, PGA 通過 MII 總線和 PHY 晶片進行資料通信。 另外 FPGA 可以通過 MDI/MDIO 管理接口來配置或讀取 PHY 晶片内部的寄存器。

本實驗以千兆以太網 GMII 通信為例來設計 verilog 程式。整個Ethernet_test測試是一個頂層子產品,UDP發送子產品。我們要發送的資料為Hello World。

首先我們先實作UDP子產品。 UDP子產品包括UDP發送子產品和CRC校驗子產品。RTL電路示意圖:

Verilog實作千兆以太網傳輸

 Ipsend子產品是UDP發送子產品。各個引腳的解釋請看各個子產品的Verilog代碼。代碼在下面。UDP發送頂層子產品。

Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸

UDP發送資料子產品。

Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸

       UDP 發送子產品實作把 RAM 裡的資料組成 UDP IP 包格式通過 GMII 總線發給 PHY 晶片,PHY 晶片再把資料發送到開發闆的網口。

IP 資料包發送之前需要先發送 IP 資料包的標頭,IP 標頭由 8 個位元組的前導碼, 目标 MAC Address,源 MAC 位址和兩個位元組的 IP 包類型組成。前導碼是由 7 個 0x55, 1個 0xD5 位元組組成, 表示一個IP資料包傳輸的開始; 目标MAC Address為資料要發送對象的MAC位址,如果開發闆的網口是和您的 PC 機相連, 那目标 MAC Address的值為你 PC 機的 MAC 位址。源 MAC Address 是指開發闆本地的 MAC 位址。IP 包類型值為 0x0800。

發完 IP 標頭之後開始發送 IP 資料報首部,IP 資料報首部的格式我們在前面已經講過,接着發送 ram中的資料,最後發送 4 個位元組的 CRC32 的值。

CRC子產品我們不把代碼貼出來了,請到最後我提供的連結進行下載下傳。

Ethernet頂層測試子產品。

Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸
Verilog實作千兆以太網傳輸

 Ethernet頂層設計子產品是首先将發送的資料寫進ram中,此時ram作為一個緩存,每次發送資料的時候首先需要去讀取ram中的資料,将讀取ram中的資料讀入UDP子產品中,然後進行按照資料發送的格式進行發送,每次發送的一幀資料即為Hello World。即為12位元組。

3

實驗結果:

Verilog實作千兆以太網傳輸

   通過wireshark軟體我們抓取Ethernet網絡的資料,在wireshark抓包視窗我們可以看到開發闆(192.168.0.2)向PC網口(192.168.0.2)發來的資料包,這裡會顯示資料包的目标MAC, 源MAC,IP標頭和UDP包等資訊。

千兆以太網的資料傳輸速度非常快,而且是全雙工傳輸,通過環路測試,UDP 通信的資料速度可以達到 900Mbps 以上,非常适合高速資料傳輸的場合,比如視訊圖像傳輸,高速資料采集等等。

  注意:以太網的資料幀的傳輸有包長的要求, 一般在46~1500位元組。是以在發送以太網資料包的時候,資料幀的長度不能太短, 不然會導緻PC資料包發送而FPGA收不到資料包的情況。

  工程連結位址:連結:http://pan.baidu.com/s/1geWb771 密碼:64wf