FPGA基于AXI 1G/2.5G Ethernet Subsystem实现千兆UDP通信 提供工程源码和技术支持

news2025/2/24 7:31:32

目录

  • 1、前言
  • 2、我这里已有的UDP方案
  • 3、详细设计方案
    • 传统UDP网络通信方案
    • 本方案详细设计说明
      • UDP层设计
      • AXIS-FIFO
      • AXI 1G/2.5G Ethernet Subsystem:
      • 输出
  • 4、vivado工程详解
  • 5、上板调试验证并演示
    • 系统配置
    • UDP数据回环测试
    • 注意事项
  • 6、福利:工程代码的获取

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的转换;
4:使用FPGA的GTX资源利用SFP光口实现UDP通信,这种方案不需要外接网络变压器即可完成,本方案就是此种设计;

本设计调用Xilinx的AXI 1G/2.5G Ethernet Subsystem IP,使用硬件语言编写的UDP协议栈实现UDP通信的MAC层设计,调用Xilinx官方的AXI 1G/2.5G Ethernet Subsystem IP核实现了网络变压器的功能,从而实现无需外挂网络芯片即可实现UDP通信的方案;UDP协议栈已封装为FIFO接口,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,非常简单;本设计通过一个fifo实现UDP数据的回环收发,并在电脑端使用网络调试助手进行UDP收发验证;

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

2、我这里已有的UDP方案

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

3、详细设计方案

传统UDP网络通信方案

在讲述设计方案之前,我们先来看看FPGA实现UDP通信方案应具备什么条件,大体如下:
在这里插入图片描述
1:用户逻辑:
开发者需要收发的实际数据,可以以多种形势存在,比如自定义格式、AXIS数据流格式等等,用户逻辑的接口时序必须与MAC层的接口时序一致;
2:MAC层
主要由UDP、IP、ARP、ICMP等具体的协议逻辑组成,实现网络数据的组包与拆包,相当于做了软件里Sockte做的事儿,Sockte依赖CPU做网络数据包,而这里的MAC层直接使用硬件资源做网络数据包,解放了网络数据包对CPU的奴役,在当今时髦儿的RDMA中得以完美体现。。。本设计的MAC层采用米联客的UDP协议栈,关于这部分,请参考我之前写的文章
3:网络变压器
主要由PCS/PMA组成,PCS主要实现并行数据的编解码,比如经典的8b/10编解码,PMA主要实现并串/串并转换,输出接口是高速差分信号,可直接与SFP或者RG45网口连接;
4:RJ45网口:俗称水晶头,插网线的。。。
5:远端节点
本FPGA开发板可以理解为一个网卡,远端节点就是与之连接的另一个网卡,比如电脑主机上的网卡;

本方案详细设计说明

本设计与上述传统的FPGA实现UDP方案不同的是网络变压器部分,前面的网络变压器是真实的网络PHY芯片,比如我常用到的RTL8211、B50610、88E1518等等;本设计没有用到网络变压器,而是调用Xilinx官方的AXI 1G/2.5G Ethernet Subsystem IP核实现了网络变压器的功能,通过SFP光口输出实现与远端节点的连接,设计框图如下:
在这里插入图片描述
本设计在电脑端使用网络调试助手和开发板通信,实现UDP数据环回试验,本设计没有使用外接网络变压器,而是调用Xilinx官方的AXI 1G/2.5G Ethernet Subsystem IP核,利用SFP光口输出的形式完成。

UDP层设计

该UDP协议栈的功能和性能参数如下:原谅我装13秀一波英文。。。

FEATURES:
Implements UDP, IPv4, ARP protocols 
Zero latency between UDP and MAC layer 
 (combinatorial transfer during user data phase)
 See simulation diagram below
Allows full control of UDP src & dst ports on TX. 
Provides access to UDP src & dst ports on RX (user filtering) 
Couples directly to Xilinx Tri-Mode eth Mac via AXI interface 
Separate building blocks to create custom stacks 
Easy to tap into the IP layer directly 
Supports TX and RX with IP layer broadcast address 
Separate clock domains for tx & rx paths 
Choice of smaller single slot ARP or multislot up to 255 slots 
Tested for 1Gbit Ethernet, but applicable to 100M and 10M

UDP协议栈 Bolck Design设计框图如下:
在这里插入图片描述
核心代码采用VHDL语言实现,是为了更好的时序,顶层代码采用verilog语言实现,是为了方便用户例化,UDP模块已封装为FIFO接口,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,非常简单;UDP模块带动态ARP、IP仲裁等功能,但不带ping功能;具体设计框图如下:
在这里插入图片描述
UDP层代码顶层文件直接拖入Block Design中可生成IP界面,IP界面可配置IP地址等信息,如图:
在这里插入图片描述

AXIS-FIFO

该FIFO主要功能为回环接收到的UDP网络数据到UDP发送端,实现自发自收的回环测试;之所以选用AXIS接口的FIFO是因为AXI 1G/2.5G Ethernet Subsystem IP核的用户接口为AXIS数据流;

AXI 1G/2.5G Ethernet Subsystem:

本设计使用 AXI 1G/2.5G Ethernet Subsystem IP 核实现物理层功能,IP核通过MicroBlaze软核配置;根据官方文档介绍,该IP功能如下:
在这里插入图片描述
更多关于该IP的细节,请自行阅读官方手册《pg138-axi-ethernet》;
AXI 1G/2.5G Ethernet Subsystem IP 核具体配置说明如下:
1: 配置链路速率为 1Gbps。;
2: 配置 PHY 接口类型为 1000BaseX;
3: 配置 MDIO PHY Address 为 1;
具体配置界面如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输出

AXI 1G/2.5G Ethernet Subsystem IP核直接输出到SFP接口,通过一个SFP转RJ45接头用网线连接FPGA开发板到电脑,即可完成工程的硬件连接,另外,为了与FPGA开发板通信和打印测试信息,工程还调用了一个AXI Uart IP,所以还需要一根USB转串口线连接开发板与电脑,电脑打开串口调试助手接口收到FPGA开发板打印的信息;串口波特率为115200,数据位8,无校验;

4、vivado工程详解

开发板FPGA型号:Xilinx-xc7k325tffg676-2;
开发环境:vivado2019.1;
输入/输出:SFP光口;
测试项:UDP数据回环;

工程Block Design如下:
在这里插入图片描述
综合后的工程代码架构如下:
在这里插入图片描述
综合编译后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述
点击 BLOCK DESIGN 开发界面下的"Address Editor"选项,可查看 IP 核分配的地址,红框里的地址空间尽量大点,因为SDK代码里有大量数据复制的操作;如下图:
在这里插入图片描述

5、上板调试验证并演示

需要买一个SFP转RJ45的模块插入SFP光口,然后用网线连接开发板和电脑,如下:
在这里插入图片描述

系统配置

打开vivado工程,编译后导出bit,运行SDK,然后通过SDK下载程序运行,打开电脑的串口调试助手,你会看到如下打印信息:
在这里插入图片描述
MicroBlaze 裸机源码主要完成的功能为:
1:初始化 AXI Ethernet 驱动程序;
2:设置 MAC 地址,需与 udp_echo_server 模块所设置的 MAC 地址一致;如下图:
在这里插入图片描述
在这里插入图片描述
3:设置 PHY 参数,如链路速率等;如下图:
在这里插入图片描述
4:启动 AXI Ethernet 设备;如下:
在这里插入图片描述

UDP数据回环测试

测试前请将电脑 IP 地址设为 192.168.1.180,子网掩码保持默认即可,如下图:
在这里插入图片描述
请运行程序,此时电脑将会识别网络连接状态为 1Gbps,如下:
在这里插入图片描述
打开网络调试工具 SocketTool_NoAD.exe,在弹出的界面中点击“UDP Client -> 创建”,在“对方 IP”中输入评估板 IP 地址,再点击确定,如下:网络调试工具放在了资料包里;
在这里插入图片描述
在“数据发送窗口”中输入需发送至评估板的数据,再点击“发送数据”。“数据接收及提示窗口”中将打印由 PC 机发送至评估板,以及由评估板发送至 PC 机的数据,如下图:
在这里插入图片描述
当然,你也可以用其他网络调试助手测试;

注意事项

AXI 1G/2.5G Ethernet Subsystem IP核需要Licence才能编译生成比特流,请到官方申请Licence

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

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

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

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

相关文章

SpringMVC第七阶段:SpringMVC的增删改查(01)

SpringMVC的增删改查 1、准备单表的数据库 drop database if exists springmvc;create database springmvc;use springmvc; ##创建图书表 create table t_book(id int(11) primary key auto_increment, ## 主键name varchar(50) not null, ## 书名 author varchar(50) no…

敏捷缺陷「bug」跟踪管理

一般情况下,当前迭代的缺陷,建议放到本迭代的迭代看板上,在迭代结束前修复完成。 “缺陷看板”通常存放发布后遗留的缺陷,客户反馈的缺陷,生产环境发现的缺陷等。 在Leangoo领歌的敏捷项目中,默认创建了“…

安科瑞能源管理系统基于物联网技术应用

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘 要:在能源形势紧张的大趋势下,高能耗的大型公共建筑能源管理系统的建设逐渐受到重视,以物联网技术及基础的建筑能源管理平台可以提供即时、准确、高效的能源管理策略。 系统阐述了结合物联网技术的建筑能源管理构建…

关于自动映射在项目中的具体落地(dozer)

关于自动映射在项目中的具体落地(dozer) 项目开发过程中,经常需要编写model之间的转换,最常见的有: 实体转DTODTO转实体 等操作,故为了简化代码的开发工作,需要简化对象属性之间复制的步骤,目…

分类、标签设计及查询优化

文章目录 问题分类和标签的设计知名开源系统的设计jive论坛Solo博客系统的设计wordpress的数据库设计 参考链接 问题 在很多业务系统中,都有对对象的分类和标签设计。在数据库层面如何设计相应的表,以及如何做查询优化,是一个比较普遍的问题…

MKS SERVO4257D 闭环步进电机_系列5 CAN指令说明

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈&am…

客户案例 | 思腾合力GPU算力节点助力实时云渲染

客户介绍 平行云是国内领先的云化XR概念倡导者与技术先行者,LarkXR是平行云研发的云化XR PaaS平台。LarkXR能够帮助XR领域企业级客户快速实现技术、产品及平台的云化转型,高效使能企业的云化XR业务,有效保护客户的内容安全,让多种…

ANDEAWELL:国产工业RFID替代潮即将到来!

受这两年国外的芯片供应不足,价格上涨后用户难以承受等影响,越来越多的企业选择国产替代芯片。随着国产替代芯片的应用增加,东信源芯、旗连、国芯物联等出货量也开始增加,可以预见的是,国产工业RFID替代潮即将到来! 国…

解决Maven 依赖下载不全的问题 (自测有效)

问题描述:从仓库拉代码下来 发现存在部分依赖下载不了。 解决方案:去中央仓库一个个手动下载。具体步骤如下 1.清除下载一般的依赖 (以下代码是 .bat 文件) echo off rem create by NettQunrem 这里写你的仓库路径 s…

类实例化和实例初始化

就算不写main方法里面的3句,也会执行5 1 10 6 因为main方法所在的类需要先加载和初始化 执行顺序如下:先初始化父类再初始化子类 静态实例变量显示赋值和静态代码块代码从上到下顺序执行(根据书写顺序) 子类的实例化方法&am…

【9 Vue全家桶 – Vuex状态管理】

1 什么是状态管理 其实是数据管理但是为了更好的指出是由于状态的变化导致数据的变化(响应式数据),我们称之为状态管理. 2 Vuex的状态管理 组件只能直接读取state,而不能直接修改state,必须通过mutation才能修改.(pinia可以直接读取和修改state) 3 Vuex的安装 npm install …

ModDrop++:一种具有受试者内部协同训练的动态滤波网络,用于具有缺失模态的多发性硬化病变分割

文章目录 ModDrop: A Dynamic Filter Network with Intra-subject Co-training for Multiple Sclerosis Lesion Segmentation with Missing Modalities摘要本文方法Dynamic Head with Filter ScalingIntra-subject Co-training 实验结果 ModDrop: A Dynamic Filter Network wit…

1:面向对象

文章目录 1:与equals的区别2:写算法题的时候边界条件最后考虑3:高内聚低耦合4:父类引用指向子类对象5:如何重写equals方法6:java是如果实现跨平台的7:HashMap中的重点注意事项8:局部…

快速入门Python语言:人生苦短,我用Python~~Python语言经验分享

⭐方向一:“你是如何学习/自学 Python 的?” 我通过自学的方式学习Python。我的自学方法具有良好的灵活性和自控力,在这个过程中,我注重打下坚实的基础,确保学习的深度与广度,以提高对Python语言和编程的认…

[答疑]UMLChina的Logo是不是不对劲

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> Lynn 2023-4-6 13:55 潘老师,咱umlchina的标记是不是不太对劲,火柴人指向用例的箭头是三角形似乎不合uml的标准。 UMLChina潘加宇 是的。如果按U…

张驰咨询:六西格玛绿带培训如何帮助酒店降低成本和提高客户满意度?

六西格玛是一种质量管理方法,旨在通过减少缺陷和提高效率来提高客户满意度。在酒店行业中,六西格玛可以帮助酒店降低成本和提高客户满意度的方法有:减少浪费、提高效率、优化客户体验、降低维护成本等等。下面张驰咨询给大家分享两个真实案例…

免改造数据安全技术,实现企业关键数据资产保护落地

4月26日,腾讯安全联合中国信通院“数据安全推进计划”共同在深圳举办了数据安全研讨会。炼石网络创始人兼CEO白小勇受邀出席,分享了“免改造数据安全的实践与思考”的议题,与中国信息通信研究院云计算与大数据研究所高级业务主管龚诗然、腾讯…

SpringMvc源码分析

概述 用户的请求,是如何被 DispatcherServlet 处理的 先看图 从图中可以看到请求首先是被 DispatcherServlet 所处理,但是实际上,FrameworkServlet 先被触发 我们看下处理各种请求的方法 Overrideprotected final void doGet(HttpServletR…

JavaEE进阶(5/28)SpringMVC

目录 1.什么是SpringMVC? 2.学习SpringMVC学习了什么? 3.SpringMVC核心1 4.SpringBoot传递参数 5.SpringBoot传递对象参数 6.SpringBoot传递表单 7.SpringBoot后端参数重命名 8.SpringBoot后端用来接收json对象 1.什么是SpringMVC? 1.…

如何在手机和平板中浏览三维实景模型?

对于数据量庞大的三维实景模型,想要在手机和平板中进行在线浏览并实现实时交互,一般平台很难实现这些功能。 四维轻云是一款操作简单、支持在线协作、在线展示及在线分享的三维实景模型在线浏览平台。在四维轻云平台中,用户可以创建项目&…