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
    +关注

    关注

    71

    文章

    2172

    浏览量

    122344
  • IP
    IP
    +关注

    关注

    5

    文章

    1724

    浏览量

    150093
  • sRIO
    +关注

    关注

    1

    文章

    31

    浏览量

    21088
收藏 人收藏

    评论

    相关推荐

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

    本文介绍一个FPGA常用模块:SRIO(Serial RapidIO)。SRIO协议是一种高速串行通信协议,在我参与的项目中主要是用于FPGA和DSP之间的高速通信。有关SRIO协议的
    的头像 发表于 12-12 09:19 2404次阅读
    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

    Xilinx TCP_IP协议实现

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

    Xilinx CORE生成器IP列表名称及说明详解

    本页包含通过LabVIEW FPGA模块可用的Xilinx CORE生成器IP的列表。LabVIEW通过Xilinx IP节点实现该IP
    发表于 11-18 05:55 4919次阅读

    Xilinx FIR IP介绍及仿真

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

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

    在FPGA开发过程中不可避免的要使用到一些IP,有些IP是很复杂的,且指导手册一般是很长的英文,仅靠看手册和网络的一些搜索,对于复杂IP的应用可能一筹莫展。 这里以Xilinx为例,在
    的头像 发表于 04-15 15:19 6650次阅读
    在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 5770次阅读
    <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 3128次阅读

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

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

    Xilinx Vivado DDS IP使用方法

    DDS(Direct Digital Frequency Synthesizer) 直接数字频率合成器,本文主要介绍如何调用Xilinx的DDS IP核生成某一频率的Sin和Cos信号。
    的头像 发表于 07-24 11:23 5275次阅读
    <b class='flag-5'>Xilinx</b> Vivado DDS <b class='flag-5'>IP</b>使用方法

    基于FPGA的SRIO协议设计

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

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

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

    如何申请xilinx IP核的license

    在使用FPGA的时候,有些IP核是需要申请后才能使用的,本文介绍如何申请xilinx IP核的license。
    的头像 发表于 10-25 16:48 550次阅读
    如何申请<b class='flag-5'>xilinx</b> <b class='flag-5'>IP</b>核的license

    SRIO介绍xilinx的vivado 2017.4中生成srio例程代码解释

    介绍 本处将从SRIO的数据流,数据协议,常用FPGA支持模式,以及IP例程中的时钟大小计算等部分介绍SRIO的情况。 3.1
    的头像 发表于 12-10 16:24 867次阅读
    <b class='flag-5'>SRIO</b><b class='flag-5'>介绍</b>及<b class='flag-5'>xilinx</b>的vivado 2017.4中生成<b class='flag-5'>srio</b>例程代码解释