目录
- 1、前言
- 2、相关方案推荐
- 3、工程详细设计方案
- 4、vivado工程源码1详解-->Artix7-35T,RTL8211E做PHY
- 5、vivado工程源码2详解-->Artix7-35T,KSZ9031做PHY
- 6、vivado工程源码3详解-->Artix7-100T,B50610做PHY
- 7、vivado工程源码4详解-->Kintex7-325T,B50610做PHY
- 8、vivado工程源码5详解-->Kintex7-325T,RTL8211F做PHY
- 9、vivado工程源码6详解-->Zynq7020,B50610做PHY
- 10、vivado工程源码7详解-->Zynq7020,KSZ9031做PHY
- 11、vivado工程源码8详解-->Zynq7100,RTL8211E做PHY
- 12、vivado工程源码9详解-->KU060,RTL8211F做PHY
- 13、vivado工程源码10详解-->KU3P,RTL8211F做PHY
- 14、vivado工程源码11详解-->ZU4EV,RTL8211F做PHY
- 15、工程移植说明
- 16、上板调试验证并演示
- 17、工程代码的获取
FPGA基于Tri Mode Ethernet MAC实现UDP网络通信,提供11套工程源码和技术支持
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代码直接实现;本设计使用PHY芯片方案实现物理层功能;
工程概述
本设计的核心是调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换;
本设计能实现电脑端网卡与FPGA开发板之间的双向通信,为了方便测试,设计了UDP数据回环和网络测速两个功能;
UDP数据回环功能如下:
电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的PHY芯片实现以太网物理层功能,将差分数据转换为并行RGMII接口数据;再调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,即将RGMII接口数据转换为AXI4-Stream接口数据;然后MAC数据经过数据缓冲FIFO组实现数据位宽转换和跨时钟域转换;然后数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,即将AXI4-Stream接口数据转换为RGMII接口数据;然后数据进入板载PHY芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;
网络测速功能如下:
PGA自动循环产生从0开始的累加数作为UDP发送数据,发送数据然后进入UDP协议栈实现以太网帧组包,即加上各种头部信息和校验,每包数据长度为1472;然后数据进入Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,即将AXI4-Stream接口数据转换为RGMII接口数据;然后数据进入板载PHY芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端;然后打开电脑端的资源管理器,查看网卡,即可看到通信速率;
针对目前市面上主流的FPGA和PHY芯片信号,本工程共移植了11套工程,具体如下:
现对上述11套工程源码做如下解释,方便读者理解:
工程源码1
开发板FPGA型号为Xilinx–>Artix7-35T–xc7a35tfgg484-2;板载PHY芯片型号为RTL8211E,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx 7系列FPGA;
工程源码2
开发板FPGA型号为Xilinx–>Artix7-35T–xc7a35tfgg484-2;板载PHY芯片型号为KSZ9031,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx 7系列FPGA;
工程源码3
开发板FPGA型号为Xilinx–>Artix7-100T–xc7a100tfgg484-2;板载PHY芯片型号为B50610,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx 7系列FPGA;
工程源码4
开发板FPGA型号为Xilinx–>Kintex7-325T–xc7k325tffg676-2;板载PHY芯片型号为B50610,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx 7系列FPGA;
工程源码5
开发板FPGA型号为Xilinx–>Kintex7-325T–xc7k325tffg900-2;板载PHY芯片型号为RTL8211F,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx 7系列FPGA;
工程源码6
开发板FPGA型号为Xilinx–>Zynq7020—xc7z020clg400-2;板载PHY芯片型号为B50610,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx Zynq7000系列FPGA;
工程源码7
开发板FPGA型号为Xilinx–>Zynq7020—xc7z020clg400-2;板载PHY芯片型号为KSZ9031,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx Zynq7000系列FPGA;
工程源码8
开发板FPGA型号为Xilinx–>Zynq7100—xc7z100ffg900-2;板载PHY芯片型号为KSZ9031,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx Zynq7000系列FPGA;
工程源码9
开发板FPGA型号为Xilinx–>Kintex UltraScale–xcku060-ffva1156-2-i;板载PHY芯片型号为RTL8211F,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx UltraScale系列FPGA;
工程源码10
开发板FPGA型号为Xilinx–>Kintex UltraScale±-xcku3p-ffva676-2-i;板载PHY芯片型号为RTL8211F,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx UltraScale+系列FPGA;
工程源码11
开发板FPGA型号为Xilinx- Zynq UltraScale+MPSoCs–xczu4ev-sfvc784-2-i;板载PHY芯片型号为RTL8211F,PHY工作于延时模式,输出RGMII接口数据,调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换,以太网传输层为千兆UDP协议,可实现基于FPGA的UDP网络通信,该工程适用于Xilinx UltraScale+MPSoCs系列FPGA;
本文详细描述了FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
免责声明
本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。
2、相关方案推荐
我已有的PCIE方案
我的主页有PCIE通信专栏,该专栏基于XDMA的轮询模式实现与QT上位机的数据交互,既有基于RIFFA实现的PCIE方案,也有基于XDMA实现的PCIE方案;既有简单的数据交互、测速,也有应用级别的图像采集传输,以下是专栏地址:
点击直接前往
此外,我的主页有中断模式的PCIE通信专栏,该专栏基于XDMA的中断模式实现与QT上位机的数据交互,以下是专栏地址:
点击直接前往
此外,还有基于RIFFA架构的PCIE通信专栏,以下是专栏地址:
点击直接前往
我这里已有的以太网方案
目前我这里有大量UDP协议的工程源码,包括UDP数据回环,视频传输,AD采集传输等,也有TCP协议的工程,还有RDMA的NIC 10G 25G 100G网卡工程源码,对网络通信有需求的兄弟可以去看看:
直接点击前往
其中千兆TCP协议的工程博客如下:
直接点击前往
3、工程详细设计方案
工程设计原理框图
工程设计原理框图如下:
电脑端网络调试助手
电脑端网络调试助手很简单,几乎干这一行的都用过,为Windows版本.exe文件,无需安装直接使用,界面如下:
这个软件使用教程可自行百度,如果连这个都不会用,说明。。。
PHY芯片
本例程提供11套vivado工程源码,分别用到了RTL8211、KSZ9031、B50610等市面上主流的PHY型号,通过这些型号PHY的使用,你将能学会其他型号PHY的使用,因为很多都是兼容的,比如RTL8211兼容YT8531,B50610兼容88E1518等;此外,还提供了PHY的参考原理图,一并放在了资料包中;
Tri Mode Ethernet MAC 使用教程
本设计的核心是调用Xilinx的Tri Mode Ethernet MAC IP核实现以太网物理层的数据接口转换;所以重点讲讲Tri Mode Ethernet MAC这个IP,IP调用如下:
Tri Mode Ethernet MAC并不能直接使用,而是需要配合对应的PHY芯片的RGMII时序图做针对性修改,需要修改IP内部源码,这部分操作比较复杂,我专门写了《Tri Mode Ethernet MAC移植使用教程》文档,并放在了资料包中;
此外,Tri Mode Ethernet MAC还需要AXI4-Lite接口的配置才能工作,工程中如下:
MAC数据缓冲FIFO组
这里对代码中用到的数据缓冲FIFO组做如下解释:
由于 UDP IP 协议栈的 AXI-Stream 数据接口位宽为 64bit,而 Tri Mode Ethernet MAC 的 AXI-Stream数据接口位宽为 8bit。因此,要将 UDP IP 协议栈与 Tri Mode Ethernet MAC 之间通过 AXI-Stream 接口互联,需要进行时钟域和数据位宽的转换。实现方案如下图所示:
收发路径(本设计只用到了发送)都使用了2个AXI-Stream DATA FIFO,通过其中1个FIFO实现异步时钟域的转换,1个FIFO实
现数据缓冲和同步Packet mode功能;由于千兆速率下Tri Mode Ethernet MAC的AXI-Stream数据接口同步时钟信号为125MHz,此时,UDP协议栈64bit的AXI-Stream数据接口同步时钟信号应该为125MHz/(64/8)=15.625MHz,因此,异步
AXI-Stream DATA FIFO两端的时钟分别为125MHz(8bit),15.625MHz(64bit);UDP IP协议栈的AXI-Stream接口经过FIFO时钟域转换后,还需要进行数据数据位宽转换,数据位宽的转换通过AXI4-Stream Data Width Converter完成,在接收路径中,进行 8bit 到 64bit 的转换;在发送路径中,进行 64bit 到 8bit 的转换;MAC数据缓冲FIFO组代码架构如下:
UDP协议栈
本UDP协议栈方案需配合Xilinx的Tri Mode Ethernet MAC三速网IP一起使用,使用UDP协议栈网表文件
,虽看不见源码
但可正常实现UDP通信,该协议栈目前并不开源
,只提供网表文件,但不影响使用,该协议栈带有用户接口,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,非常简单;
协议栈架构如下:
协议栈性能表现如下:
1:支持 UDP 接收校验和检验功能,暂不支持 UDP 发送校验和生成;
2:支持 IP 首部校验和的生成和校验,同时支持 ICMP 协议中的 PING 功能,可接收并响应同一个子网内部设备的 PING 请求;
3:可自动发起或响应同一个子网内设备的 ARP 请求,ARP 收发完全自适应。ARP 表可保存同一个子网内部256 个 IP 和 MAC 地址对;
4:支持 ARP 超时机制,可检测所需发送数据包的目的 IP 地址是否可达;
5:协议栈发送带宽利用率可达 93%,高发送带宽下,内部仲裁机制保证 PING 和 ARP 功能不受任何影响;
6:发送过程不会造成丢包;
7:提供64bit位宽AXI4-Stream形式的MAC接口,可与Xilinx官方的千兆以太网IP核Tri Mode Ethernet MAC,以及万兆以太网 IP 核 10 Gigabit Ethernet Subsystem、10 Gigabit Ethernet MAC 配合使用;
有了此协议栈,我们无需关心复杂的UDP协议的实现了,直接调用接口即可使用。。。
本UDP协议栈用户接口发送时序如下:
本UDP协议栈用户接口接收时序如下:
UDP用户数据测试模块
UDP用户数据测试模块集成了UDP数据回环和网络测速功能,通过顶层参数选择,源码架构如下:
UDP用户数据测试模块顶层接口如下:
功能选择如下:
parameter SPEED_TEST_EN = 0 ;使用UDP数据回环功能;
parameter SPEED_TEST_EN = 1 ;使用网络测速测速;
UDP数据回环功能:
将接收数据送入缓冲FIFO,并通知UDP协议栈将数据读出,即形成发送=接收的自回环功能;该功能的作用是配合网络调试助手进行数据收发测试、数据丢包测试、数据正确性测试等;
网络测速功能:
FPGA自动循环向UDP协议栈发送累加的数据,数据内容从0开始累加,数据包长为1472,即形成连续发送数据功能;该功能的作用是配合PC端测试网络极限速率,打开电脑端的资源管理器,查看网卡,即可看到通信速率;
IP地址、端口号的修改
工程留出了IP地址、端口号的修改端口供用户自由修改,位置在顶层模块如下:
工程源码架构
提供11套工程源码,以工程源码1为例,综合后的工程源码架构如下:
4、vivado工程源码1详解–>Artix7-35T,RTL8211E做PHY
开发板FPGA型号:Xilinx–Artix7–xc7a100tfgg484-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:RTL8211E芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
5、vivado工程源码2详解–>Artix7-35T,KSZ9031做PHY
开发板FPGA型号:Xilinx–Artix7–xc7a100tfgg484-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:KSZ9031芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
6、vivado工程源码3详解–>Artix7-100T,B50610做PHY
开发板FPGA型号:Xilinx–Artix7–xc7a100tfgg484-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:B50610芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
7、vivado工程源码4详解–>Kintex7-325T,B50610做PHY
开发板FPGA型号:Xilinx–>Kintex7-325T–xc7k325tffg676-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:B50610芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
8、vivado工程源码5详解–>Kintex7-325T,RTL8211F做PHY
开发板FPGA型号:Xilinx–>Kintex7-325T–xc7k325tffg900-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:RTL8211F芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
9、vivado工程源码6详解–>Zynq7020,B50610做PHY
开发板FPGA型号:Xilinx–>Zynq7020—xc7z020clg400-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:B50610芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
10、vivado工程源码7详解–>Zynq7020,KSZ9031做PHY
开发板FPGA型号:Xilinx–>Zynq7020—xc7z020clg400-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:KSZ9031芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
11、vivado工程源码8详解–>Zynq7100,RTL8211E做PHY
开发板FPGA型号:Xilinx–>Zynq7100—xc7z100ffg900-2;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:RTL8211E芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
12、vivado工程源码9详解–>KU060,RTL8211F做PHY
开发板FPGA型号:Xilinx–>Kintex UltraScale–xcku060-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:RTL8211F芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
13、vivado工程源码10详解–>KU3P,RTL8211F做PHY
开发板FPGA型号:Xilinx–>Kintex UltraScale±-xcku3p-ffva676-2-i;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:RTL8211F芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
14、vivado工程源码11详解–>ZU4EV,RTL8211F做PHY
开发板FPGA型号:Xilinx- Zynq UltraScale+MPSoCs–xczu4ev-sfvc784-2-i;
FPGA开发环境:Vivado2019.1;
以太网物理层方案:RTL8211F芯片,延时模式,RGMII接口;
FPGA端MAC方案:Xilinx官方Tri Mode Ethernet MAC IP核,固定千兆模式;
以太网传输层协议:UDP协议,千兆速率;
实现功能:FPGA基于Tri Mode Ethernet MAC实现UDP网络通信;
工程作用:此工程目的是让读者掌握FPGA基于Tri Mode Ethernet MAC实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
15、工程移植说明
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软核;
16、上板调试验证并演示
准备工作
需要准备的器材如下:
FPGA开发板,没有开发板可以找本博提供;
网线;
电脑主机;
我的开发板了连接如下:
然后将电脑端IP地址设置为如下:
然后下载bit或者固化bin文件,即可开始测试;
ping测试
打开电脑CMD,输入ping指令;
单次ping测试如下:
连续ping测试如下:
ARP测试
打开电脑CMD,输入ARP指令;如下:
UDP数据回环测试
打开电脑端网络调试助手,测试如下:
网络测速
在电脑的任务栏右击鼠标–>任务管理器–>性能,找到网卡,如下:
注意,这个测速只代表可能的最高的速度,不代表电脑真实的不丢包速度,UDP 的点到点不丢包速度和电脑的网卡、CPU 速度、内存速度、操作系统都有关系。。。
综合测试视频演示
上述测试视频演示如下:
淘宝-千兆UDP
17、工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:文章末尾名片。
网盘资料如下: