国产安路FPGA纯verilog代码实现UDP网络通信,带动态ARP和ping功能,提供2套TD工程源码和技术支持


国产安路FPGA纯verilog代码实现UDP网络通信,带动态ARP和ping功能,提供2套TD工程源码和技术支持

1、前言

国产FPGA现状:

“苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于先进制程半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,懂先生正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于黑铁段位;然而才短短7年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。
目前对于国产FPGA优势有以下几点:
1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;
2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具;
3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册;
4:采购方便,产业链自主可控,采购便捷;

FPGA实现UDP网络通信现状:

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芯片方案实现物理层功能;

工程概述

本设计使用国产安路PH1系列FPGA纯verilog实现UDP网络通信;本设计能实现电脑端网卡与FPGA开发板之间的双向通信,为了方便测试,设计了UDP数据回环和网络测速两个功能;

UDP数据回环功能如下:

首先电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的PHY芯片实现以太网物理层功能,将差分数据转换为并行RGMII接口数据;RGMII网络数据再送入纯verilog实现的RGMII互转GMII模块,实现双沿采集的RGMII数据到单沿采集的GMII数据转换,需要使用安路的PH1_LOGIC_IDDR源语;然后MAC数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入纯verilog实现的RGMII互转GMII模块,实现单沿采集的GMII数据到双沿采集的RGMII数据转换,需要使用安路的PH1_LOGIC_ODDR源语;然后数据进入板载PHY芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;

UDP网络测速功能如下:

PGA自动循环产生从0开始的累加数作为UDP发送数据,发送数据然后进入UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入纯verilog实现的RGMII互转GMII模块,实现单沿采集的GMII数据到双沿采集的RGMII数据转换,需要使用安路的PH1_LOGIC_ODDR源语;然后数据进入板载PHY芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端;然后打开电脑端的资源管理器,查看网卡,即可看到UDP通信速率;

针对市场主流需求,本设计提供2套TD工程源码,具体如下:
在这里插入图片描述
现对上述2套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为安路–PH1A90SBG484-3;这里仅介绍UDP数据回环测试;首先电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的RTL8211F芯片实现以太网物理层功能,RTL8211F工作于延时模式,RGMII接口,将差分数据转换为并行RGMII接口数据;RGMII网络数据再送入纯verilog实现的RGMII互转GMII模块,实现双沿采集的RGMII数据到单沿采集的GMII数据转换,需要使用安路的PH1_LOGIC_IDDR源语;然后MAC数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入纯verilog实现的RGMII互转GMII模块,实现单沿采集的GMII数据到双沿采集的RGMII数据转换,需要使用安路的PH1_LOGIC_ODDR源语;然后数据进入板载RTL8211F芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;该工程适用于国产安路FPGA实现以太网应用;

工程源码2

开发板FPGA型号为安路–PH1A180SFG676-2;这里仅介绍UDP数据回环测试;首先电脑端网络调试助手发送测试数据,然后电脑端操作系统的Socket实现发送数据的以太网帧组包,然后发送给电脑端网卡后通过网线连接到FPGA开发板的RJ45网口;然后差分网络数据进入FPGA开发板板载的YT8531D芯片实现以太网物理层功能,YT8531D工作于延时模式,RGMII接口,将差分数据转换为并行RGMII接口数据;RGMII网络数据再送入纯verilog实现的RGMII互转GMII模块,实现双沿采集的RGMII数据到单沿采集的GMII数据转换,需要使用安路的PH1_LOGIC_IDDR源语;然后MAC数据进入UDP协议栈实现以太网帧解包,解析各种头部信息,并提取输出UDP报文的有效数据段;有效数据再经过回环FIFO后回灌到UDP协议栈实现以太网帧组包,即加上各种头部信息和校验;然后数据进入纯verilog实现的RGMII互转GMII模块,实现单沿采集的GMII数据到双沿采集的RGMII数据转换,需要使用安路的PH1_LOGIC_ODDR源语;然后数据进入板载YT8531D芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端;电脑端操作系统的Socket实现接收数据以太网解包,然后数据给网络调试助手显示;网络调试助手同时显示发送和接收数据,以此观察UDP数据回环的正确性;该工程适用于国产安路FPGA实现以太网应用;

本博客描述了国产安路FPGA纯verilog代码实现UDP网络通信的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

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

2、相关方案推荐

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

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

国产安路FPGA相关方案推荐

鉴于国产FPGA的优异表现和市场需求,我专门开设了一个人国产安路FPGA专栏,里面收录了基于国产安路FPGA的图像处理、UDP网络通信、GT高速接口、PCIE等博客,感兴趣的可以去看看,博客地址:
点击直接前往

我这里已有的以太网方案

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

3、设计思路框架

工程设计原理框图

工程设计原理框图如下:
在这里插入图片描述

电脑端网络调试助手

电脑端网络调试助手很简单,几乎干这一行的都用过,为Windows版本.exe文件,无需安装直接使用,界面如下:
在这里插入图片描述
这个软件使用教程可自行百度,如果连这个都不会用,说明。。。

PHY芯片

本例程提供5套vivado工程源码,分别用到了RTL8211、KSZ9031、YT8531等市面上主流的PHY型号,通过这些型号PHY的使用,你将能学会其他型号PHY的使用,因为很多都是兼容的;此外,还提供了PHY的参考原理图,一并放在了资料包中;如下:

RGMII互转GMII模块

RGMII互转GMII模块由纯verilog实现;功能是实现双沿采集的RGMII数据互转单沿采集的GMII数据,需要使用安路的PH1_LOGIC_IDDR和PH1_LOGIC_ODDR源语;模块代码架构如下:
在这里插入图片描述

UDP协议栈

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

UDP用户数据测试模块

UDP用户数据测试模块集成了UDP数据回环和网络测速功能,通过顶层参数选择,源码架构如下:
在这里插入图片描述
UDP用户数据测试模块顶层接口如下:
在这里插入图片描述

IP地址、端口号的修改

工程留出了IP地址、端口号的修改端口供用户自由修改,位置在顶层模块如下:
在这里插入图片描述

工程源码架构

以工程源码1为例,工程源码架构如下:
在这里插入图片描述
本博主发布的工程均已编译完成,且时序收敛,无时序违约,如下:
在这里插入图片描述

4、TD工程源码1详解:RTL8211F作PHY版本

开发板FPGA型号:国产安路–PH1A90SBG484-3;
开发环境:TangDynasty 6.0.2;
以太网物理层方案:RTL8211F芯片,延时模式,RGMII接口;
以太网MAC层方案:纯verilog实现的RGMII互转GMII方案;
以太网协议层方案:千兆网版本的UDP协议栈,纯verilog实现;
网口数量:1个网口,即1个FPGA工程里运行1个UDP协议栈;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握国产安路FPGA纯verilog代码实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

5、TD工程源码2详解:YT8531D作PHY版本

开发板FPGA型号:国产安路–PH1A180SFG676-2;
开发环境:TangDynasty 6.0.2;
以太网物理层方案:YT8531D芯片,延时模式,RGMII接口;
以太网MAC层方案:纯verilog实现的RGMII互转GMII方案;
以太网协议层方案:千兆网版本的UDP协议栈,纯verilog实现;
网口数量:1个网口,即1个FPGA工程里运行1个UDP协议栈;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握国产安路FPGA纯verilog代码实现UDP网络通信的设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、上板调试验证并演示

需要准备的器材如下:
FPGA开发板,没有开发板可以找本博提供;
网线;
电脑主机;
我的开发板了连接如下:
在这里插入图片描述
然后将电脑端IP地址设置为如下:
在这里插入图片描述
然后下载bit或者固化bin文件,即可开始测试;

ping测试

打开电脑CMD,输入ping指令;
单次ping测试如下:
在这里插入图片描述
连续ping测试如下:
在这里插入图片描述

ARP测试

打开电脑CMD,输入ARP指令;如下:
在这里插入图片描述

UDP数据回环测试

打开电脑端网络调试助手,测试如下:
在这里插入图片描述
在这里插入图片描述

UDP网络测速

下载bit;在电脑的任务栏右击鼠标–>任务管理器–>性能,找到网卡,如下:
在这里插入图片描述
注意,这个测速只代表可能的最高的速度,不代表电脑真实的不丢包速度,UDP 的点到点不丢包速度和电脑的网卡、CPU 速度、内存速度、操作系统都有关系。。。

综合测试视频演示

上述测试视频演示如下:

千兆UDP

7、工程源码获取

网盘资料如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值