0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx SRIO IP介绍和使用经验分享

gvxiaot 来源:gvxiaot 作者:gvxiaot 2022-08-02 10:00 次阅读

1. 为什么选择SRIO

随着PCIe接口以太网接口的飞速发展,以及SOC芯片的层出不穷,芯片间的数据交互带宽大大提升并且正在向片内交互转变;SRIO接口的应用市场在缩小,但是由于DSP和PowerPC中集成了SRIO接口,因此在使用DSP/Power PC + FPGA的使用场景中仍然占有一席之地。

同时,由于SRIO接口一些独特的特性,使得SRIO接口在一些应用中仍然不可替代:

A. 不同的数据包类型,支持使用SRIO传输不同的数据类型;

B. 支持数据包优先级;

C. 支持响应机制;

D. 支持重传机制;

E. 支持带目的地址的路由;

F. 方便研发工程师定义灵活的硬件结构和变化的负荷分担;

2. XilinxSRIO IP特性

Xilinx SRIO IO具有如下特性:

A. 支持RapidIO互连Rev2.2协议;

B. 支持1x、2x、4x,并且可以从x4、x2向下train down;

C. 每条lane支持的线速率为1.25Gbs、2.5Gbs、3.125Gbs、5.0Gbs和6.25Gbs;

D. 支持同时发生的Initiator和Target接口操作;

E. 支持Doorbell传输和Message传输;

F. 专有的Maintenance传输端口

G. 使用标准的AXI4-Lite和AXI4-Stream接口实现简单的握手机制和数据流控制;

H. 所有发送数据包支持source ID可配置;

I. 针对复杂的互连系统,支持16bit device ID配置;

J. TXbuffer和RX buffer深度独立可配置,可配置深度分别为8包、16包和32包;

K. 支持TX flow control和RX flow control;

L. 支持multi-cast传输;

3. Xilinx SRIO IP架构

Xilinx SRIO IP包含LOG(逻辑和传输层)、BUF(传输层)、PHY(物理层)、Clock&Reset四个组成部分,其中:

A. 逻辑和传输层定义了操作协议,包含数据组包和解包,提供用户逻辑接口、传输接口和配置接口;

B. 传输层定义了包交换、路由和寻址机制,包含发送和接收数据缓存、数据包传输和流控、优先级控制和数据包排序、跨时钟域处理和重传管理;

C. 物理层定义了电气特性、链路控制和纠错重传等,包含链路训练、初始化和协议实现、CRC和响应机制、提供和Transceiver的接口;

D. Clock&Reset部分实现SRIO时钟、复位、寄存器管理(Clock、Reset、Register Manager):该部分实现SRIO接口时钟方案、复位策略及寄存器配置和管理功能;

Xilinx SRIO IP核的结构如下图所示:

poYBAGGYHbCAMlT6AADgwzHxUJU523.png

其中,逻辑层提供给用户的接口包括Initiator Request接口、Initiator Response接口、TargetRequest接口、Target Response接口、Maintenance Request接口、Maintenance Response接口和配置寄存器接口。如下图所示:

pYYBAGGYHbGAazlrAADwzErj3Bg925.png

由于在SRIO IP版本升级的过程中,在Gen2 IP中引入了AXI接口,因此Xilinx SRIO IP LOG层提供给用户的接口也发生了变化。

以Initiator接口为例,Xilinx SRIO IP Gen1 V5.6以前的版本提供给用户的接口信号如下图所示,Target和Maintenance接口提供给用户的接口也和Initiator接口基本类似。

pYYBAGGYHbOAesE4AAIpU636n9Q682.png

以Initiator接口为例,Xilinx SRIO IP Gen2 V1.0以后的版本提供给用户的接口信号如下图所示,变更为AXI接口,Target和Maintenance接口提供给用户的接口也和Initiator接口基本类似。

poYBAGGYHbSAaj4mAACyvFs7R94279.png

以Initiator接口为例,Xilinx SRIO IP Gen1 V5.6以前的版本提供给用户的接口时序如下图所示:

poYBAGGYHbWAQQZzAAFoZlKF2n0781.png

以Initiator接口为例,Xilinx SRIO IP Gen2 V1.0以后的版本提供给用户的接口时序如下图所示,这里发生了一个显著的变化是在每一包数据发送时tready会先变低一个周期,因此此处的时序要控制好,不然很容易造成SRIO IP核堵塞。

pYYBAGGYHbeAPS-kAAE55dtCi2U472.png

4. SRIO数据包格式

在SRIO数据包格式中,主要分为包头、数据payload、包尾三部分。包头的ackID、crf、prio、ftype、ttype、source ID、destination ID、address等信息需要用户根据数据包的类型、优先级、源地址、目的地址、读写操作地址等信息填入;data部分是我们需要操作当前数据包的payload;包尾的CRC等信息为IP核自动插入。

poYBAGGYHbiAY5MrAAIdaut4-fc542.png

5. XilinxSRIO IP使用和调试中的注意事项

Xilinx SRIO IP在使用和调试的时候,我们强调如下注意事项:

A. LOG接口的时序控制必须精准,否则可能会造成SRIO IP核堵塞;以IREQ接口为例说明:

pYYBAGGYHbmAUw4OAAEJTDyLSyY672.png

B. LOG接口使用组合逻辑来控制时序,在实际上板测试过程中要考虑tready信号 随时可能变无效的情况,通常我用一个不使能任何输出寄存器的FIFO来做组合逻辑时序控制,在Gen2 IP使用时我的一个例子如下图所示;

poYBAGGYHbuAJ5mFAAE9W51Csc4691.png

C. Gen1 IP和Gen2 IP的差别在于:Gen1的控制信号为低有效,Gen2的控制信号为高有效;Gen1使用sof、eof、valid来控制有效数据进入IP核,Gen2使用tvalid和tlast来控制有效数据进入IP核;Gen1的包头信息是独立的接口,sof对应的就是第一个payload数据,Gen2的包头信息是作为数据写入tdata接口;

pYYBAGGYHbyAbRP0AAEn8HZl8G0377.png

D. 非法的数据包会造成SRIO IP核堵塞,比如数据长度和包头里的size不匹配,比如没有tlast信号等;

E. 如果一个数据包payload不足2N,经过SRIO IP核后会自动补充到2N,例如我们发送一个payload为48byte的包,到达接收端的将会是一个64byte的数据包;

F. 如果device ID错误,数据包将会被过滤;

G. 在FPGA和对端器件调试SRIO的时候,DSP和Power PC的SRIO通常也支持不同的几种环回模式,遇到链路不通的问题可以借助这些环回模式来进行定位;

H. 如果系统中接的有SRIO Switch芯片,一般IIC接口和SRIO接口的Maintenance包都可以用于配置Switch芯片;

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Xilinx
    +关注

    关注

    70

    文章

    2110

    浏览量

    119200
  • IP
    IP
    +关注

    关注

    5

    文章

    1387

    浏览量

    148237
  • sRIO
    +关注

    关注

    1

    文章

    28

    浏览量

    20789
收藏 人收藏

    评论

    相关推荐

    FPGA优质开源模块-SRIO IP核的使用

    本文介绍一个FPGA常用模块:SRIO(Serial RapidIO)。SRIO协议是一种高速串行通信协议,在我参与的项目中主要是用于FPGA和DSP之间的高速通信。有关SRIO协议的
    的头像 发表于 12-12 09:19 876次阅读
    FPGA优质开源模块-<b class='flag-5'>SRIO</b> <b class='flag-5'>IP</b>核的使用

    下载Xilinx IP Core

    除了在Xilinx官网上在哪里能下载到Xilinx IP Core 及license? 如FFTFIRCORDIC核等!
    发表于 06-20 23:51

    srio_v5_6 IP核使用发生错误

    现在,我在ISE13.1软件中使用srio_v5_6 Ip内核。我使用CORE生成器为X6VLX240T-1156-1设备生成一个srio_v5_6 IP内核。然后我用ISE13.1软
    发表于 10-08 11:10

    基于SRIO协议的板级芯片互联技术

    本文介绍了这种基于SRIO互联技术的高速实时数据处理硬件平台,并在该平台上研究了多DSP之间、DSP与FPGA之间的SRIO通信技术。
    发表于 01-10 15:07 3569次阅读
    基于<b class='flag-5'>SRIO</b>协议的板级芯片互联技术

    Xilinx TCP_IP协议实现

    Xilinx FPGA工程例子源码:Xilinx TCP_IP协议实现
    发表于 06-07 14:54 31次下载

    XilinxIP:1024点FFT快速傅立叶变换

    Xilinx FPGA工程例子源码:XilinxIP:1024点FFT快速傅立叶变换
    发表于 06-07 15:07 51次下载

    Xilinx DDR控制器MIG IP核的例化及仿真

    DDR对于做项目来说,是必不可少的。一般用于数据缓存和平滑带宽。今天介绍Xilinx DDR控制器MIG IP核的例化及仿真。 FPGA芯片:XC7K325T(KC705) 开发工具:Vivado
    的头像 发表于 11-26 15:02 7431次阅读
    <b class='flag-5'>Xilinx</b> DDR控制器MIG <b class='flag-5'>IP</b>核的例化及仿真

    Xilinx FIR IP介绍及仿真

    Xilinx FIR IP介绍与仿真 1 xilinx fir ip 简介 1)符合 AXI4-Stream 的接口 2)高性能有限脉冲响
    的头像 发表于 10-30 12:29 515次阅读

    在Vivado中使用SRIO高速串行协议的IP演示官方例程

    在FPGA开发过程中不可避免的要使用到一些IP,有些IP是很复杂的,且指导手册一般是很长的英文,仅靠看手册和网络的一些搜索,对于复杂IP的应用可能一筹莫展。 这里以Xilinx为例,在
    的头像 发表于 04-15 15:19 6011次阅读
    在Vivado中使用<b class='flag-5'>SRIO</b>高速串行协议的<b class='flag-5'>IP</b>演示官方例程

    Xilinx平台Aurora IP介绍(二)时钟与复位

    对于我们使用Xilinx或其他的成熟IP而言,IP相当于一个黑匣子,内部实现的逻辑功能我们知道,但是控制不了,只能默认OK;一般而言,成熟IP都是经过反复验证和使用,确实没有什么问题。
    的头像 发表于 02-19 18:30 3764次阅读
    <b class='flag-5'>Xilinx</b>平台Aurora <b class='flag-5'>IP</b><b class='flag-5'>介绍</b>(二)时钟与复位

    Xilinx FFT IP介绍与仿真测试

    Xilinx快速傅立叶变换(FFT IP)内核实现了Cooley-Tukey FFT算法,这是一种计算有效的方法,用于计算离散傅立叶变换(DFT)。
    的头像 发表于 03-30 11:01 2376次阅读

    SRIO IP核的三层协议的作用?

    数据从远程设备(假设为DSP的SRIO端)传输过来,FPGA端(假设我们这端为FPGA的SRIO端口)通过RX接收到串行数据,先到达物理层进行时钟恢复,串并转换,之后进行8b/10b解码操作、CRC校验,这一系列的操作都在物理层完成,之后进入传输层
    的头像 发表于 03-03 10:19 730次阅读

    SRIO IP核的三层协议的作用解析

    SRIO这种高速串口复杂就复杂在它的协议上,三层协议:逻辑层,传输层以及物理层。 数据手册会说这三层协议是干什么的呢?也就是分工(【FPGA】SRIO IP核系统总览以及端口介绍
    的头像 发表于 04-25 11:20 1209次阅读
    <b class='flag-5'>SRIO</b> <b class='flag-5'>IP</b>核的三层协议的作用解析

    基于FPGA的SRIO协议设计

    本文介绍一个FPGA常用模块:SRIO(Serial RapidIO)。SRIO协议是一种高速串行通信协议,在我参与的项目中主要是用于FPGA和DSP之间的高速通信。有关SRIO协议的
    的头像 发表于 09-04 18:19 697次阅读
    基于FPGA的<b class='flag-5'>SRIO</b>协议设计

    srio交换芯片是什么?srio交换芯片的原理和作用

    SRIO(Serial RapidIO)交换芯片是一种高性能的通信芯片,专门设计用于实现基于SRIO协议的数据交换和传输。SRIO是一种点对点串行通信协议,广泛应用于嵌入式系统、高性能计算、网络通信
    的头像 发表于 03-16 16:40 1646次阅读