SRIO IP的学习与应用

1. 为什么选择SRIO

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

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

  1. 不同的数据包类型,支持使用SRIO传输不同的数据类型;
  2. 支持数据包优先级;
  3. 支持响应机制;
  4. 支持重传机制;
  5. 支持带目的地址的路由;
  6. 方便研发工程师定义灵活的硬件结构和变化的负荷分担;

2. XilinxSRIO IP特性

Xilinx SRIO IO 具有如下特性:

  1. 支持RapidIO互连Rev2.2协议;
  2. 支持1x、2x、4x,并且可以从x4、x2向下train down;
  3. 每条lane支持的线速率为1.25Gbs、2.5Gbs、3.125Gbs、5.0Gbs和6.25Gbs;
  4. 支持同时发生的Initiator和Target接口操作;
  5. 支持Doorbell传输和Message传输;
  6. 专有的Maintenance传输端口;
  7. 使用标准的AXI4-Lite和AXI4-Stream接口实现简单的握手机制和数据流控制;
  8. 所有发送数据包支持source ID可配置;
  9. 针对复杂的互连系统,支持16bit device ID配置;
  10. TXbuffer和RX buffer深度独立可配置,可配置深度分别为8包、16包和32包;
  11. 支持TX flow control和RX flow control;
  12. 支持multi-cast传输;

3. Xilinx SRIO IP架构

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

  1. 逻辑和传输层定义了操作协议,包含数据组包和解包,提供用户逻辑接口、传输接口和配置接口;
  2. 传输层定义了包交换、路由和寻址机制,包含发送和接收数据缓存、数据包传输和流控、优先级控制和数据包排序、跨时钟域处理和重传管理;
  3. 物理层定义了电气特性、链路控制和纠错重传等,包含链路训练、初始化和协议实现、CRC和响应机制、提供和Transceiver的接口;
  4. Clock&Reset部分实现SRIO时钟、复位、寄存器管理(Clock、Reset、Register Manager):该部分实现SRIO接口时钟方案、复位策略及寄存器配置和管理功能;

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

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

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

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

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

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

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

4. SRIO 数据包格式

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

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

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

  1. LOG 接口的时序控制必须精准,否则可能会造成 SRIO IP 核堵塞;以 IREQ 接口为例说明:
  2. LOG 接口使用组合逻辑来控制时序,在实际上板测试过程中要考虑 tready 信号 随时可能变无效的情况,通常我用一个不使能任何输出寄存器的 FIFO 来做组合逻辑时序控制,在 Gen2 IP 使用时我的一个例子如下图所示;
  3. Gen1 IP 和 Gen2 IP 的差别在于: Gen1 的控制信号为低有效, Gen2 的控制信号为高有效; Gen1 使用 sof 、 eof 、 valid 来控制有效数据进入 IP 核, Gen2 使用 tvalid 和 tlast 来控制有效数据进入 IP 核; Gen1 的包头信息是独立的接口, sof 对应的就是第一个 payload 数据, Gen2 的包头信息是作为数据写入 tdata 接口;
  4. 非法的数据包会造成 SRIO IP 核堵塞,比如数据长度和包头里的 size 不匹配,比如没有 tlast 信号等;
  5. 如果一个数据包 payload 不足 2 N ,经过 SRIO IP 核后会自动补充到 2 N ,例如我们发送一个 payload 为 48byte 的包,到达接收端的将会是一个 64byte 的数据包;
  6. 如果 device ID 错误,数据包将会被过滤;
  7. 在 FPGA 和对端器件调试 SRIO 的时候, DSP 和 Power PC 的 SRIO 通常也支持不同的几种环回模式,遇到链路不通的问题可以借助这些环回模式来进行定位;
  8. 如果系统中接的有 SRIO Switch 芯片,一般 IIC 接口和 SRIO 接口的 Maintenance 包都可以用于配置 Switch 芯片;
  9. 关于 SRIO 的更多 Xilinx 官方解答,请参考链接: https://www.xilinx.com/support/answers/50166.html
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA(Field-Programmable Gate Array)是一种可编逻辑器件,可以根据用户的需求进行灵活的硬件设计。SRIO(Serial RapidIO)是一种高速串行总线协议,常用于高性能计算和通信系统中。 要在FPGA中添加SRIO IP(Intellectual Property),可以按照以下步骤进行: 1. IP核选择:首先,需要选择适用于目标FPGASRIO IP核IP核是预先设计好的硬件模块,可以直接集成到FPGA设计中。可以从FPGA厂商提供的IP库中选择合适的SRIO IP核。 2. IP核配置:选择好IP核后,需要对其进行配置。配置包括设置SRIO协议的速率、端口数量、地址映射等参数,以满足具体应用需求。 3. 硬件连接:将SRIO IP核与其他逻辑模块进行连接。这包括将SRIO IP核的输入输出端口与其他模块的信号线相连,以实现数据的传输和通信。 4. 约束文件设置:为了确保FPGA设计的正确实现,需要编写约束文件来指定时序和物理约束。约束文件包括时钟频率、时序要求、引脚映射等信息。 5. 生成比特流文件:完成设计后,需要将FPGA设计编译成比特流文件。比特流文件是一种二进制文件,可以被FPGA编程器加载到目标FPGA中。 6. 下载到FPGA:将生成的比特流文件下载到目标FPGA中,完成SRIO IP的添加。 需要注意的是,具体的步骤和工具可能会因不同的FPGA厂商和开发环境而有所差异。建议参考相关的FPGA开发工具和文档,以获得更详细的指导和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值