当前位置: 首页 > news >正文

FPGA实现SRIO数据回环传输,基于Serial Rapidlo Gen2架构,提供6套工程源码和技术支持

目录

  • 1、前言
    • SRIO是啥?
    • 官方有Example,为何要用你这个?
    • 工程概述
    • 免责声明
  • 2、相关方案推荐
    • 我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目
    • 我这里已有的 GT 高速接口解决方案
    • 本方案在FPGA与DSP交互架构中的应用
  • 3、工程详细设计方案
    • 工程设计原理框图
    • 用户数据发送模块
    • SRIO数据回环传输架构
      • Serial Rapidlo Gen2 IP核简介
      • Serial Rapidlo Gen2 基本结构
      • Serial Rapidlo Gen2 收发流程
      • Serial Rapidlo Gen2 接收流程
      • Serial Rapidlo Gen2 时钟架构
      • Serial Rapidlo Gen2 IP核调用和使用
    • 用户数据接收模块
    • 工程源码架构
    • 工程仿真
  • 4、vivado工程源码1详解-->Artix7-35T,2路SFP光口回环版本
  • 5、vivado工程源码2详解-->Artix7-100T,2路SFP光口回环版本
  • 6、vivado工程源码3详解-->Kintex7-325T,2路SFP光口回环版本
  • 7、vivado工程源码4详解-->Zynq7100,2路SFP光口回环版本
  • 8、vivado工程源码5详解-->KU060,2路SFP光口回环版本
  • 9、vivado工程源码6详解-->VU37P,2路QSFP光口版本
  • 10、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 11、上板调试验证
    • 准备工作
    • SRIO光口数据回环效果演示
  • 12、工程代码的获取

FPGA实现SRIO数据回环传输,基于serial Rapidlo cen2,提供6套工程源码和技术支持

1、前言

SRIO是啥?

SRIO(Serial RapidIO)是一种高性能、低引脚数、基于数据包交换的互连技术,专为满足嵌入式系统对高可靠性和高实时性的需求而设计。它由逻辑层、传输层和物理层三层协议构成,旨在为嵌入式系统提供可靠的、高性能的互连解决方案。总而言之,SRIO是一种为高性能嵌入式系统设计的高速串行互连技术。利用FPGA实现SRIO,能够充分发挥FPGA的灵活性、并行处理能力和高度集成性的优势,为通信、高性能计算、军工航天、工业自动化等领域提供高性能、高可靠性的数据传输解决方案。
下面是一个简要的SRIO协议核心特性概览:
在这里插入图片描述

FPGA实现SRIO的优势
FPGA以其高度灵活性和强大的并行处理能力,成为实现SRIO接口的理想选择之一,优势如下:
1、灵活性与可重构性:
FPGA允许工程师通过编程灵活配置SRIO接口的参数,如传输速率、端口数量、地址映射等,并能方便地更新协议功能,从而快速适应不同的应用需求和标准变更。
2、高性能并行处理:
FPGA的并行架构使其能够同时处理多个数据流和事务,非常适合于SRIO这种需要高速数据交换的场景,有助于满足系统对高带宽和低延迟的苛刻要求。
3、高度集成与成本优化:
利用FPGA实现SRIO功能,可以将SRIO接口与其他逻辑功能(如信号处理、数据打包/解包、错误管理等)集成在单一芯片上。这减少了对外部分立元器件的需求,降低了系统复杂性和总体成本。
4、加速开发和迭代:
Xilinx等FPGA供应商提供了成熟的SRIO IP核(知识产权核)和例程。这些IP核通常经过验证,包含配置、初始化、数据传输等示例代码,能显著缩短开发周期,让开发者更专注于上层应用。

基于FPGA-SRIO的应用领域
FPGA与SRIO的结合,在众多对数据传输速度和可靠性有严苛要求的领域发挥着重要作用,如下:
1、通信基础设施:
在无线基站、路由器和网络交换设备中,FPGA实现的SRIO接口可用于基带处理单元之间、以及它们与交换芯片之间的高速互联,确保数据的高速可靠传输。
2、高性能计算(HPC)与数据中心:
在高性能计算集群或数据中心内,FPGA-SRIO方案可用于连接多个计算节点、加速卡或存储单元,提供低延迟、高带宽的通信支持,适用于大规模并行计算和实时数据处理。
3、军事与航空航天:
这些领域对系统的可靠性和抗干扰能力要求极高。FPGA-SRIO可用于雷达信号处理、声纳系统、航空电子中的导航设备以及卫星通信等,确保在恶劣环境下数据的完整性和实时性。
4、工业自动化:
在工业控制系统中,FPGA-SRIO可用于连接高速传感器、控制器和执行器,实现实时数据采集和精准控制,提升生产效率和设备可靠性。
5、汽车电子:
随着高级驾驶辅助系统(ADAS)和自动驾驶技术的发展,车载网络需要处理大量传感器数据。FPGA-SRIO有望为车载网络中的高速数据交换提供解决方案,连接各种电子控制单元(ECU)。
6、医疗影像:
虽然搜索结果未直接提及,但医疗设备如高性能MRI、CT扫描仪等需要实时处理大量图像数据,FPGA-SRIO的高带宽和低延迟特性也适用于此类场景。

基于FPGA-SRIO的未来前景
尽管SRIO面临PCIe、以太网等技术的竞争,但FPGA-SRIO方案在特定领域仍有其发展空间和趋势,如下:
1、持续追求更高性能:
SRIO协议本身在不断发展,速率在不断提升(例如SRIO 3.0支持10.312 Gbps,未来目标指向25-400 Gbps)。FPGA工艺的进步(如采用更先进的制程)和SerDes技术的增强将支持这些更高的速率,满足未来系统对带宽的贪婪需求。
2、与新兴技术和应用融合:
人工智能与机器学习:AI推理和训练需要巨大的计算量和数据吞吐。FPGA-SRIO可用于连接AI加速器、高性能存储和计算单元,构建高效的计算平台。
3、数据中心加速:
在数据中心,FPGA常作为加速卡用于特定工作负载(如加解密、视频转码)。SRIO可作为FPGA加速卡与主机或其他加速卡之间的高效互联方式。
4、技术演进与创新:
为了进一步提升速率,PAM4(4阶脉冲幅度调制)等更高效的编码技术已在其他高速串行接口中应用。未来若SRIO采纳类似技术,FPGA的灵活性将有利于其快速实现。此外,光电共封装(CPO)甚至未来芯片级的光互联技术,虽然目前更多处于研究阶段,但长远看可能影响包括SRIO在内的高速互连技术实现方式。
5、在特定领域保持生命力:
在对确定性延迟、可靠性和抗干扰性要求极高的领域(如军工、航空航天、部分工业应用),SRIO的特性使其难以被完全替代。FPGA-SRIO方案预计将在这些利基市场持续发挥价值。

官方有Example,为何要用你这个?

Xilinx官方的确有SRIO IP核的Example例程;
然后呢?你看得懂吗?你会照着模仿做自己的项目吗?
如果你会,那么请划走;
如果你不会,不妨看看下面的聊天记录
在这里插入图片描述
这位朋友用了我的SRIO数据回环传输工程,感觉少走了一年的弯路。。。

工程概述

本设计使用Xilinx 系列FPGA为平台,基于GT高速收发器实现SRIO数据回环传输,旨在为读者提供一套精简版的、基于SRIO协议的的数据收发架构;

FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧的有效数据段以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送数据然后送入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据编码,该SRIO为SRIO主机,然后数据以高速差分信号输出,经板载的SFP或QSFP光口进行回环传输;经SFP/QSFP-RX接口输入高速差分信号再进入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据解码,该SRIO为SRIO从机,然后输出AXI4-Stream数据流;接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;针对市场主流需求,本博客设计并提供6套工程源码,具体如下:
在这里插入图片描述
现对上述6套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为Xilinx–Artix7-35T–xc7a35tfgg484-2;FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧的有效数据段以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送数据然后送入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据编码,该SRIO为SRIO主机,然后数据以高速差分信号输出,经板载的SFP或QSFP光口进行回环传输;经SFP/QSFP-RX接口输入高速差分信号再进入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据解码,该SRIO为SRIO从机,然后输出AXI4-Stream数据流;接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;本设计需要使用2路Serial Rapidlo Gen2 IP形成主从搭配,同时需要使用2路SFP光口做数据回环,2路Serial Rapidlo Gen2 IP使用Xilinx 7系列FPGA的GTP高速收发器资源,共享同一路GTP高速BANM参考时钟,SRIO线速率为5Gbps,数据位宽64bit,该工程适用于Xilinx 7系列FPG做工程移植部署;

工程源码2

开发板FPGA型号为Xilinx–Artix7-100T–xc7a100tfgg484-2;FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧的有效数据段以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送数据然后送入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据编码,该SRIO为SRIO主机,然后数据以高速差分信号输出,经板载的SFP或QSFP光口进行回环传输;经SFP/QSFP-RX接口输入高速差分信号再进入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据解码,该SRIO为SRIO从机,然后输出AXI4-Stream数据流;接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;本设计需要使用2路Serial Rapidlo Gen2 IP形成主从搭配,同时需要使用2路SFP光口做数据回环,2路Serial Rapidlo Gen2 IP使用Xilinx 7系列FPGA的GTP高速收发器资源,共享同一路GTP高速BANM参考时钟,SRIO线速率为5Gbps,数据位宽64bit,该工程适用于Xilinx 7系列FPG做工程移植部署;

工程源码3

开发板FPGA型号为Xilinx–Kintex7-325T–xc7k325tffg676-2;FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧的有效数据段以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送数据然后送入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据编码,该SRIO为SRIO主机,然后数据以高速差分信号输出,经板载的SFP或QSFP光口进行回环传输;经SFP/QSFP-RX接口输入高速差分信号再进入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据解码,该SRIO为SRIO从机,然后输出AXI4-Stream数据流;接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;本设计需要使用2路Serial Rapidlo Gen2 IP形成主从搭配,同时需要使用2路SFP光口做数据回环,2路Serial Rapidlo Gen2 IP使用Xilinx 7系列FPGA的GTX高速收发器资源,共享同一路GTX高速BANM参考时钟,SRIO线速率为5Gbps,数据位宽64bit,该工程适用于Xilinx 7系列FPG做工程移植部署;

工程源码4

开发板FPGA型号为Xilinx–Zynq7100–xc7z100ffg900-2;FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧的有效数据段以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送数据然后送入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据编码,该SRIO为SRIO主机,然后数据以高速差分信号输出,经板载的SFP或QSFP光口进行回环传输;经SFP/QSFP-RX接口输入高速差分信号再进入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据解码,该SRIO为SRIO从机,然后输出AXI4-Stream数据流;接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;本设计需要使用2路Serial Rapidlo Gen2 IP形成主从搭配,同时需要使用2路SFP光口做数据回环,2路Serial Rapidlo Gen2 IP使用Xilinx 7系列FPGA的GTX高速收发器资源,共享同一路GTX高速BANM参考时钟,SRIO线速率为5Gbps,数据位宽64bit,该工程适用于Xilinx Zynq7000系列FPG做工程移植部署;

工程源码5

开发板FPGA型号为Xilinx–Kintex7–UltraScale–xcku060-ffva1156-2-i;;FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧的有效数据段以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送数据然后送入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据编码,该SRIO为SRIO主机,然后数据以高速差分信号输出,经板载的SFP或QSFP光口进行回环传输;经SFP/QSFP-RX接口输入高速差分信号再进入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据解码,该SRIO为SRIO从机,然后输出AXI4-Stream数据流;接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;本设计需要使用2路Serial Rapidlo Gen2 IP形成主从搭配,同时需要使用2路SFP光口做数据回环,2路Serial Rapidlo Gen2 IP使用Xilinx UltraScale系列FPGA的GTH高速收发器资源,共享同一路GTH高速BANM参考时钟,SRIO线速率为5Gbps,数据位宽64bit,该工程适用于Xilinx UltraScale系列FPG做工程移植部署;

工程源码6

开发板FPGA型号为Xilinx–Virtex UltraScale±-xcvu37p-fsvh2892-2-e;FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧的有效数据段以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送数据然后送入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据编码,该SRIO为SRIO主机,然后数据以高速差分信号输出,经板载的SFP或QSFP光口进行回环传输;经SFP/QSFP-RX接口输入高速差分信号再进入Xilinx官方的Serial Rapidlo Gen2 IP核实现SRIO协议层数据解码,该SRIO为SRIO从机,然后输出AXI4-Stream数据流;接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;本设计需要使用2路Serial Rapidlo Gen2 IP形成主从搭配,同时需要使用2路QSFP光口做数据回环,2路Serial Rapidlo Gen2 IP使用Xilinx UltraScale+系列FPGA的GTY高速收发器资源,共享同一路GTY高速BANM参考时钟,SRIO线速率为5Gbps,数据位宽64bit,该工程适用于Xilinx UltraScale+系列FPG做工程移植部署;

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

免责声明

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

2、相关方案推荐

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

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

我这里已有的 GT 高速接口解决方案

我的主页有FPGA GT 高速接口专栏,该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程,其中 GTP基于A7系列FPGA开发板搭建,GTX基于K7或者ZYNQ系列FPGA开发板搭建,GTH基于KU或者V7系列FPGA开发板搭建,GTY基于KU+系列FPGA开发板搭建;以下是专栏地址:
点击直接前往

本方案在FPGA与DSP交互架构中的应用

SRIO通常搭配DSP使用,轻松实现异构方案的高速数据交互,对FPGA与DSP通过SRIO交互方案感兴趣的朋友,可以参考我之前发布的博客,链接如下:
基于FPGA与DSP通过SRIO简单测试:
点击直接前往
基于FPGA与DSP通过SRIO传输ADC数据:
点击直接前往
基于FPGA与DSP通过SRIO传输图像视频数据:
点击直接前往

3、工程详细设计方案

工程设计原理框图

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

用户数据发送模块

用户数据发送模块在工程中位置如下:
在这里插入图片描述
FPGA内部设计了一个纯verilog代码实现的用户数据发送模块,该模块生成发送AXI4-Stream流接口的数据帧,数据帧的数据长度、每帧发送间隔、累加数据初始值等都可由parameter参数配置,数据帧以累加数形式出现,方便用户仿真和ILA观测,数据帧虽简单,但完美适配了SRIO IP核的用户发送接口,是基于SRIO传输其他数据的基础范本,可加速用户产品开发周期;用户数据发送模块顶层接口如下:
在这里插入图片描述
发送数据帧格式如下:
在这里插入图片描述
发送端首先发送一个门铃包,以标志一帧数据开始;
发送端然后发送一个数据包包头,以标志数据包为NWRITE包;
发送端然后连续发送从1开始累加的累加数,这是有效数据段;
发送端然后发送一个门铃包,以标志一帧数据结束;
接收端依据上面的逻辑接收数据并做对比;
用户数据发送模块与SRIO的s_axis_ireq接口对接;

SRIO数据回环传输架构

本设计基于Xilinx GT高速收发器实现SRIO数据回环传输,总体代码架构如下:
在这里插入图片描述
SRIO数据回环传输架构的核心是Serial Rapidlo Gen2 IP核的例化和使用,所以本章节我们重点讲解这个IP;

Serial Rapidlo Gen2 IP核简介

关于Serial Rapidlo Gen2 IP核介绍最详细的肯定是Xilinx官方的《pg007_Serial RapidIO Gen2
LogiCORE IP Product Guide》,我们以此来解读,《pg007》PDF文档我已放在了资料包里;Serial Rapidlo Gen2 IP核支持 1x、2x 和 4x 的通道宽度(Lane Widths),每个通道支持 1.25, 2.5, 3.125, 5.0 和 6.25 Gbaud 的传输速率。它兼容 Serial RapidIO 2.1 标准,并包含 逻辑层(Logical Layer)、传输层(Transport Layer)和物理层(Physical Layer) 的实现。

Serial Rapidlo Gen2 基本结构

根据《pg007》,Serial Rapidlo Gen2 基本结构如下:
在这里插入图片描述
由上图可知,SRIO Gen2 IP 核遵循 逻辑(LOG)、传输(Transport)和物理(PHY) 三层体系结构。这种划分提供了向逻辑规范添加新事务类型的灵活性,而无需修改传输或物理层规范。
SRIO Gen2 端点由以下部分组成:
Serial RapidIO Gen2 顶层包装器 (srio_gen2_<core_version>_unifiedtop):包含物理层(PHY)、逻辑层(LOG)和传输层、缓冲区设计(BUF)。
<component_name>_block:集成了上述统一顶层包装器、SRIO GT 包装器 (srio_gt_wrapper) 和配置结构参考设计。
<component_name>_support:包含时钟和复位模块。
<component_name>:顶层包装器,用于将整个 SRIO Gen2 端点集成到你的设计中。
本博主将官方给的框图做了简化,概括了 IP 核的系统架构和数据流,如下:
在这里插入图片描述
逻辑层(LOG)用户接口
逻辑层定义整体协议和数据包格式,是端点发起和完成事务所需的信息。其用户接口主要包括:
1、I/O端口 (I/O Port):
可以配置为 Condensed I/O 或 Initiator/Target 样式。它使用 AXI4-Stream 协议进行数据传输,支持 HELLO 和 SRIO Stream 两种数据包格式。
Condensed I/O 样式减少了通道数,使用一个AXI4-Stream通道传输所有I/O端口发送数据包(s_axis_iotx*),一个通道接收所有I/O端口数据包(m_axis_iorx*)。
Initiator/Target 样式将事务分离,是文档中较多分析的模式。它包含四个通道:
Initiator Request (ireq):本地生成的请求,放置在 s_axis_ireq* 通道上发送。
Initiator Response (iresp):从远程设备接收的响应,在 m_axis_iresp* 通道上呈现。
Target Request (treq):从远程设备接收的请求,在 m_axis_treq* 通道上呈现。
Target Response (tresp):对接收到的请求生成的响应,放置在 s_axis_tresp* 通道上发回。
2、消息端口 (Messaging Port):一个可选接口,遵循 Initiator/Target 样式,用于消息事务。
3、维护端口 (Maintenance Port):如果启用,则使用 AXI4-Lite 接口,允许用户应用程序访问本地或远程配置空间。
4、用户定义端口 (User-Defined Port):一个可选端口,仅使用 SRIO Stream 格式。

缓冲区设计(BUF)与物理层(PHY)
1、缓冲区设计 (BUF):
负责数据包的缓冲和流量控制。发送缓冲区(TX Buffer)对传出事务排队,接收缓冲区(RX Buffer)充当FIFO存储和转发数据到LOG接收路径。缓冲区大小可配置(8, 16 或 32 个数据包深度),并在必要时处理时钟域交叉。
2、物理层 (PHY):
处理链路训练、初始化、协议(如插入CRC和确认标识符),并连接到串行收发器(GT)。收发器通常由用户在IP核外部实例化。

Serial Rapidlo Gen2 收发流程

用户发送数据通过s_axis_ireq接口发送;用户接口端口由 AXI4-Stream 接口构建,使用就绪/有效握手传输信息。为了简化数据包构造,常使用 HELLO 数据包格式。HELLO包最大净荷量为256字节,其第一拍数据包含了包头信息,后续为正常数据;具体发送流程如下:
1、用户逻辑构造请求:
用户逻辑根据HELLO格式或SRIO Stream格式,在 s_axis_ireq_tdata 上准备数据,并断言 s_axis_ireq_tvalid。
2、IP核握手并处理:
当IP核准备好接收时,会断言 s_axis_ireq_tready,完成握手。LOG层接收请求,进行处理。
3、经BUF到PHY:
处理后的数据包经过BUF层(进行缓冲和流量控制),到达PHY层。
4、PHY封装并发送:
PHY层为数据包插入CRC、确认标识符(ackID) 等,然后通过GT收发器将并行数据转换为串行差分信号发送到链路上。

Serial Rapidlo Gen2 接收流程

用户接收数据通过m_axis_treq接口发送;用户接口端口由 AXI4-Stream 接口构建,数据接收流程是发送的逆过程;具体发送流程如下:
1、PHY接收并解包:
PHY层从GT收发器接收串行数据,将其转换为并行数据,检查CRC、确认ackID(若ackID不符合预期,会回复PNA而非PA,并可能触发重传机制),并剥离物理层信息。
2、经BUF到LOG:
数据包通过BUF层(进行缓冲),到达LOG层。
3、LOG解析并分发:
LOG层解析数据包,并根据其类型(请求或响应)分发到相应的目标接口。
若是请求包(如NREAD、NWRITE_R),会呈现在 m_axis_treq* 接口上,用户逻辑需在此接口接收并处理。
若是响应包(如对NREAD的响应),会呈现在 m_axis_iresp* 接口上,用户逻辑在此接口接收响应。
4、用户逻辑生成响应(针对请求包):
对于需要响应的请求(如NREAD),用户逻辑处理完后,需在 s_axis_tresp* 接口上构造并发送响应包。
物理层握手机制
SRIO物理层有重要的握手机制确保可靠传输:
每个SRIO包都有一个 ackID。
接收端检查收到的 ackID:
若符合预期,回复 PA (Packet Accepted)。
若不符合预期,回复 PNA (Packet Not Accepted)。
发送端收到PNA后,会自动发起重传(Link Request)。
此机制在物理层自动完成,一般无需用户干预,但在调试链路错误时(如信号质量差导致重传)需关注。

Serial Rapidlo Gen2 时钟架构

SRIO IP核涉及多个时钟域,理解时钟关系对稳定运行至关重要。IP核内部主要涉及以下时钟:
在这里插入图片描述
这些时钟域之间通常需要时钟域交叉(CDC),BUF层中的设计就包含了处理CDC的逻辑;

Serial Rapidlo Gen2 IP核调用和使用

Serial Rapidlo Gen2 IP核调用和使用很简单,通过vivado的UI界面即可完成,如下:
在这里插入图片描述
然后配置如下:
在这里插入图片描述
具体配置要根据自己的项目需求而定,上图只是博主的配置,仅供参考;

用户数据接收模块

用户数据接收模块在工程中位置如下:
在这里插入图片描述
接收AXI4-Stream流然后进入纯verilog代码实现的用户数据接收比对模块,实现接收数据与发送数据的逐个比较;最后将比较结果输出功设计者分析判断;整个工程实用性拉满,对于有SRIO开发需求的用户可谓精准适配;
用户数据接收模块顶层接口如下:
在这里插入图片描述
接收数据帧格式如下:
在这里插入图片描述
接收端首先接收一个门铃包,以标志一帧数据开始;
接收端然后接收一个数据包包头,以标志数据包为NWRITE包;
接收端然后连续接收从1开始累加的累加数,这是有效数据段;
接收端然后接收一个门铃包,以标志一帧数据结束;
用户数据接收比对模块与SRIO的m_axis_treq接口对接;

工程源码架构

提供6套工程源码,以工程源码1为例,综合后的工程源码架构如下:
在这里插入图片描述

工程仿真

工程代码中已提供了仿真,可在vivado中直接仿真,操作如下:
在这里插入图片描述
仿真结果如下:
在这里插入图片描述
需要注意的是;仿真有时候IP起不来,但上板调试却可以起来,这个BUG至今上不知道为什么。。。

4、vivado工程源码1详解–>Artix7-35T,2路SFP光口回环版本

开发板FPGA型号:Xilinx–Artix7-35T–xc7a35tfgg484-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA内部生成的发送数据帧;
输出:FPGA内部做收发数据比对,并输出比对结果;
SRIO方案:Xilinx Serial Rapidlo Gen2 IP核;
回环光口类型:2路SFP光口;
使用高速收发器类型:GTP,线速率5Gbps;
SRIO用户数据位宽:64 bit;
工程作用:让读者掌握FPGA实现SRIO数据回环传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

5、vivado工程源码2详解–>Artix7-100T,2路SFP光口回环版本

开发板FPGA型号:Xilinx–Artix7-100T–xc7a100fgg484-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA内部生成的发送数据帧;
输出:FPGA内部做收发数据比对,并输出比对结果;
SRIO方案:Xilinx Serial Rapidlo Gen2 IP核;
回环光口类型:2路SFP光口;
使用高速收发器类型:GTP,线速率5Gbps;
SRIO用户数据位宽:64 bit;
工程作用:让读者掌握FPGA实现SRIO数据回环传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、vivado工程源码3详解–>Kintex7-325T,2路SFP光口回环版本

开发板FPGA型号:Xilinx–Kintex7-325T–xc7k325tffg676-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA内部生成的发送数据帧;
输出:FPGA内部做收发数据比对,并输出比对结果;
SRIO方案:Xilinx Serial Rapidlo Gen2 IP核;
回环光口类型:2路SFP光口;
使用高速收发器类型:GTX,线速率5Gbps;
SRIO用户数据位宽:64 bit;
工程作用:让读者掌握FPGA实现SRIO数据回环传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

7、vivado工程源码4详解–>Zynq7100,2路SFP光口回环版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA内部生成的发送数据帧;
输出:FPGA内部做收发数据比对,并输出比对结果;
SRIO方案:Xilinx Serial Rapidlo Gen2 IP核;
回环光口类型:2路SFP光口;
使用高速收发器类型:GTX,线速率5Gbps;
SRIO用户数据位宽:64 bit;
工程作用:让读者掌握FPGA实现SRIO数据回环传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

8、vivado工程源码5详解–>KU060,2路SFP光口回环版本

开发板FPGA型号:Xilinx–Kintex UltraScale–xcku060-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
输入:FPGA内部生成的发送数据帧;
输出:FPGA内部做收发数据比对,并输出比对结果;
SRIO方案:Xilinx Serial Rapidlo Gen2 IP核;
回环光口类型:2路SFP光口;
使用高速收发器类型:GTH,线速率5Gbps;
SRIO用户数据位宽:64 bit;
工程作用:让读者掌握FPGA实现SRIO数据回环传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

9、vivado工程源码6详解–>VU37P,2路QSFP光口版本

开发板FPGA型号:Xilinx–Virtex UltraScale±-xcvu37p-fsvh2892-2-e;
FPGA开发环境:Vivado2019.1;
输入:FPGA内部生成的发送数据帧;
输出:FPGA内部做收发数据比对,并输出比对结果;
SRIO方案:Xilinx Serial Rapidlo Gen2 IP核;
回环光口类型:2路QSFP光口;
使用高速收发器类型:GTY,线速率5Gbps;
SRIO用户数据位宽:64 bit;
工程作用:让读者掌握FPGA实现SRIO数据回环传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

10、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

11、上板调试验证

准备工作

需要准备的器材如下:
FPGA开发板,没有开发板可以找本博提供;
SFP光模块和光纤;
我的开发板了连接如下:
在这里插入图片描述

SRIO光口数据回环效果演示

SRIO光口数据回环效果演示如下:
用户发送数据ILA抓取分析如下:
在这里插入图片描述
用户接受比对数据ILA抓取分析如下:
在这里插入图片描述

12、工程代码的获取

代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:
在这里插入图片描述


文章转载自:

http://AsMhzTrd.phxns.cn
http://zxA8om0K.phxns.cn
http://m0rScxNo.phxns.cn
http://rz6Y5Q4Y.phxns.cn
http://ik5HQxuC.phxns.cn
http://rO0ldapV.phxns.cn
http://vf0uxfY3.phxns.cn
http://MgxKTawH.phxns.cn
http://GBFVlFWL.phxns.cn
http://vBOl5EkU.phxns.cn
http://88dT8LyG.phxns.cn
http://iTMVFT4B.phxns.cn
http://aulnmr3j.phxns.cn
http://MAoAPLqo.phxns.cn
http://u65Kl2M1.phxns.cn
http://VIpOe0IO.phxns.cn
http://QZjxSP3U.phxns.cn
http://Kr0ZQmh3.phxns.cn
http://k3qcBe2G.phxns.cn
http://KF9H0l9o.phxns.cn
http://t1CICTcp.phxns.cn
http://eufOD628.phxns.cn
http://Vp7YcDT1.phxns.cn
http://CrHZsvrx.phxns.cn
http://xJjf2Oza.phxns.cn
http://ijUwKhSj.phxns.cn
http://IvSRd7Ix.phxns.cn
http://gYbJwZXQ.phxns.cn
http://fFl1fPWl.phxns.cn
http://AO2a29ut.phxns.cn
http://www.dtcms.com/a/387542.html

相关文章:

  • 第十九章 Arm C1-Premium TRBE技术解析
  • HTB writeup
  • 科学研究系统性思维的理论基础:数字化研究工具
  • 基于有限元-元胞自动机法(CAFE)的增材制造过程组织模拟
  • 电视行业复兴,数字化制造如何重塑“视界”新格局?
  • 从兼容到极致性能——qData数据中台商业版核心指标解读
  • MAC-枚举反射工具类
  • 搜索百科(1):Lucene —— 打开现代搜索世界的第一扇门
  • 学习日记-JS+DOM-day57-9.17
  • Java异常处理最佳实践指南
  • Ansible简介
  • pytest使用总结笔记
  • 在VSCode中设置Qt开发环境
  • 斜杠命令Slash Commands:Roo Code 的自动化利器
  • 大数据毕业设计选题推荐-基于大数据的慢性肾病数据可视化分析系统-Spark-Hadoop-Bigdata
  • 基于红尾鹰优化的LSTM深度学习网络模型(RTH-LSTM)的一维时间序列预测算法matlab仿真
  • TDengine IDMP 基本功能——数据可视化(2. 柱状图)
  • Python与Google Earth Engine (GEE) 实现地理空间数据自动化处理:高效分析与批量任务执行
  • Dify Agent + AntV 实战:从 0 到 1 打造数据可视化解决方案
  • 系统架构设计师备考第25天——软件测试
  • 十、vue3后台项目系列——登录页面的搭建
  • 在博主内容推送系统中,通过RabbitMQ异步解耦及消息持久化+重试机制,使推送效率提升300%,成功率提升至99.9%的原理及实现
  • 【FreeRTOS】二值信号量vs互斥量核心差异
  • 记一次golang结合前端的axios进行预签名分片上传遇到403签名错误踩坑
  • LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
  • 微信小程序修改页面导航标题的方式
  • Torch-Rechub学习笔记-task1
  • LightTools照明光学系统设计
  • 从技术探索到社区共建:程宇翔的隐私计算开源之路
  • 【Redis】云原生时代Redis高可用新范式:多活架构+异地容灾 生成详细内容