FPGA基于SFP光口实现1G千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持

news/2024/12/21 18:30:58/

目录

  • 1、前言
  • 2、我这里已有的UDP方案
  • 3、详细设计方案
  • 4、vivado工程详解
  • 5、上板调试验证并演示
  • 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的Tri Mode Ethernet MAC三速网IP,使用米联客的UDP协议栈实现UDP通信的MAC层设计,调用Xilinx官方的1G/2.5G Ethernet PCS/PMA or SGMII IP核实现了网络变压器的功能,从而实现无需外挂网络芯片即可实现UDP通信的方案;米联客的UDP该协议栈目前并不开源,只提供网表文件,但不影响使用,该协议栈带有用户接口,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,非常简单;本设计通过一个fifo实现UDP数据的回环收发,并在电脑端使用网络调试助手进行UDP收发验证;

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

2、我这里已有的UDP方案

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

3、详细设计方案

在讲述设计方案之前,我们先来看看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官方的1G/2.5G Ethernet PCS/PMA or SGMII IP核实现了网络变压器的功能,通过SFP光口输出实现与远端节点的连接,设计框图如下:
在这里插入图片描述
本设计在电脑端使用网络调试助手和开发板通信,实现UDP数据环回试验,本设计没有使用外接网络变压器,而是调用Xilinx官方的1G/2.5G Ethernet PCS/PMA or SGMII IP核,利用SFP光口输出的形式完成。

这里重点讲一讲Xilinx官方的Tri Mode Ethernet MAC和1G/2.5G Ethernet PCS/PMA or SGMII IP核;
Tri Mode Ethernet MAC主要是为了适配1G/2.5G Ethernet PCS/PMA or SGMII,因为后者的输入接口是GMII,而Tri Mode Ethernet MAC的输入接口是AXIS,输出接口是GMII,Tri Mode Ethernet MAC的核心配置如下:
在这里插入图片描述
1G/2.5G Ethernet PCS/PMA or SGMII配置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、vivado工程详解

开发板FPGA型号:Xilinx xc7a35tfgg484-2;
开发环境:vivado2020.2;
输入/输出:SFP光口;
测试项:UDP数据回环,ping等;
在这里插入图片描述
综合编译后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

5、上板调试验证并演示

需要买一个SFP转RJ45的模块插入SFP光口,然后用网线连接开发板和电脑,如下:
在这里插入图片描述
板子上电下载bit后,先测试ping功能,如下:
在这里插入图片描述
单次ping还不够,直接上连续ping,如下:
在这里插入图片描述
然后是用网络调试助手进行数据收发测试,如下:
在这里插入图片描述
既有手动收发测试,也有循环12小时的长时间收发测试,测试结果没有出现丢包的情况。。。
测速如下:
在这里插入图片描述
在电脑上观察开发板以太网网口的发送速率,这个测速只代表可能的最高的速度,不代表电脑真实的不丢包速度,UDP 的点到点不丢包速度和电脑的网卡、CPU 速度、内存速度、操作系统都有关系。。。

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

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


http://www.ppmy.cn/news/47022.html

相关文章

Spark 实现重新分区 partitionBy、coalesce、repartition(附代码演示)

文章目录 1、partitionBy 源码中的定义(部分) 调用方式 2、coalesce 源码中的定义 调用方式 3、repartition 源码中的定义 调用方式 repartition和coalesce的区别 代码演示 (跳转代码) 实现重新分区,本质上…

C++ [图论算法详解] 欧拉路欧拉回路

蒟蒻还在上课,所以文章更新的实在慢了点 那今天就来写一篇这周刚学的欧拉路和欧拉回路吧 讲故事环节: 在 一个风雪交加的夜晚 18世纪初普鲁士的哥尼斯堡,有一条河穿过,河上有两个小岛,有七座桥把两个岛与河岸联系…

linux知识

1.vi 删除-dd i-insert 最后一行-G 第一行-g 查找-/ 替换-:s/old/new/g 2.wc -》 行数 字符数 字节数 -w 统计字数 3. sort -k 按某一列排序 -r reverse -n 按字符排 4.uniq -c 统计重复数量 5.head -4 取文件前4行 6.date --date"1 days ago" date "%Y%m%D %H…

Python 单样本学习实用指南:1~6 全

原文:Hands-On One-shot Learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如…

C learning_6

目录 语句的种类 C语言&#xff1a;结构化是程序设计语言 顺序结构&#xff1a; 选择结构(分支结构): 循环结构&#xff1a; while语句中的break和continue 语句的种类 1.表达式语句&#xff1a;表达式语句是指一个表达式后面跟随一个分号的语句。 #include<stdio.h&g…

2021地理设计组二等奖:基于GIS的东江源区土壤侵蚀及其影响因素空间分析

一、作品背景 水土保持情况普查对我国具有重要意义。我国目前是世界上水土流失最严重的国家之一&#xff0c;水土流失面积极其广且量大&#xff1b;严重的水土流失问题是我国生态环境问题的重要板块&#xff0c;若是持续恶化&#xff0c;将会严重影响我国的生态安全、饮水安全…

4.17日报

get()和 load()的区别&#xff1f; 数据查询时&#xff0c;没有 OID 指定的对象&#xff0c;get() 返回 null&#xff1b;load() 返回一个代理对象。 load()支持延迟加载&#xff1b;get() 不支持延迟加载。 121. 说一下 hibernate 的缓存机制&#xff1f; hibernate 常用的缓存…

MIT6.824 Lecture18 Fork Consistency

Background 拜占庭问题&#xff08;Byzantine Generals Problem&#xff09;得名于一个古老的传说&#xff0c;讲述了拜占庭帝国在战争中的一个失败策略。在这个故事中&#xff0c;多名拜占庭将军要协调进攻或撤退的行动&#xff0c;但是其中一些将军可能会向其他帝国泄露假消…