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

SRIO IP的学习与应用相关推荐

  1. xilinx srio ip学习笔记之srio example

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之srio example 前言 IP的配置 例程 前言 前面对SRIO的理论有了初步的理解,现在 ...

  2. xilinx srio ip学习笔记之初识srio

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之初识srio 前言 IP 设置 总结 前言 因为工作原因,需要对rapidio 的协议进行了解, ...

  3. 【FPGA】SRIO IP核系统总览以及端口介绍(二)(I/O Port 含义介绍)

    上篇博文:[FPGA]SRIO IP核系统总览以及端口介绍(一)(User Interfaces 之 I/O Port)根据数据手册PG007,介绍到了逻辑层接口的IO口,今天想研究下,这些端口如何使 ...

  4. 【FPGA】SRIO IP核的三层协议的作用?

    SRIO这种高速串口复杂就复杂在它的协议上,三层协议:逻辑层,传输层以及物理层. 数据手册会说这三层协议是干什么的呢?也就是分工([FPGA]SRIO IP核系统总览以及端口介绍(一)(User In ...

  5. 【FPGA】SRIO IP核系统总览以及端口介绍(一)(User Interfaces 之 I/O Port)

    系统总览 RapidIO标准分为三层:逻辑,传输和物理. 逻辑层定义整体协议和数据包格式. 这是端点启动和完成事务(transaction)所必需的信息. 传输层提供数据包从端点移动到端点所需的路由信 ...

  6. 网络运维基础之IP地址学习

    网络运维基础之IP地址学习 一.IP地址介绍 二.IP地址分类 三.IP地址的私有地址 三.IP地址的子网掩码 1.IP地址格式 2.子网掩码计算 一.IP地址介绍 IP地址是IP协议提供的一种统一的 ...

  7. TCP/IP协议学习(五) 基于C# Socket的C/S模型

    TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...

  8. TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP

    TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP 1. 命令ping的用法和解析 1.1 ping 的用法 1.2 TTL 是什么? 1.3 SEQ是什么? 2.ICMP协议 2. ...

  9. SRIO IP Core license for VC709 ethenet 40/50G subsystem IP core license for VCU118

    SRIO IP Core license for VC709 & ethenet 40/50G subsystem IP core license for VCU118 百度网盘链接: htt ...

  10. IP核学习之PLL锁相环

    IP核学习之PLL锁相环 IP核是什么 Xilinx7 系列 "clocking resource " IP核实验 IP核是什么 IP核就是知识产权核或知识产权模块的意思,在EDA ...

最新文章

  1. 新来了个技术总监:谁再用 @Async 创建线程以后就不用来了!!
  2. Source Insight 4.0常用设置
  3. PHP导出pdf文件_dompdf
  4. php怎么查询mysql_php如何查询数据库
  5. imfunny-技术人员创业的己见
  6. 视觉SLAM学习--简易版(B站网友)
  7. #每日一题:小计算器(模拟)
  8. [BUUCTF-pwn]——jarvisoj_test_your_memory
  9. Spring+Mybatis 多数据源配置
  10. windows7系统屏幕一直闪屏的解决教程
  11. php-open网站还可以用,nginx+php使用open_basedir限制站点目录防止跨站
  12. springboot+shiro+cas实现单点登录之cas server搭建
  13. SDN/NFV在演进中探寻路径
  14. Unity NGUI 之 UIScrollView 基本用法
  15. Android:实现应用版本更新
  16. 淘宝/天猫/京东/抖音直播年货节抢购秒杀助手更新下载,喵惠抢购助手支持自动免密支付,分享源码共同学习探讨
  17. Mac Yapi 内网安装保姆级步骤
  18. 让cocos2d-x 3.0读取cocostudio中的csb文件
  19. 同一个tomcat部署多个项目
  20. java版溺尸刷怪塔_教程/溺尸陷阱 _ 《我的世界》中文Minecraft Wiki:最详细的官方我的世界百科...

热门文章

  1. SIM900A—发送、接收中英文短信
  2. “深入浅出”学Golang!就选《Head First Go》
  3. 这10个比较好用的服务器管理软件你都知道吗?
  4. HTTP、HTTPS、SPDY、HTTP2.0、HTTP3.0 —— 通信协议学习笔记(二)
  5. 操作系统server 2012 r2 安装简体中文语言包
  6. 基于Springboot实现汽车4S店销售管理系统
  7. matlab实现振动弹簧的实时动画,仿真动画软件设计作品--理想弹簧振子简谐振动...
  8. Ubuntu16.04.2中安装minidwep
  9. 软件使用经验合集(操作系统、常用软件)
  10. 求解鸡兔同笼问题C语言