FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

news/2024/5/18 14:26:14 标签: fpga开发, udp, 网络通信, SFP

目录

  • 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,通信,这种方案不需要外接网络变压器即可完成,本方案就是此种设计;

本设计使用米联客的UDP协议栈实现UDP通信的MAC层设计,调用Xilinx官方的10G Ethernet Subsystem IP核实现了网络变压器的功能,从而实现无需外挂网络芯片即可实现UDP通信的方案,轻松实现时下热门的10G万兆网通信;米联客的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官方的10G Ethernet Subsystem IP核实现了网络变压器的功能,通过SFP光口输出实现与远端节点的连接,设计框图如下:
在这里插入图片描述
本设计在电脑端使用网络调试助手和开发板通信,实现UDP数据环回试验,本设计没有使用外接网络变压器,而是调用Xilinx官方的10G Ethernet Subsystem IP核,利用SFP光口输出的形式完成。

这里重点讲一讲Xilinx官方的10G Ethernet Subsystem IP核;
注意!!!
10G Ethernet Subsystem IP核只有在K7及其以上FPGA才有
IP配置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、vivado工程详解

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

5、上板调试验证并演示

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

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

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


http://www.niftyadmin.cn/n/238899.html

相关文章

kotlin协程flow retryWhen当功能函数加载失败后重试(3)

kotlin协程flow retryWhen当功能函数加载失败后重试&#xff08;3&#xff09; import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlinx.coroutines.runBlocking import java.lang.NullPointerExceptionfun main(args: Array<String>) {runBl…

SAS 9.3软件安装包下载及安装教程 办公软件

SAS 9.3软件简介&#xff1a; SAS 9.3是目前行业软件中的一款专业的数据统计分析软件&#xff0c;其核心功能包括高级分析、商业智能、客户智能、数据管理、风险管理和欺诈与安全智能六大模块&#xff0c;通过sas软件提供创新的分析、商业智能和数据管理软件与服务&#xff0c…

KDZRS-40A三通道变压器直流电阻测试仪

一、产品概述 变压器绕组的直流电阻测试是变压器在交接、大修和改变分接开关后的试验项目。在通常情况下&#xff0c;用传统的方法&#xff08;电桥法和压降法&#xff09;测量变压器绕组以及大功率电感设备&#xff08;发电机&#xff09;的直流电阻是一项费时费工的工作。为了…

openGauss对比PostgreSQL

注&#xff1a;本文引用自https://cloud.tencent.com/developer/article/1674346 引言 openGauss是华为在2020.06.30开源的数据库&#xff0c;基于Postgresql9.2.4演进而来。华为在Postgresql基础上做了较多的改进点&#xff0c;因此openGauss相比于Postgresql是有一定优势的…

STM32HAL库 OLED显示屏的使用

文章目录 前言一、CubeIDE配置OLED显示屏iic引脚二、OLED驱动库1.引入库2.main.c中使用 总结 前言 本文主要讲解hal库配置与0.96寸oled屏的使用。 一、CubeIDE配置OLED显示屏iic引脚 OLED显示屏需要用到iic通信&#xff0c;此处选择了选择pb8为SCL、pb9为SDA 二、OLED驱动…

jupyter中的魔法函数

在jupyter中&#xff0c;使用魔法函数可以简单的实现一些单纯python要很麻烦才能实现的功能。 1. % 行魔法函数&#xff0c;只对本行代码生效。 2. %% Cell魔法函数&#xff0c;在整个Cell中生效&#xff0c;必须放于Cell首行。 3. %lsmagic&#xff1a; 列出所有的魔法函数 4…

大语言模型2-document ai解读

大语言模型的学习&#xff0c;首先来看简单有效的document.ai document.ai https://github.com/GanymedeNil/document.ai 该仓库简洁展示了如何搭建基于本地知识库的对话方案 数据集中的原始文本经过openAI embedding 存储到向量数据库中针对query&#xff0c;查询的问题转…

华为手表开发:WATCH 3 Pro(20)传感器订阅 佩戴状态

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;20&#xff09;传感器订阅 佩戴状态 初环境与设备鸿蒙开发文件夹&#xff1a;文件新增展示的文本标记index.hmlindex.css 传感器订阅index.js 本篇教程将会介绍如何在华为 WATCH 3 Pro 上使用鸿蒙可穿戴开发进行传感器订阅&…