FPGA纯verilog实现10G UDP协议栈,XGMII接口UltraScale GTY驱动,提供工程源码和技术支持

news2024/9/20 6:37:48

目录

  • 1、前言
  • 2、我这里已有的UDP方案
  • 3、该UDP协议栈性能
  • 4、详细设计方案
    • SFP
    • SGMII收发接口模块
    • AXIS FIFO
    • UDP协议栈
    • UltraScale FPGAs Transceivers Wizard GTY
  • 5、vivado工程
  • 6、上板调试验证并演示
    • 准备工作
    • 查看ARP
    • UDP数据回环测试
  • 7、福利:工程代码的获取

1、前言

目前网上的fpga实现udp基本生态如下:
1:verilog编写的udp收发器,但中间的FIFO或者RAM等调用了IP,或者不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代码谁敢用?
2:带ping功能的udp收发器,代码优秀也好用,但基本不开源,不会提供源码给你,这样的代码也有不足,那就是出了问题不知道怎么排查,毕竟你没有源码,无可奈何;
3:使用了Xilinx的Tri Mode Ethernet MAC三速网IP实现,这样的代码也很优秀,但还是那个问题,没有源码,且三速网IP需要licence,三速网IP实现了rgmii到gmii再到axis的转换;
4:使用FPGA的GTX资源利用SFP光口实现UDP,通信,这种方案不需要外接网络变压器即可完成;
5:真正意义上的verilog实现的UDP协议栈,真正意义上的verilog实现意思是UDP协议栈全部代码均使用verilog代码,不适用任何IP核,包括FIFO、RAM等,这样的UDP协议栈移植性很强,这样的协议栈在市面上也很少,几乎很难得到,而很设计就是这样的协议栈,呵呵。。。

本设计使用纯verilog实现的UDP协议栈实现UDP回环通信测试,Xilinx Kintex UltraScale+ XCKU3P调用UltraScale FPGAs Transceivers Wizard GTY资源实现XGMII的MAC功能,纯verilog代码实现XGMII接口与GTY对接,最后UDP数据通过SFP光口实现数据收发;UDP协议栈与MAC的交互接口为XGMII,速率为10G,UDP协议栈的用户接口为XGMII,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,将SFP光纤收发两端对接,即可完成自发自收的功能,并在电脑端使用网络调试助手进行UDP收发验证;

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

2、我这里已有的UDP方案

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

3、该UDP协议栈性能

1:纯verilog实现,没有用到任何一个IP核;
2:移植性天花板,该协议栈可在Xilinx、Altera等各大FPGA型号之间任意移植,因为是没有任何IP,源语也有参数可选择;
3:适应性强,利用GTY资源的SFP接口实现UDP协议的以太网通信;
4:时序收敛很到位;
5:动态ARP功能;
6:不带ping功能;
7:与MAC的接口为XGMII,市面上的RGMII、GMII、SGMII接口代码很多,XGMII相对较少;
8:最高支持10G速率;

4、详细设计方案

详细设计方案如下:
在这里插入图片描述

SFP

本设计无需外挂网络PHY,而是调用Xilinx的UltraScale FPGAs Transceivers Wizard GTY IP核实现了网络PHY的功能,GTY配置为SGMII接口,所以外部接口为SFP光口,并将SFP的RX核TX对接实现数据回环;

SGMII收发接口模块

SGMII收发接口模块存在于两个地方,一个是与GTY对接的地方,称之为PHY侧SGMII接口,另一个是与UDP协议栈对接的地方,称之为UDP侧SGMII接口,数据在PHY与UDP协议栈之间通过这两个接口实现对接;
PHY侧SGMII接口代码架构如下:
在这里插入图片描述
可以看到,模块由纯verilog代码实现,不含任何IP核;
同理,UDP侧SGMII接口代码架构如下:
在这里插入图片描述
可以看到,模块同样由纯verilog代码实现,不含任何IP核,不同点在于模块的另一侧是AXIS接口,与UDP协议栈连接;两者共同点在于外部接口都是XGMII,位宽均为64位;

AXIS FIFO

由于使用到了AXIS 数据流,必然需要AXIS FIFO作为哥哥模块的桥接,一般的设计直接调用AXIS FIFO IP核,但本设计为了通用性和移植性,采用纯verilog代码实现,代码中的位置如下:
在这里插入图片描述

UDP协议栈

UDP协议栈采用纯verilog代码实现,代码架构如下:
在这里插入图片描述
协议栈由ARP、IP层、UDP层、AXIS FIFO几个模块组成,全部使用纯verilog代码实现,ARP层实现动态ARP功能,IP层、UDP层实现MAC数据帧的IP层和UDP层的数据解包和组包,这是UDP协议的核心操作,其本身并不复杂,就是根据UDP协议进行对应的数据解析和数据组包即可,使用几个状态机的事儿,很假单,这里就不细说了,AXIS FIFO的作用是将复杂的UDP协议封装为AXIS数据流格式作为用户接口供开发者使用,开发者甚至都不需要去理解里面的协议,就当它是一个AXIS的FIFO用就行了;

UltraScale FPGAs Transceivers Wizard GTY

本设计无需外挂网络PHY,而是调用UltraScale FPGAs Transceivers Wizard GTY IP核实现了网络PHY的功能,IP配置:
在这里插入图片描述

5、vivado工程

开发板:Xilinx–>KU+系列–>xcku3p-ffvb676-2-e;
开发环境:Vivado2022.2;
MAC:1G/2.5G Ethernet PCS/PMA or SGMII;
输入\输出:UDP 网络通信;
测试项:数据收发;
工程代码架构如下:
在这里插入图片描述
FPGA资源消耗和功耗预估如下;
在这里插入图片描述

6、上板调试验证并演示

准备工作

开发板连接如下,然后上电下载bit:
在这里插入图片描述
10G网与电脑连接需要专门的10G网卡哦,也不贵,200多的也有;
首先设置电脑端IP如下:
在这里插入图片描述
开发板的IP地址在代码中的设置如下,在fpga_core.v里,可以自由修改:
在这里插入图片描述

查看ARP

打开cmd,输入 arp -a查看电脑的arp缓存表,如下:
在这里插入图片描述

UDP数据回环测试

打开网络调试助手并配置,如下:
在这里插入图片描述
单次发送数据测试结果如下:
在这里插入图片描述
循环发送数据测试结果如下,1秒时间间隔循环:
在这里插入图片描述

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot原理分析 | 安全框架:Security

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架;提供一组可以在Spring应用上下文中配置的Be…

使用作用域函数简化您的 Kotlin 代码:释放对象的力量

使用作用域函数简化您的 Kotlin 代码:释放对象的力量 欢迎,亲爱的 Kotlin 爱好者!厌倦了在处理对象时反复书写相同的代码吗?别担心!Kotlin 的作用域函数来拯救你,为你的编码之旅增添优雅的色彩。在这篇有趣…

华为认证 | 7月底这门HCIA认证即将发布!

华为认证HCIA-Cloud Service V3.5(中文版)预计将于2023年7月31日正式对外发布。 为了帮助您做好学习、培训和考试计划,现进行预发布通知,请您关注。 01 发布概述 基于“平台生态”战略,围绕“云-管-端”协同的新ICT技…

小程序学习(三):小程序的宿主环境

1.什么是宿主环境 宿主环境指的是程序运行所必须的依赖环境。例如:Android系统和IOS系统是两个不同的宿主环境。安卓版的微信App是不能在IOS环境下运行的,所以Android是暗转软件的宿主环境,脱离宿主环境的软件是没有任何意义的! 2.小程序的宿主环境 小程序借助宿主环境提供的能…

(4)【轨迹优化篇】线性加权轨迹代价损失评分,轨迹多选一方法--DWA_planner、Open_Planner、lexicographic_planner

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言1、设计代价损失函数进行评分、线性加权法、迹评分轨迹多选一的轨迹优化设计思想(1)设计代价函数进行…

适用于企业级工作负载的混合闪存存储

NetApp FAS9500、FAS8700、FAS8300:适用于企业级工作负载的 FAS 拥有企业级应用程序和私有云的客户通常部署这些系统来作为架构基础。通过与主要超大规模云提供商的简单集成创建统一的混合云 借助 NetApp FAS 按需扩展性能 客户将这些平台描述为“重型”&#xff0…

2023年开源社执行委员会介绍

总起 开源社的各项工作主要分为内部事务、对外事务与专项工作三大类。整体而言,基础设施、财务、法律与成员发展等工作较为偏向于内部事务,而活动、媒体、社区合作、顾问委员会服务、国际接轨等工作偏向于对外联络与展现,而教育、公益、硬件、…

基于Tensorflow来重现GPT v1模型

OpenAI推出的ChatGPT模型让我们看到了通用人工智能的发展潜力,我也找了GPT的相关论文来进行研究。OpenAI在2017年的论文Improving Language Understanding by Generative Pre-Training提出了GPT的第一个版本,我也基于这个论文来用Tensorflow进行了复现。…

红外雨量计(光学雨量传感器)在监测降雨量的应用

红外雨量计(光学雨量传感器)在监测降雨量的应用 红外雨量计是一种基于红外光学原理的降雨量监测设备。它利用红外传感器检测雨滴落在传感器上时所产生的反射光信号,根据信号的强弱和持续时间计算出降雨强度和累计降雨量。 红外雨量计在监测降…

FITC Biotin(134759-22-1),5-FAM azide(510758-23-3),荧光素标记试剂的特点

Part1-----FITC-Biotin,134759-22-1 基础产品数据(Basic Product Data): CAS号:134759-22-1 中文名:异硫氰酸荧光素标记生物素 英文名:FITC-Biotin,Fluorescein Biotin,…

vue element select下拉框树形多选

components 文件下新建 SelectTree文件 index.vue SelectTree index.vue <!--* 下拉树形选择 组件--> <template><el-select ref"select" style"min-width: 260px" :value"value" v-model"valueName" collapse-tags :…

Python应用实例(一)外星人入侵(七)

外星人入侵&#xff08;七&#xff09; 1.射杀外星人1.1 检测子弹与外星人的碰撞1.2 为测试创建大子弹1.3 生成新的外星人群1.4 提高子弹的速度1.5 重构_update_bullets() 2.结束游戏2.1 检测外星人和飞船碰撞2.2 响应外星人和飞船碰撞2.3 有外星人到达屏幕底端2.4 游戏结束 3.…

毫米波雷达(三):实操

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、福相一致性校准二、速度解模糊其他 一、福相一致性校准 多波束天线通道幅相一致性校正及实现 https://www.docin.com/p-2640129630.html 二、速度解模糊 一种…

SpringBoot的@ConfigurationProperties、@Autowired、@Conditional注解

目录 1. ConfigurationProperties EnableConfigurationProperties Autowired注解1.1 configuration自定义配置参数自动补全功能 2. Conditional注解 1. ConfigurationProperties EnableConfigurationProperties Autowired注解 在resources/application.properties文件中&a…

map、foreach 和 for ,多角度对比

for 1.访问元素和操作方式------通过索引访问数组元素&#xff0c;并可以执行任意操作。 const numbers [1, 2, 3, 4, 5];// for循环示例 for (let i 0; i < numbers.length; i) {console.log("Number (for loop): " numbers[i]); } 2.索引控制--------通过…

非线性系统的混沌特性分析方法--相图/分岔图分析法

非线性系统的混沌特性分析方法–相图/分岔图分析法 ​ 混沌映射被用于生成混沌序列&#xff0c;这是一种由简单的确定性系统产生的随机性序列。一般混沌序列具有以下主要特征&#xff1a; 非线性&#xff1b;对初值的敏感依赖性&#xff1b;遍历性&#xff1b;随机性&#xf…

【Linux初阶】基础IO - 磁盘 文件系统

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;认识磁盘&#xff08;物理结构、储存结构、逻辑结构、读取单位&#xff09;&#xff0c;理解文件系统&#xf…

会声会影2023最新免费版零基础上手视频剪辑工具

比如会声会影视频编辑软件&#xff0c;既加入光影、动态特效的滤镜效果&#xff0c;也提供了与色彩调整相关的LUT配置文件滤镜&#xff0c;可选择性大&#xff0c;运用起来更显灵活。会声会影在用户的陪伴下走过20余载&#xff0c;经过上百个版本的优化迭代&#xff0c;已将操作…

【消息队列RabbitMQ】一、RabbitMQ认识

这里写目录标题 RabbitMQSpringboot整合RabbitMQRabbitMQ的常见开发模式如何保证消息的可靠生产和可靠投递什么是死值队列和延迟队列 RabbitMQ 消息队列有&#xff1a; 1、ActiveMQ 2、RabbitMQ 3、ZeroMQ 4、Kafka 什么是RabbitMQ&#xff1f; RabbitMQ是一个开源的消息队列服…

第23章:范式

一、范式 1.什么是范式 关于数据表设计的基本原则&#xff0c;规则就是范式NF。 2.范式都包括哪些&#xff1f; 第一范式&#xff08;1NF&#xff09;、第二范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;、巴斯-科德范式&#xff08;BCNF - Boyce…