> 文章列表 > FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持

FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持

FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持

目录

  • 1、前言
  • 2、我这里已有的UDP方案
  • 3、米联客UDP协议
  • 4、详细设计方案
  • 5、Tri Mode Ethernet MAC的使用
  • 6、vivado工程1详解
  • 7、vivado工程2详解
  • 8、vivado工程3详解
  • 9、上板调试验证并演示
  • 10、福利:工程代码的获取

1、前言

目前网上的fpga实现udp基本生态如下:
1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代码谁敢用?
2:带ping功能的udp收发器,代码优秀也好用,但基本不开源,不会提供源码给你,这样的代码也有不足,那就是出了问题不知道怎么排查,毕竟你没有源码,无可奈何;
3:使用了Xilinx的Tri Mode Ethernet MAC三速网IP实现,这样的代码也很优秀,但还是那个问题,没有源码,且三速网IP需要licence,三速网IP实现了rgmii到gmii再到axis的转换,本设计基于此方案;

本设计调用Xilinx的Tri Mode Ethernet MAC三速网IP,使用米联客的UDP协议栈实现UDP通信,该协议栈目前并不开源,只提供网表文件,但不影响使用,该协议栈带有用户接口,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,非常简单;本设计通过一个fifo实现UDP数据的回环收发,并在电脑端使用网络调试助手进行UDP收发验证;

本设计可以配置为UDP的服务器或者客户端,默认配置为服务器,可在顶层代码中通过`define实现配置,本设计经过反复大量测试稳定可靠,可在项目中直接移植使用,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字通信领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

2、我这里已有的UDP方案

目前我这里有如下几种UDP方案和应用实例:
我的博客主页有个FPGA以太网通信专栏,专栏是免费的,里面有很多FPGA实现的UDP应用,对网络通信有需求的兄弟可以去看看:直接点击前往

3、米联客UDP协议栈

本设计调用Xilinx的Tri Mode Ethernet MAC三速网IP,使用米联客的UDP协议栈实现UDP通信,该协议栈目前并不开源,只提供网表文件,但不影响使用,该协议栈带有用户接口,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,非常简单;
协议栈架构如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
协议栈性能表现如下:
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协议的实现了,直接调用接口即可使用。。。

4、详细设计方案

详细设计方案如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
UDP协议栈加上了FIFO以缓冲数据;
调用Tri Mode Ethernet MAC实现MAC层的数据转换;
共提供了3套工程实现UDP通信,只是使用的PHY不同,分别是RTL8211、
B50610、88E1518;
在电脑端使用网络调试助手测试数据收发、对包情况,还有连续ping、网络带宽延迟等测试;

5、Tri Mode Ethernet MAC的使用

FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
IP使用逻辑实现的AXI Lite接口配置,具体参考代码;
IP配置很简单,配置完成即可使用;

6、vivado工程1详解

开发板:Xilinx Artix7-35T;
开发环境:Vivado2020.2;
网络PHY:RTL8211延时模式;
输入\\输出:UDP网络通信;
测试项:数据收发、连续ping、网络测速;
工程代码架构如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
本设计可以配置为UDP的服务器或者客户端,默认配置为服务器,可在顶层代码中通过`define实现配置,如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
开发板IP和远端IP可自由修改,master_ch.v和slaver_ch.v文件修改位置如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持

7、vivado工程2详解

开发板:Xilinx Kintex7-35T;
开发环境:Vivado2020.2;
网络PHY:B50610延时模式;
输入\\输出:UDP网络通信;
测试项:数据收发、连续ping、网络测速;
工程详情与vivado工程1一致;

8、vivado工程3详解

开发板:Xilinx Kintex7-35T;
开发环境:Vivado2020.2;
网络PHY:88E1518延时模式;
输入\\输出:UDP网络通信;
测试项:数据收发、连续ping、网络测速;
工程详情与vivado工程1一致;

9、上板调试验证并演示

在这里插入图片描述
以工程2的Kintex7-35T开发板为例进行测试;
板子上电下载bit后,先测试ping功能,如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
单次ping还不够,直接上连续ping,如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
然后是用网络调试助手进行数据收发测试,如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
既有手动收发测试,也有循环12小时的长时间收发测试,测试结果没有出现丢包的情况。。。
测速如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
在电脑上观察开发板以太网网口的发送速率,这个测速只代表可能的最高的速度,不代表电脑真实的不丢包速度,UDP 的点到点不丢包速度和电脑的网卡、CPU 速度、内存速度、操作系统都有关系。。。

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持
UDP协议栈网表文件位置:
FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持