FPGA纯verilog实现 2.5G UDP协议栈,基于1G/2.5G Ethernet PCS/PMA or SGMII,提供14套工程源码和技术支持

目录

FPGA纯verilog实现 2.5G UDP协议栈,基于1G/2.5G Ethernet PCS/PMA or SGMII,提供14套工程源码和技术支持

FPGA-2.5G-UDP

1、前言

目前网上的FPGA实现UDP基本生态如下:

1:verilog编写的精简版udp收发器,不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代码谁敢用?

2:带ping功能的完整版udp收发器,代码优秀也好用,但基本不开源,不会提供源码给你,这样的代码也有不足,那就是出了问题不知道怎么排查,毕竟你没有源码,无可奈何;

FPGA实现UDP网络通信现状如下:

Xilinx系列FPGA实现UDP网络通信主要有两种方案,其一是使用PHY芯片实现物理层功能,比如常见的RTL8211、B50610等芯片,UDP协议栈部分很简单,可使用verilog代码直接实现;其二是使用Xilinx官方的IP核实现物理层功能,比如常见的1G/2.5G Ethernet PCS/PMA or SGMII、AXI 1G/2.5G Ethernet Subsystem、10G/25G Ethernet Subsystem、10G Ethernet Subsystem等,UDP协议栈部分很简单,可使用verilog代码直接实现;本设计使用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能;

工程概述

本设计FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现2.5G UDP以太网通信,能实现电脑端网卡与FPGA开发板之间的双向通信,为了方便测试,设计了UDP数据回环和网络测速两个功能;

UDP数据回环功能如下:

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

网络测速功能如下:

PGA自动循环产生从0开始的累加数作为UDP用户发送数据,发送数据然后进入UDP协议栈实现以太网帧组包,即加上各种头部信息和校验,每包数据长度为1472;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;然后打开电脑端的资源管理器,查看网卡,即可看到通信速率;

针对目前市面上主流的FPGA应用,本工程共移植了14套工程,具体如下:

现对上述14套工程源码解释如下:

工程源码1

开发板FPGA型号为Xilinx--Artix7--35T--xc7a35tfgg484-2;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用1路1G/2.5G Ethernet PCS/PMA or SGMII IP核,使用1路SFP光口,在FPGA内部实现了1路2.5G UDP网卡,适用于Xilinx 7系列FPGA实现以太网应用;

工程源码2

开发板FPGA型号为Xilinx--Artix7--35T--xc7a35tfgg484-2;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用2路1G/2.5G Ethernet PCS/PMA or SGMII IP核,形成1主+1从的级联使用,2路IP核共享GT BANK参考时钟,使用2路SFP光口,在FPGA内部实现了2路2.5G UDP网卡,以此技术方案可扩展至多路,适用于Xilinx 7系列FPGA实现多路以太网应用;

工程源码3

开发板FPGA型号为Xilinx--Kintex7--325T-xc7k325tffg900-2;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用1路1G/2.5G Ethernet PCS/PMA or SGMII IP核,使用1路SFP光口,在FPGA内部实现了1路2.5G UDP网卡,适用于Xilinx 7系列FPGA实现以太网应用;

工程源码4

开发板FPGA型号为Xilinx--Kintex7--325T-xc7k325tffg900-2;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用2路1G/2.5G Ethernet PCS/PMA or SGMII IP核,形成1主+1从的级联使用,2路IP核共享GT BANK参考时钟,使用2路SFP光口,在FPGA内部实现了2路2.5G UDP网卡,以此技术方案可扩展至多路,适用于Xilinx 7系列FPGA实现多路以太网应用;

工程源码5

开发板FPGA型号为Xilinx-->Zynq7100---xc7z100ffg900-2;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用1路1G/2.5G Ethernet PCS/PMA or SGMII IP核,使用1路SFP光口,在FPGA内部实现了1路2.5G UDP网卡,适用于Xilinx Zynq7000系列FPGA实现以太网应用;

工程源码6

开发板FPGA型号为Xilinx-->Zynq7100---xc7z100ffg900-2;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用2路1G/2.5G Ethernet PCS/PMA or SGMII IP核,形成1主+1从的级联使用,2路IP核共享GT BANK参考时钟,使用2路SFP光口,在FPGA内部实现了2路2.5G UDP网卡,以此技术方案可扩展至多路,适用于Xilinx Zynq7000系列FPGA实现多路以太网应用;

工程源码7

开发板FPGA型号为Xilinx--Virtex7--xc7vx690tffg1761-3;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用1路1G/2.5G Ethernet PCS/PMA or SGMII IP核,使用1路SFP光口,在FPGA内部实现了1路2.5G UDP网卡,适用于Xilinx 7系列FPGA实现以太网应用;

工程源码8

开发板FPGA型号为Xilinx--Virtex7--xc7vx690tffg1761-3;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用2路1G/2.5G Ethernet PCS/PMA or SGMII IP核,形成1主+1从的级联使用,2路IP核共享GT BANK参考时钟,使用2路SFP光口,在FPGA内部实现了2路2.5G UDP网卡,以此技术方案可扩展至多路,适用于Xilinx 7系列FPGA实现多路以太网应用;

工程源码9

开发板FPGA型号为Xilinx-- Kintex UltraScale--xcku060-ffva1156-2-i;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用1路1G/2.5G Ethernet PCS/PMA or SGMII IP核,使用1路SFP光口,在FPGA内部实现了1路2.5G UDP网卡,适用于Xilinx UltraScale系列FPGA实现以太网应用;

工程源码10

开发板FPGA型号为Xilinx-- Kintex UltraScale--xcku060-ffva1156-2-i;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用2路1G/2.5G Ethernet PCS/PMA or SGMII IP核,形成1主+1从的级联使用,2路IP核共享GT BANK参考时钟,使用2路SFP光口,在FPGA内部实现了2路2.5G UDP网卡,以此技术方案可扩展至多路,适用于Xilinx UltraScale系列FPGA实现多路以太网应用;

工程源码11

开发板FPGA型号为Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用1路1G/2.5G Ethernet PCS/PMA or SGMII IP核,使用1路SFP光口,在FPGA内部实现了1路2.5G UDP网卡,适用于Xilinx UltraScale+系列FPGA实现以太网应用;

工程源码12

开发板FPGA型号为Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用2路1G/2.5G Ethernet PCS/PMA or SGMII IP核,形成1主+1从的级联使用,2路IP核共享GT BANK参考时钟,使用2路SFP光口,在FPGA内部实现了2路2.5G UDP网卡,以此技术方案可扩展至多路,适用于Xilinx UltraScale+系列FPGA实现多路以太网应用;

工程源码13

开发板FPGA型号为Xilinx-- Zynq UltraScale±xczu9eg-ffvb1156-2-i;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用1路1G/2.5G Ethernet PCS/PMA or SGMII IP核,使用1路SFP光口,在FPGA内部实现了1路2.5G UDP网卡,适用于Xilinx UltraScale+MPSoCs系列FPGA实现以太网应用;

工程源码14

开发板FPGA型号为Xilinx-- Zynq UltraScale±xczu9eg-ffvb1156-2-i;

电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的SFP光口或PHY芯片后进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现高速串行接口到GMII接口的转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入高速收发器BANK,调用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII方案实现物理层功能,即实现GMII接口到高速串行接口的转换;然后数据进入板载SFP光口或PHY芯片输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

本设计调用2路1G/2.5G Ethernet PCS/PMA or SGMII IP核,形成1主+1从的级联使用,2路IP核共享GT BANK参考时钟,使用2路SFP光口,在FPGA内部实现了2路2.5G UDP网卡,以此技术方案可扩展至多路,适用于Xilinx UltraScale+MPSoCs系列FPGA实现多路以太网应用;

本文详细描述了FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现2.5G UDP以太网通信的设计方案,经过反复大量测试稳定可靠,可在项目中直接移植使用,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字通信领域;

提供完整的、跑通的工程源码和技术支持;

工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目

其实一直有朋友反馈,说我的博客文章太多了,乱花渐欲迷人,自己看得一头雾水,不方便快速定位找到自己想要的项目,所以本博文置顶,列出我目前已有的所有项目,并给出总目录,每个项目的文章链接,当然,本博文实时更新。。。以下是博客地址:
点击直接前往

我这里已有的以太网方案

目前我这里有大量UDP协议的工程源码,包括UDP数据回环,视频传输,AD采集传输等,也有TCP协议的工程,还有RDMA的NIC 10G 25G 100G网卡工程源码,对网络通信有需求的兄弟可以去看看:
直接点击前往

本设计用到的UDP协议栈在RGMII接口PHY芯片上的应用方案

本设计用Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII实现物理层,或者针对于直连FPGA GT高速收发器BANK的SGMII接口的PHY,其中用到的UDP协议栈,在RGMII接口的PHY芯片上也有应用,之前写过一篇博客,对RGMII接口的PHY芯片上使用本博客UDP协议栈有需求的兄弟可以去看看:
直接点击前往

本设计用在1G/2.5G Ethernet PCS/PMA or SGMII中的1G应用

本设计基于Xilinx的1G/2.5G Ethernet PCS/PMA or SGMII实现2.5G UDP协议栈,但1G/2.5G Ethernet PCS/PMA or SGMII也可以配置为1G模式,对1G模式有应用需求的用户,可以参考我之前的博客,链接如下:
直接点击前往

3、详细设计方案

设计原理框图

设计原理框图如下:

电脑端网络调试助手

电脑端网络调试助手很简单,几乎干这一行的都用过,为Windows版本.exe文件,无需安装直接使用,界面如下:

这个软件使用教程可自行百度,如果连这个都不会用,说明。。。

PHY(SGMII)或SFP光口转RJ45电口

在准备SFP光口转RJ45电口前,请确认你的电脑网卡支持2.5G速率,如下:

本设计适用于以下两种物理接口:

1:、FPGA开发板无需网络PHY芯片,而使用光口做UDP以太网通信,此时的物理接口为SFP光口,进而需要SFP光口转RJ45电口实现与PC的网络连接,SFP光口转RJ45电口某宝几十块钱很便宜,大概长这样:

光电转换口必须要支持2.5G,如下:

2、FPGA开发板有网络PHY芯片,且PHY必须为SGMII模式且必须连接到了FPGA高速收发器BANK,典型的PHY芯片有88E1111、DP83867ISRGZ、RTL8211B等型号,此时直接用网线即可实现与PC的网络连接。

1G/2.5G Ethernet PCS/PMA or SGMII 简介

1G/2.5G Ethernet PCS/PMA or SGMII实现了类似于网络PHY芯片的功能,其功能框图如下:

接收端:

数据首先经过GT资源解串,将串行数据解为并行数据;然后经过弹性Buffer做数据缓冲处理,主要是为了去频偏,使板与板之间的数据稳定,然后进行8b/10b解码,恢复正常数据;然后经过PCS接收同步器,对数据进行跨时钟处理,同步到GMII时序下;最后将数据放入GMII总线下输出;

发送端:

发送端则简单得多,输入时序为GMII;然后进入PCS发送引擎;然后对数据进行8b/10b编码;最后放入GT串化后输出;

1G/2.5G Ethernet PCS/PMA or SGMII 配置

1G/2.5G Ethernet PCS/PMA or SGMII配置为2.5G,其与MAC的接口为GMII,配置如下:

核心配置如下:

无PHY,使用光口做网络通信时,配置为2500BASEX;

有PHY、且为SGMII接口、且直连FPGA 高速收发器BANK时,配置为2.5G SGMII模式;

1G/2.5G Ethernet PCS/PMA or SGMII可运行于1G和2.5G线速率,对GT时钟有严格研究,按照官方数据手册,对于Xilinx 7系列FPGA而言,运行1G线速率时,GT差分时钟必须为125M,运行2.5G线速率时,GT差分时钟必须为312.5M,如下:

对于Xilinx UltraScale和UltraScale+系列FPGA而言,无论配置为1G或2.5G模式,GT差分时钟没有特性要求,可以使125M或者156.25M等等。

多个1G/2.5G Ethernet PCS/PMA or SGMII 主从级联使用

多个1G/2.5G Ethernet PCS/PMA or SGMII 的主从搭配使用的应用场景是FPGA开发板充当多光口的网卡使用,即一个FPGA挂载多个光口,每一个光口相当于一个独立的网卡,有独立的IP地址和MAC地址,类似于交换机;主从搭配使用框架如下:

主从级联使用时,多个1G/2.5G Ethernet PCS/PMA or SGMIIIP核共享1路GT BANK参考时钟;

2.5G UDP协议栈

2.5G UDP协议栈是以太网的协议层,由纯verilog代码实现,具有动态ARP、ICMP功能,占用逻辑资源少,性能不错,设计精简等特点,代码有详细中文注释,这里就不过多赘述,模块代码架构如下:

2.5G UDP数据回环+测速

2.5G UDP数据回环使用FIFO缓存用户接收数据后转发给发送接口,功能简单,不多赘述

测速则是FPGA向PC端单向发送数据,PGA自动循环产生从0开始的累加数作为UDP用户发送数据

代码架构如下:

IP地址、端口号的修改

工程留出了IP地址、端口号的修改端口供用户自由修改,位置在顶层模块如下:

多路网卡工程时如下:

工程源码架构

提供14套工程源码,以工程源码1为例,工程源码架构如下,此工程仅用1路Ethernet:

提供14套工程源码,以工程源码2为例,工程源码架构如下,此工程使用2路Ethernet:

4、vivado工程1详解:Artix7-35T,单核2.5G Ethernet架构

开发板FPGA型号:Xilinx-->Artix7-->xc7a35tfgg484-2;

FPGA开发环境:Vivado2019.1;

以太网物理接口:1路SFP光口;

以太网物理层方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII IP核;

使用高速收发器类型:GTP;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

5、vivado工程2详解:Artix7-35T,双核2.5G Ethernet主从级联架构

开发板FPGA型号:Xilinx-->Artix7-->xc7a35tfgg484-2;

FPGA开发环境:Vivado2019.1;

以太网物理接口:2路SFP光口;

以太网物理层方案:2路1G/2.5G Ethernet PCS/PMA or SGMII IP核主从级联方案;

使用高速收发器类型:GTP;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

6、vivado工程3详解:Kintex7-325T,单核2.5G Ethernet架构

开发板FPGA型号:Xilinx-->Kintex7-->xc7k325tffg900-2;

FPGA开发环境:Vivado2019.1;

以太网物理接口:1路SFP光口;

以太网物理层方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII IP核;

使用高速收发器类型:GTX;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

7、vivado工程4详解:Kintex7-325T,双核2.5G Ethernet主从级联架构

开发板FPGA型号:Xilinx-->Kintex7-->xc7k325tffg900-2;

FPGA开发环境:Vivado2019.1;

以太网物理接口:2路SFP光口;

以太网物理层方案:2路1G/2.5G Ethernet PCS/PMA or SGMII IP核主从级联方案;

使用高速收发器类型:GTX;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

8、vivado工程5详解:Zynq7100,单核2.5G Ethernet架构

开发板FPGA型号:Xilinx--Zynq7100--xc7z100ffg900-2;

FPGA开发环境:Vivado2019.1;

以太网物理接口:1路SFP光口;

以太网物理层方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII IP核;

使用高速收发器类型:GTX;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

9、vivado工程6详解:Zynq7100,双核2.5G Ethernet主从级联架构

开发板FPGA型号:Xilinx--Zynq7100--xc7z100ffg900-2;

FPGA开发环境:Vivado2019.1;

以太网物理接口:2路SFP光口;

以太网物理层方案:2路1G/2.5G Ethernet PCS/PMA or SGMII IP核主从级联方案;

使用高速收发器类型:GTX;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

10、vivado工程7详解:Virtex7-690T,单核2.5G Ethernet架构

开发板FPGA型号:Xilinx--Virtex7--xc7vx690tffg1761-3;

FPGA开发环境:Vivado2019.1;

以太网物理接口:1路SFP光口;

以太网物理层方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII IP核;

使用高速收发器类型:GTH;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

11、vivado工程8详解:Virtex7-690T,双核2.5G Ethernet主从级联架构

开发板FPGA型号:Xilinx--Virtex7--xc7vx690tffg1761-3;

FPGA开发环境:Vivado2019.1;

以太网物理接口:2路SFP光口;

以太网物理层方案:2路1G/2.5G Ethernet PCS/PMA or SGMII IP核主从级联方案;

使用高速收发器类型:GTH;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

12、vivado工程9详解:KU060,单核2.5G Ethernet架构

开发板FPGA型号:Xilinx-- Kintex UltraScale--xcku060-ffva1156-2-i;

FPGA开发环境:Vivado2019.1;

以太网物理接口:1路SFP光口;

以太网物理层方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII IP核;

使用高速收发器类型:GTH;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

13、vivado工程10详解:KU060,双核2.5G Ethernet主从级联架构

开发板FPGA型号:Xilinx-- Kintex UltraScale--xcku060-ffva1156-2-i;

FPGA开发环境:Vivado2019.1;

以太网物理接口:2路SFP光口;

以太网物理层方案:2路1G/2.5G Ethernet PCS/PMA or SGMII IP核主从级联方案;

使用高速收发器类型:GTH;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

14、vivado工程11详解:KU5P,单核2.5G Ethernet架构

开发板FPGA型号:Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;

FPGA开发环境:Vivado2019.1;

以太网物理接口:1路SFP光口;

以太网物理层方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII IP核;

使用高速收发器类型:GTY;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

15、vivado工程12详解:KU5P,双核2.5G Ethernet主从级联架构

开发板FPGA型号:Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;

FPGA开发环境:Vivado2019.1;

以太网物理接口:2路SFP光口;

以太网物理层方案:2路1G/2.5G Ethernet PCS/PMA or SGMII IP核主从级联方案;

使用高速收发器类型:GTY;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

15、vivado工程13详解:ZU9EG,单核2.5G Ethernet架构

开发板FPGA型号:Xilinx-- Zynq UltraScale±xczu9eg-ffvb1156-2-i;

FPGA开发环境:Vivado2019.1;

以太网物理接口:1路SFP光口;

以太网物理层方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII IP核;

使用高速收发器类型:GTH;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

16、vivado工程14详解:ZU9EG,双核2.5G Ethernet主从级联架构

开发板FPGA型号:Xilinx-- Zynq UltraScale±xczu9eg-ffvb1156-2-i;

FPGA开发环境:Vivado2019.1;

以太网物理接口:2路SFP光口;

以太网物理层方案:2路1G/2.5G Ethernet PCS/PMA or SGMII IP核主从级联方案;

使用高速收发器类型:GTH;

以太网MAC方案:纯verilog方案;

以太网协议层方案:纯verilog的UDP/IP协议栈,2.5G 网速率;

以太网测试功能:数据收发回环测试+FPGA向PC单发测速;

工程目的:让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现UDP以太网通信的设计能力,以便能够移植和设计自己的项目;

工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

17、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;

2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件-->另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;

3:如果你的vivado版本高于本工程vivado版本,解决如下:

打开工程后会发现IP都被锁住了,如下:

此时需要升级IP,操作如下:

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:


更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;

2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;

3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

18、上板调试验证并演示

准备工作

试验需要准备以下设备:

FPGA开发板,可以自行购买,也可以找本博主购买同款开发板;

测试电脑;

2.5GSFP转RJ45电口,2.5G网线;

网络调试助手;

以工程源码1的开发板为例进行上板调试;

连接如下:

然后将电脑端IP地址设置为如下:

然后下载bit或者固化bin文件,即可开始测试;

ping测试

打开电脑CMD,输入ping指令;

单次ping测试如下:

连续ping测试如下:

ARP测试

打开电脑CMD,输入ARP指令;如下:

UDP数据回环测试

打开电脑端网络调试助手,测试如下:

网络测速

首先关闭网络调试助手;

然后配置电脑网卡,开启巨型帧之类的,把网卡配置为最佳性能;

然后打开vivado加载的VIO,然后将VIO设置为1,开启数据发送,如下:

然后在电脑的任务栏右击鼠标-->任务管理器-->性能,找到网卡,如下:

注意,这个测速只代表可能的最高的速度,不代表电脑真实的不丢包速度,UDP 的点到点不丢包速度和电脑的网卡、CPU 速度、内存速度、操作系统都有关系。。。

综合测试效果演示

综合测试效果演示如下:

FPGA-2.5G-UDP

19、福利:工程代码的获取

代码太大,无法邮箱发送,以某度网盘链接方式发送,

资料获取方式:私,或者文章末尾的V名片。

网盘资料如下:

此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:

相关推荐
脑极体2 小时前
从电网守护到全运接力,5G-A机器人的破壁之旅
5g·机器人
奋斗的牛马9 小时前
硬件基础知识-电容(一)
单片机·嵌入式硬件·学习·fpga开发·信息与通信
安卓机器9 小时前
rom定制系列------红米note10 5G版camellia_OS系统安卓14批量线刷双版root 原生等【二】
5g·红米note10第三方系统
li星野10 小时前
打工人日报#20251110
fpga开发
焦糖码奇朵、11 小时前
移动通信网络建设-实验3:5G建设方案规划设计
5g·信息与通信·射频工程·基带工程
icy、泡芙11 小时前
移远 5G RG255AA-CN 调试
linux·单片机·5g
焦糖码奇朵、11 小时前
移动通信网络建设-实验2:5G站点选型与设备部署
网络·数据库·人工智能·5g·信号处理·基带工程
此生只爱蛋12 小时前
【Linux】Socket编程预备及UDP
linux·网络·udp
奔跑吧邓邓子12 小时前
【C语言实战(73)】深入C语言网络编程:UDP与TCP的实战对决
c语言·udp·网络编程·tcp·开发实战