FPGA 纯 Verilog 实现 2.5G UDP 协议栈
1、前言
目前 FPGA 实现 UDP 网络通信主要有两种方案:
- 使用 PHY 芯片实现物理层功能,UDP 协议栈部分使用 Verilog 代码直接实现。
- 使用 Xilinx 官方 IP 核实现物理层功能(如 1G/2.5G Ethernet PCS/PMA or SGMII),UDP 协议栈部分使用 Verilog 代码直接实现。
本设计采用 Xilinx 的 1G/2.5G Ethernet PCS/PMA or SGMII 方案实现物理层功能。
2、工程概述
本设计基于 1G/2.5G Ethernet PCS/PMA or SGMII 实现 2.5G UDP 以太网通信,支持电脑端网卡与 FPGA 开发板之间的双向通信。设计了 UDP 数据回环和网络测速两个功能。
UDP 数据回环功能
电脑端发送测试数据,通过网线连接到 FPGA 开发板的网口。差分网络数据进入 FPGA 高速收发器 BANK,调用 1G/2.5G Ethernet PCS/PMA or SGMII 方案实现物理层功能(高速串行接口到 GMII 接口的转换)。数据进入 UDP 协议栈解包,提取有效数据段后经过回环 FIFO 回灌到 UDP 协议栈组包,再经物理层转换输出至电脑端。电脑端操作系统 Socket 解包后显示,以此观察 UDP 数据回环的正确性。
网络测速功能
FPGA 自动循环产生从 0 开始的累加数作为 UDP 用户发送数据,每包数据长度为 1472。数据经 UDP 协议栈组包及物理层转换后发送到电脑端,通过资源管理器查看网卡通信速率。
本工程共移植了 14 套工程,覆盖多种 FPGA 型号及单核/双核架构。
3、详细设计方案
设计原理框图
设计包含高速收发器、PCS/PMA 模块、UDP/IP 协议栈及回环逻辑。
物理接口说明
本设计适用于以下两种物理接口:
- SFP 光口:FPGA 开发板无需网络 PHY 芯片,使用光口做 UDP 以太网通信。需配合 2.5G SFP 转 RJ45 电口实现与 PC 的网络连接。
- SGMII PHY 芯片:FPGA 开发板有网络 PHY 芯片(如 88E1111、DP83867ISRGZ、RTL8211B 等),且 PHY 为 SGMII 模式直连 FPGA 高速收发器 BANK,直接用网线即可连接。
1G/2.5G Ethernet PCS/PMA or SGMII 简介
该 IP 核实现了类似于网络 PHY 芯片的功能。
- 接收端:GT 资源解串 -> 弹性 Buffer -> 8b/10b 解码 -> PCS 接收同步器 -> GMII 总线输出。
- 发送端:GMII 输入 -> PCS 发送引擎 -> 8b/10b 编码 -> GT 串化输出。
配置说明
- 2.5G 配置:无 PHY 使用光口时配置为 2500BASEX;有 PHY 且为 SGMII 接口时配置为 2.5G SGMII 模式。
- 时钟要求:Xilinx 7 系列运行 1G 线速率时 GT 差分时钟必须为 125M,运行 2.5G 线速率时必须为 312.5M。UltraScale 和 UltraScale+ 系列对 GT 差分时钟无严格特性要求。
多路级联使用
多个 1G/2.5G Ethernet PCS/PMA or SGMII 的主从搭配使用可实现多光口网卡功能。主从级联使用时,多个 IP 核共享 1 路 GT BANK 参考时钟。
2.5G UDP 协议栈
由纯 Verilog 代码实现,具有动态 ARP、ICMP 功能,占用逻辑资源少,性能不错,代码有详细中文注释。
工程源码架构
提供 14 套工程源码,涵盖单路和双路 Ethernet 架构。
4、支持平台列表
本工程共移植了 14 套工程,具体如下:


