精华内容
下载资源
问答
  • SRIO学习笔记之SRIO简介与Xilinx SRIO ip核例程详解

    千次阅读 多人点赞 2019-10-03 11:22:50
    3. SRIO协议介绍 3.1 SRIO的数据流 3.2 SRIO的数据协议 3.3 SRIO常用FPGA支持的模式 3.4 SRIO例程代码的时钟计算 4. SRIO的例程代码结构 4.1 SRIO发送模块详解 4.1.1 发送数据部分代码功能说明 4.1.2 接收...

    目录

    1. 概述

    2. 参考文件

    3. SRIO协议介绍

    3.1 SRIO的数据流

    3.2 SRIO的数据协议

    3.3 SRIO常用FPGA支持的模式

    3.4 SRIO例程代码的时钟计算

    4. SRIO的例程代码结构

    4.1 SRIO发送模块详解

    4.1.1 发送数据部分代码功能说明

    4.1.2 接收响应部分的代码功能详解

    4.2 SRIO接收模块详解

    4.2.1 接收数据部分的代码功能说明

    4.2.2 发送响应部分的代码功能说明

    5. 疑点

    疑点1:

    疑点2:


    1. 概述

    本文是用于记录srio的学习情况,以及一些对xilinx的vivado 2017.4中生成srio例程代码的解释。

    2. 参考文件

    《pg007_srio_gen2》

    3. SRIO协议介绍

    本处将从SRIO的数据流,数据协议,常用FPGA支持模式,以及IP例程中的时钟大小计算等部分介绍SRIO的情况。

     

    3.1 SRIO的数据流

    SRIO通过生成IP后,通常情况下主要使用的接口为四组:ireq,iresp,treq,tresp。每个IP生成后都有这四组接口,即可以同时用于发送数据,接收数据,发送响应数据,接收响应数据。而这些接口间的信号流向如下图所示:

     

    即其信号流为IREQ发出给TREQ,TRESP发出给IRESP。

     

    3.2 SRIO的数据协议

    SRIO传输与响应的包类型很多,具体看手册P73-P74页。

     

    在使用Xilinx的ip核时,通常用的都是HELLO包,所以这里指给HELLO包的格式。如下图所示。Packet 中的具体符号表示意义请查看手册P76-P77页。其中的size为一包传输byte的数据量,范围为1-256 bytes。

        其典型的传输数据的用户接口代码的波形协议如下图所示:

     

    3.3 SRIO常用FPGA支持的模式

     

     

    3.4 SRIO例程代码的时钟计算

    refclk可使用时钟如下图table3-3所示。其中典型的时钟计算如Table3-4表头所示。:

    gt_clk     = line_rate/20;

    gt_pcs_clk = line_rate/40;

    phy_clk    = (gt_clk*link_width)/4;

    log_clk    = phy_clk;

    cfg_clk    = phy_clk;

     

    4. SRIO的例程代码结构

    SRIO生成例程后,其例程结构如下图所示。看着有8个文件,但常规情况下与我们相关的只有只有两个文件,即下图高亮的两个文件:

    1. srio_request_gen_srio_gen2_0(发送数据模块);
    2. srio_response_gen_srio_gen2_0(接收数据模块)

     

     

    4.1 SRIO发送模块详解

    SRIO发送模块中主要有两部分代码,发送数据部分(ireq),发送响应数据部分(iresp)。接收部分端口如下图所示:

     

     

     

    4.1.1 发送数据部分代码功能说明

    发送的包头数据的来源为“request_data_out = instruction[request_ address]”,即数据是从`include "instruction_list.vh"文件中调入的。而选择其文件中的哪些数据则是根据request_address算来的,具体如下图部分所示。

     

    最终包头的格式为:

     

        而包中去掉包头后传输的数据为每8位递增数据数据,具体如下图所示。

     

    重点:发送用户自己的数据与包头时设置,将go的值设置为0x01。

     

     

     

    4.1.2 接收响应部分的代码功能详解

    接收响应部分主要功能是在期望的得到回应的包类型时,检查是否回应的对应包头类型。

    而判断包头类型是否正确主要是根据预判的ftype(expected_ftype)时,检查接收到的ttype是否为协议规定的类型。判断的方式为下图位置:

     

    4.2 SRIO接收模块详解

    SRIO接收模块中主要有两部分代码,接收数据部分(treq),接收响应数据部分(tresp)。接收部分端口如下图所示:

     

     

    4.2.1 接收数据部分的代码功能说明

    接收部分主要是通过解析接收端口的信号,实时的解析如下图的信息,以及first_beat(beat为1个时钟的*_data),之后将每包数据去掉包头后丢入“RAMB36SDP(local_data_store)”中,但是每一包丢入数据时的首地址是current_addr[10:3]。

     

     

     

    4.2.2 发送响应部分的代码功能说明

    响应部分的代码分两部分,第一部分是响应的包头信号部分,第二部分是响应的数据部分。

    包头信号部分信息与响应的包类型相关,如下图所示,详细信息参考《pg007》的p76页。

     

    数据部分的信息主要是提取treq中输入的信号。但提取的方式是根据starting_read_addr = {1'b0, response_data_out[29:22]}开始提取数据输出,即是根据current_addr[10:3]的地址提取数据。也就是说这个提取数据的位置是根据输入数据包中的地址中的一部分作为首地址来定位的数据开始地方。

    当然是否需要反馈数据部分得根据接收到的包头类型而定,有些包只需要反馈包头不需要数据,有些包不需要进行反馈,详情参考手册P73页。

    保证存入“RAMB36SDP(response_queue_inst)”的包头判断信息无误的依据是RAMB36SB的写使能WREN(generate_a_response),generate_a_response是在接收到的first_beat时,且这个包头是需要反馈数据的包头时才会拉高使能。需要反馈的依据在《pg007》的Table 3-1,具体信息如下图所示:

     

     

    5. 疑点

    疑点1:

    虽然理论上来说反馈的数据提取数据是根据包头信息在同一个位置提取的,那么反馈的数据就和接收的对应包数据相同。但是由于接收到的数据包头的地址可能相同,至少current_addr[10:3]有很大几率相同,那么就会存在数据覆盖的现象,那么就会导致反馈的数据不是想要的数据,即返回的数据与接收到的数据不同。

     

    疑点2:

        为何把“current_addr[23:16] == 8'h12”作为pull_from_store(从存储地址开始拉高)?

       

        答:这个只是对应SRIO例程的发射数据,发射数据自定义的“真实起始地址”,参考手册P161,如下图所示。在自己使用时可以屏蔽掉与这个相关的信号。

     

     

     

    展开全文
  • xilinx srio应用

    2020-08-28 20:06:35
    srio数据收发,NWRITE或者SWRITE数据发送接收,在6.25Gx4的eg上进行修改而来,仅修改发送模块,接收模块可直接使用,内有说明,仅供参考,有用回复点赞
  • xilinx srio最权威资料

    2018-09-14 13:37:08
    xilinx srio最权威资料
  • xilinx srio gen2 ip核资料

    2021-03-11 09:28:05
    xilinx srio ip核使用记录,srio协议规范,xilinx srio gen2手册
  • 最详细【SRIOXilinx RapidIO核详解

    千次阅读 多人点赞 2019-08-13 09:22:09
    Buffer对于保证包发送和流控操作是非常有必要的,Xilinx提供了一个可配置的Buffer解决方案,可以在系统性能和资源利用率之间权衡选择。  发送Buffer负责把将要发出去的事务放到队列中,并对发往物理层(PHY)的...

    目录

    一、RapidIO核概述

    二、RapidIO核接口说明

    2.1 逻辑层接口

    2.2 Buffer接口

    2.3 物理层接口

    2.4 寄存器空间

    三、使用RapidIO核

    3.1 设计指南

    3.2 时钟

    3.3 复位

    3.4 RapidIO协议简介

    四、RapidIO核配置

    五、总结

    六、参考资料


    一、RapidIO核概述

      RapidIO核的设计标准来源于RapidIO Interconnect Specification rev2.2,它支持1x,2x和4x三种模式,每通道的速度支持1.25Gbaud,2.5Gbaud,3.125Gbaud,5.0Gbaud和6.25Gbaud五种。

      RapidIO核分为逻辑层(Logical Layer),缓冲(Buffer)和物理层(Physical Layer)三个部分。其中逻辑层(Logical Layer)支持发起方(Initiator)和目标方(Target)同时操作;支持门铃事务(DOORBELL)和消息事务(MESSAGE),为维护事务(MAINTENANCE)设计了专用的端口;采用AXI4-Lite接口和AXI4-Stream接口,支持简单的握手机制去控制数据流;支持可编程的Source ID,支持16-bit的device IDs(可选)。缓冲层(Buffer)支持8,16和32包的独立可配置的TX和RX Buffer深度;支持独立的时钟,支持可选的发送数据流控制。物理层(Physical Layer)支持可配置的空闲序列1和空闲序列2;支持关键请求流(Critical Request Flow);支持多播事件。

      注意:上面的几个专业术语的解释都能在前几篇博客中找到解释,不明白的可以回过头去看看。

      RapidIO互连架构,与目前大多数流行的集成通信处理器、主机处理器和网络数字信号处理器兼容,是一种高性能、包交换的互连技术。它能够满足高性能嵌入式工业在系统内部互连中对可靠性、增加带宽,和更快的总线速度的需求。

      RapidIO标准定义为三层:逻辑层、传输层和物理层。逻辑层定义了总体协议和包格式。它包括了RapidIO设备发起和完成事务的必要信息。传输层提供了RapidIO包传输过程中的路由信息。物理层描述设备级接口细节,例如包传输机制、流控、电气特性和低级错误管理。这种划分不需要对传输层或物理层规范进行修改,就可以灵活的给逻辑层规范添加新的事务类型。

      整个RapidIO核的架构如下图所示:

     

    二、RapidIO核接口说明

      RapidIO核把三个子核封装在一起,它提供了一个高层次,低维护的接口。本节介绍了RapidIO各个子核和接口的基本功能视图。RapidIO核的顶层框图如下图所示

     

    2.1 逻辑层接口

      逻辑层(LOG)被划分成几个模块来控制并解析发送和接收数据包。逻辑层(LOG)有三个接口:用户接口(User Interface),传输接口(Transport Interface)和配置接口(Configuration Fabric Interface)。

      下图是逻辑接口的示意图

     

      用户接口包括能发起和接收包的端口。当生成IP核的时候可以配置端口的数目和事务类型,同时也能通过AXI4-Lite接口发起维护事务对本地或者远程的寄存器进行访问与配置。

      传输接口包含发送和接收两个端口,它是用来连接中间的Buffer,对于RapidIO的顶层模块来说,这两个接口不可见。

      配置接口也包含两个端口。其中配置主机端口(Configuration Master Port)用来读写本地配置空间。逻辑配置寄存器端口(LOG Configuration Register Port),它可以用来读写一部分逻辑层或传输层配置寄存器。

      对于RapidIO IP核来说,用户最需要关注的就是用户接口,下面着重介绍用户接口的相关内容。

           用户接口包含I/O端口集和三个可选的端口,三个可选的端口分别为消息端口(Messaging Port),维护端口(Maintenance Port)和用户自定义端口(User-Defined Port)。这些接口都在模块的顶层,每种事务类型都在指定的端口上传输。其中,任何支持的I/O事务例如NWRITEs,NWRITE_Rs,SWRITEs,NREADs和RESPONSEs(不包括维护事务的responses)全部都在I/O端口上发送或者接收。消息(Message)事务能在I/O端口传输或者在消息端口传输,这取决于是否在IP核的配置选择分离I/O端口与Message端口。门铃(Doorbell)事务只能在I/O端口传输,而不能在Message端口上传输。维护事务包只能在维护端口上传输。如果事务是由用户自定义的一种不支持的类型,那么这类事务就可以在用户自定义端口上传输,如果用户自定义的端口在IP核的配置中未使能,那么用户自定义的包会被丢弃。

      I/O端口(I/O Port)

      I/O端口能被配置为两种类型:Condensed I/O或Initiator/Target。这两种类型可以在IP核的配置中进行选择。I/O端口的数据流协议是AXI4-Stream协议,它支持两种类型的包格式,分别是HELLO格式与SRIO Stream格式。

      Condensed I/O端口类型减少了用于发送和接收I/O包的端口数目。它只用一个AXI4-Stream通道来发送所有类型的包,同样,也只用一个AXI4-Stream通道去接收所有类型的包。Condensed I/O端口示意图如下

     

           Initiator/Target端口类型把请求事务与响应事务分别处理,所以一共有4个AXI4-Stream通道用于I/O事务的传输。Initiator/Target端口的示意图如下图所示,其中灰色的箭头表示请求事务,黑色的箭头表示响应事务。

     

           本地设备(Local Device)生成的请求(Requests)通过ireq通道发送,远程设备(Remote Device)产生的响应包通过iresp通道接收来完成整个事务的交互过程。

           远程设备(Remote Device)生成的请求(Requests)通过treq通道接收,本地设备(Local Device)产生的响应包通过tresp通道发送来完成整个事务的交互过程。

      在顶层模块中,变量名与通道的对应关系如下:

      s_axis_ireq* 对应于ireq通道

      m_axis_iresp* 对应于iresp通道

      m_axis_treq* 对应于treq通道

      s_axis_tresp* 对应于tresp通道

     

      消息端口(Messaging Port)

      消息端口是一个可选的接口,消息事务既能在I/O端口上发送,也能在独立的消息端口上发送。独立的消息端口类型为Initiator/Target类型。下图是消息端口的示意图

     

      本地设备(Local Device)生成的请求(Requests)通过msgireq通道发送,远程设备(Remote Device)产生的响应包通过msgiresp通道接收来完成整个事务的交互过程。

           远程设备(Remote Device)生成的请求(Requests)通过msgtreq通道接收,本地设备(Local Device)产生的响应包通过msgtresp通道发送来完成整个事务的交互过程。

           在顶层模块中,变量名与通道的对应关系如下:

      s_axis_msgireq* 对应于msgireq通道

      m_axis_msgiresp* 对应于msgiresp通道

      m_axis_msgtreq* 对应于msgtreq通道

      s_axis_msgtresp* 对应于msgtresp通道

     

      用户自定义端口(User-Defined Port)

      用户自定义端口是一个可选的端口,它包括两个AXI4-Stream通道,一个用于发送另一个用来接收。用户自定义端口仅仅支持SRIO Stream格式的事务。下图是用户自定义端口的示意图

     

      在顶层模块中,变量名与接口的对应关系如下:

      s_axis_usrtx* 对应于user_io_tx接口

      m_axis_usrrx* 对应于user_io_rx接口

     

      维护端口(Maintenance Port)

      维护端口使用的是AXI4-Lite接口协议,AXI4-Lite接口允许用户访问本地或远程配置空间。下图是AXI4-Lite维护端口示意图

     

           上图中从右到左的黑色箭头表示请求(Requests)通道,从左到右的灰色箭头表示响应(Responses)通道。每个通道有独立的ready/valid握手信号。

     

      状态(Status)

      维用户接口的状态信号包括deviceid和port_decode_error,定义如下表所示

    信号

    方向

    描述

    deviceid[15:0]

    输出

    Base DeviceID CSR(偏移地址为0x60)寄存器的值

    port_decode_error

    输出

    此信号为高说明用户自定义端口未使能,一个不支持的事务被接收并立即丢弃。当下一个支持的事务包在任意用户接口被接收以后此信号被拉低。这个信号同步于log_clk信号

     

    2.2 Buffer接口

      Buffer的目的是对发送和接收的包进行缓冲。Buffer对于保证包发送和流控操作是非常有必要的,Xilinx提供了一个可配置的Buffer解决方案,可以在系统性能和资源利用率之间权衡选择。

      发送Buffer负责把将要发出去的事务放到队列中,并对发往物理层(PHY)的包流进行管理。接收Buffer和发送Buffer的大小可以在IP核中配置为8、16或32个包的深度。发送Buffer是一个存储和转发缓冲区,它是用来降低包到包的延迟以最大化流吞吐量。发送Buffer必须保存每个包直到包被接收方成功接收,当接收方成功接收包以后,发送Buffer才会释放包来给其他包腾出空间。当流控(Flow Control)发生时,通常会有多个未发送的包滞留在发送Buffer中,发送Buffer会根据包的类型与优先级进行重新排序,然后按照响应包先发送,请求包后发送的顺序把发送Buffer中的包依次发出去。Buffer的另一个作用是处理跨时钟域的问题,当生成IP核的时候可以根据需求添加或者移除跨时钟域逻辑。对于多通道的RapidIO来说,由于物理层的时钟在start-up场景和traindown场景是动态的,所以推荐把跨时钟域逻辑加上,这样可以保证用户逻辑工作在已知的速率上。

      接收Buffer类似于一个FIFO,它用来存储和转发接收通路上发送给逻辑层的数据。接收Buffer也包含跨时钟域逻辑,这可以保证逻辑层和物理层工作在不同的速率上,和发送Buffer一样,对于多通道RapidIO,推荐加上跨时钟域逻辑。

      所有Buffer层的接口对于RapidIO顶层都是不可见的。Buffer层示意图如下

     

           由上图可知,在Buffer层的逻辑层与物理层两侧均有两个AXI4-Stream通道,一个为发送通道,另外一个为接收通道。还有一个AXI4-Lite通道用于去配置Buffer层的配置空间。

    2.3 物理层接口

           物理层(PHY)用来处理链路训练(Link Training),初始化(Initialization)和协议(Protocol),同时还包括包循环冗余校验码(CRC)与应答标识符的插入。物理层接口与高速串行收发器相连。串行收发器在IP核中被设计为一个外部的例化模块以降低用户使用模型的难度。物理层接口的示意图如下图所示

     

           物理层与Buffer层通过两个AXI4-Stream通道相连,同时物理层有一个通道的AXI4-Lite接口与配置结构相连,可以通过这个通道访问物理层的配置空间。物理层还通过一个串行接口(Serial Interface)与串行收发器(Serial Transceivers)相连。

    2.4 寄存器空间

           RapidIO的寄存器空间如下表所示

     

     

      能力寄存器空间(Capability Register Space)

      能力寄存器空间的寄存器是只读寄存器,它们在逻辑层中实现。能力寄存器映射表如下表所示

     

      命令和状态寄存器空间(Command and Status Register Space)

      命令和状态寄存器空间的寄存器和能力寄存器一样都在逻辑层实现,命令和状态寄存器空间的映射表如下表所示

     

           寄存器空间还包括Extended Feature Space与Implementation-defined Space两种,关于这两种寄存器空间的说明请查看pg007_srio_gen2.pdf。

    三、使用RapidIO核

    3.1 设计指南

           RapidIO协议定义了七种事务类型,每种事务类型执行不同的功能。RapidIO包格式中的FTYPE字段与TTYPE字段共同确定了事务的类型,与标准RapidIO协议不同的是,RapidIO核中定义了第9类事务(FTYPE=9)——DATA STREAMING事务,它是一类带有数据负载的写事务,而标准RapidIO协议中第9类事务是保留事务。详细的对应关系如下表所示

    Ftype

    (Format Type)

    Ttype

    (Transaction Type)

    包类型

     

    功能

    0~1

    ——

    Reserve

    2

    4’b0100

    NREAD

    读指定的地址

    4’b1100

    ATOMIC increment

    先往指定的地址中传递数据,在把传递的数据加1,此操作为原子操作,不可打断

    4’b1101

    ATOMIC decrement

    先往指定的地址中传递数据,在把传递的数据减1,此操作为原子操作,不可打断

    4’b1110

    ATOMIC set

    把指定地址中的数据每个bit全部写1

    4’b1111

    ATOMIC clear

    把指定地址中的数据清0(每个bit全部清零)

    3~4

    ——

    Reserve

    5

    4’b0100

    NWRITE

    往指定的地址写数据

    4’b0101

    NWRITE_R

    往指定的地址写数据,写完成以后接收目标器件(Target)的响应

    4’b1101

    ATOMIC test/swap

    对指定地址中的数据进行测试并交换,此操作为原子操作,不可打断

    6

    4’bxxxx

    SWRITE

    以流写方式写指定的地址,与NWRITE以及NWRITE_R相比,此方式效率最高

    7

    ——

    Reserve

    8

    4’b0000

    MAINTENANCE read request

    发起读配置,控制,状态寄存器请求

    4’b0001

    MAINTENANCE write request

    发起写配置,控制,状态寄存器请求

    4’b0010

    MAINTENANCE read response

    产生读配置,控制,状态寄存器响应

    4’b0011

    MAINTENANCE write response

    产生写配置,控制,状态寄存器响应

    4’b0100

    MAINTENANCE write resquest

    端口写请求

    9

    ——

    DATA Streaming

    数据流写,请求事务包含有效数据

    10

    4’bxxxx

    DOORBELL

    门铃

    11

    4’bxxxx

    MESSAGE

    消息

    12

    ——

    Reserve

    13

    4’b0000

    RESPONSE

    no data

    不带有效数据的响应包

    4’b1000

    RESPONSE

    with data

    带有效数据的响应包

    14~15

    ——

    Reserve

     

      逻辑层AXI4-Stream串行RapidIO接口用法

      RapidIO核事务收发接口采用的协议是AXI4-Stream协议。AXI4-Stream协议用ready/valid握手信号在主从设备之间传输信息。AXI4-Stream协议用tlast信号指示传输的最后一个数据从而确定包的边界,用tkeep字节使能信号指示数据中的有效字节,它还包括有效数据tdata信号以及用户数据tuser信号用来传输实际的包数据。

      HELLO包格式(重点)

      为了简化RapidIO包的构建过程,RapidIO核的事务传输接口(ireq,treq,iresp,tresp)可以配置为HELLO(Header Encoded Logical Layer Optimized)格式。这种格式把包的包头(Header)域进行标准化,而且把包头和数据在接口上分开传输,这将简化控制逻辑并且允许数据与发送边界对齐,有助于数据的管理。

      HELLO格式的包如下图所示

     

           其中,各个字段的定义如下表所示

    字段

    位置

    描述

    TID

    [63:56]

    包的事务ID(Transaction ID),RapidIO手册规定在给定的时机,RapidIO包只能有唯一的TID与Src ID对。

    FTYPE

    [55:52]

    包的事务类(Transaction Class),HELLO格式支持的FTYPEs为2,5,6,A,B和D。

    TTYPE

    [51:48]

    包的事务类型(Transaction Type),当FTYPE的值为2,5或D时,不同的TTYPE值对应于包的不同功能。

    Priority

    [46:45]

    包的优先级。请求包的优先级值为0~2,响应包的优先级值为请求包的优先级加1

    CRF

    [44]

    包的关键请求流标志(Critical Request Flow)

    Size

    [43:36]

    有效数据负载的字节数减1,如果这个字段的值为0xFF,那么表示有效数据为256(0xFF + 1)个字节

    Error

    [35]

    当这个字段为1时表示包处于错误状态

    Address

    [33:0]

    事务的字节地址

    Info

    [31:16]

    信息域。仅在门铃事务(DOORBELL)中包含此字段

    Msglen-1

    [63:60]

    消息事务(MESSAGE)中包的个数。仅在消息事务(MESSAGE)中包含此字段

    Msgseg-1

    [59:56]

    包中的消息段,仅在消息事务(MESSAGE)中包含此字段,如果是单段(signal-segment)消息,此字段保留

    Mailbox

    [9:4]

    包的目标邮箱,仅在消息事务(MESSAGE)中包含此字段,除了单段(signal-segment)消息以外,此字段的高四位是保留位

    Letter

    [1:0]

    包的信件,仅在消息事务(MESSAGE)中包含此字段,指示了邮箱中的一个插槽

    S,E,R,xh,O,P

    [63:56]

    S:起始位,当此字段为1时表示这个包是新PDU(Protocol Data Unit)的第一个分段。

    E:结束位,当此字段为1时表示这个包是新PDU(Protocol Data Unit)的最后一个分段。当SE均为1时表示PDU仅包含一个包。

    R:保留位。

    Xh:扩展头(Extended Header)。目前版本不支持

    O:奇数(Odd),当此字段为1时表示数据负载有奇数个半字。

    P:填充位(Pad)。当此字段为1时,一个填充字节用于去填充数据到半字(half-word)边界

    Cos

    [43:36]

    服务类(Class of service)

    StreamID

    [31:16]

    点到点的数据流标识符

    Length

    [15:0]

    协议数据单元(Procotol Data Unit,PDU)长度

           HELLO格式的包中Size域的值等于传输的字节的总数减1,Size域的有效值范围为0~255,对应于实际传输的字节数量1~256。HELLO格式中的size和address域必须对应于RapidIO包中有效的size,address和wdptr域,所以HELLO格式的size和address字段的值存在一些限制条件。RapidIO核不能把Size域中的非法值修正为实际RapidIO包中Size域的有效值,所以需要对HELLO格式包的Size域提供一个正确的值。由于AXI4-Stream协议中tdata信号为8个字节,也就是一个双字(Double Word),所以Size域的值需要分两种情况讨论:传输的数据量小于8字节和传输的数据量大于8字节。

           传输的数据量小于8字节(Sub-DWORD Accesses):

           对于传输的数据量小于8字节的情况,address字段和size字段用来决定有效的字节位置(tkeep信号必须为0xff),但是仅仅能导致RapidIO包中rdsize/wrsize和wdptr为有效值的address和size值组合才是被允许的,下图是HELLO格式中address和size两个字段与有效字节位置的对应关系示意图(图中灰色部分为有效字节位置)

     

           例如,对size=2,address=34’h1_1234_5675这两个组合来说,由于size=2,所以往address中写入的数据个数为3(size+1)个字节,而address的最低3位为5(3’b101),通过上图可知,有效字节的位置是第7、6、5三个字节。对于size和address[2:0]值的组合不在上图中的情况都是非法的,这是应该避免的,比如,size=2, address=34’h1_1234_5673这种组合就属于非法的组合。

           传输的数据量大于8字节(Large Accesses):

           对于传输的数据量大于8字节,并且地址的起始字节偏移不为0的情况必须把数据分成多次进行传输,其中未对齐的小于8字节的段就可以通过上图中size和address的有效组合来确定有效字节的位置。另一种解决办法是,读操作的数据量大小可以被增加到下一个支持的大小,然后从对应的响应中剥离出必要的数据。

           因此,对于数据量为1个双字(8个字节)或更大的情况,address的最低3位必须为0,RapidIO手册给读写事务定义了范围从1到256个字节的可支持的数据量。请求事务的数据量如果大于一个双字(8个字节),那么数据量应该通过四舍五入到最接近的支持的值。读写事务有效的HELLO格式的数据量为:7,15,31,63,95(仅支持读事务),127,159(仅支持读事务),191(仅支持读事务),223(仅支持读事务)和255。

           对于写事务的数据量介于以上这些支持的数据量中间的情况,在通道的tlast信号为1之前应该给RapidIO核提供必要的数据量,仅仅提供的数据才能被发送。同理,用户的设计提供的数据可能少于期望的数据量,那么实际的数据量应该被写入,传输应该假设完成。

           RapidIO协议不支持传输的数据量大于256字节的情况,并且逻辑层(Logical)也不能把大于256字节的数据量分割为小的数据量进行发送。如果不满足这个要求可能会导致致命的链路错误,在这种错误情况下,链路可能会不断重传数据量大于256字节的包。

           HELLO格式数据的包头(Header)在用户接口的第一个有效时钟上,如果发送的事务携带数据负载,那么数据负载紧接着包头(Header)后面进行连续发送。包的Source ID和Destination ID放在tuser信号中并与包头(Header)一样,在第一个有效时钟下进行发送,发送完毕以后,tuser信号的数据被忽略。

           下图是携带有数据负载HELLO格式包在用户接口上传输的时序图,这个传输有4个双字(32个字节)的数据负载,加上包头,整个传输一共花费了5个时钟周期。用户只需要把想要发送的数据按照下图的时序图送入RapidIO核的AXI4-Stream接口,RapidIO核就能把它转化为标准的RapidiO串行物理层的包发出去从而完成一次事务的交互。

     

           下图是一种更复杂的传输示意图。首先,有两个背靠背(back-to-back)单周期包(包不带数据负载,仅包含一个包头)。包的边界通过拉高tlast信号进行指示。在单周期包传输完毕以后,主机等待了一个时钟周期才开始发送下一个包。在发送第三个包的过程中,主机(Master)和从机(Slave)分别通过拉低tvalid和tready信号一个时钟周期来暂停数据的发送,由于第三个包的数据负载为2个双字,所以传输第三个包一共消耗了3个有效时钟,加上2个无效的时钟周期,一共消耗了5个时钟周期。

     

      

      SRIO Stream包格式

      用户接口也能配置为SRIO Stream格式,在这种格式下,用户接口的包格式各个字段的定义与RapidIO手册中标准的RapidIO包中逻辑层和传输层各个字段的定义完全相同,但用户接口的包格式中还包括标准RapidIO包物理层的prio字段,整个SRIO Stream的包格式如下图所示

     

           下图是SRIO Stream格式的包在用户接口上传输的时序图,整个传输的数据负载为5个双字,一共消耗了5个有效时钟周期,CRF/Response位在第一个有效时钟周期进行传输。

     

           SRIO Stream格式用的不多,所以并非本文的重点,更多详细的内容请查看pg007_srio_gen2.pdf的第80页到82页。

      访问配置空间

      每个通过RapidIO连接的处理器单元都有能力寄存器(Capability Register,CARs)和命令状态寄存器(Command and Status Register,CSRs),可以通过访问这些寄存器去配置设备的Capability和Status等相关信息。配置寄存器的长度都为32-bits,所有的配置寄存器进行读写访问时的地址增量为4个字节,读写保留寄存器正常情况下不会导致设备进入错误状态,同理,写CARs(只读寄存器)正常情况也不会进入错误状态。

      维护写操作例子

    对于写事务,在发起写事务之前,写地址和写数据必须在它们各自维护端口通道上进行传输。当逻辑层接收到响应以后,维护端口会在写响应通道上返回一个状态。维护端口一次只能处理一个写事务,在响应发送完成之前,新的地址和数据不会被接收。下图是维护端口上完成两次写事务的时序图,因为地址和数据在不同的通道上,所以它们能在通道的任意时刻进行传输而不用考虑另外一个

     

      维护读操作例子

      当读地址在维护端口上进行传输后读事务被立即发起,逻辑层接收到响应以后,维护端口在读响应通道返回一个状态。维护端口一次只能处理一个读事务,在响应发送完成之前,新的地址不会被接收。下图是一个读事务的时序图

     

           更多通过维护事务访问寄存器空间的内容请查看pg007_srio_gen2.pdf的第82页到91页。

    3.2 时钟

           物理层有两个时钟域,第一个是phy_clk,它是最主要的核时钟,第二个是gt_pcs_clk,它是用于串行收发接口(Serial Transceiver interface)。时钟gt_clk并未被物理层使用,而是被串行收发接口所使用。gt_pcs_clk的频率为gt_clk的一半。一般来说,phy_clk与gt_clk的关系如下:

           phy_clk = (gt_clk * LW) / 4

           其中LW指的是链路宽度(Link Width),所以对于操作在2x模式(二通道模式)的核来说,LW的值为2,phy_clk的频率是gt_clk频率的一半。串行收发器需要通过专用时钟引脚提供参考时钟refclk,参考时钟的频率需要在生成RapidIO核的时候进行配置,可选择的参考时钟频率取决于RapidIO核的结构与线速率。下表列出了参考时钟频率与线速率的关系

     

           逻辑层工作在log_clk这个时钟域。为了保证最优的吞吐量,log_clk的频率应该大于或等于phy_clk的频率。下面列出了三种不同通道模式下线速率与时钟频率的关系

           4x模式(4通道模式)

     

           2x模式(2通道模式)

     

           1x模式(1通道模式)

     

           对于7 Series FPGAs来说,内部采用了一个MMCM从参考时钟refclk得到RapidIO核各个模块的时钟,整个时钟方案的框图如下图所示

     

           MMCM的倍频值与分频值取决于参考时钟的频率与线速率。在4x模式(四通道模式)下,log_clk和gt_clk共享一个BUFG。在1x模式(单通道模式)下,log_clk和phy_clk共享一个BUFG(由于phy_clk的频率只有一种情况,所以不需要BUFGMUX)。除此以外,如果在RapidIO核的配置中选中了Unified Clock选项,则log_clk和phy_clk要求有相同的频率,这意味着与log_clk/cfg_clk相关的BUFG能被移除,log_clk/cfg_clk与phy_clk相连。

    3.3 复位

           每个时钟域都有相关联的复位信号。复位信号应该至少在各自的时钟域中保持4个时钟周期,如果RapidIO核的通道宽度减少导致phy_clk的时钟频率降低,那么复位信号仍然需要保持至少4个时钟周期。复位参考设计模块(srio_rst.v)有一个单复位输入sys_rst。这个信号同步于输入。这个模块同步复位信号到每个时钟域并对复位脉冲进行扩展以满足最小4个时钟周期的要求。

           硬件复位应该被用户设计产生,当复位RapidIO核的时候必须要注意主机和从机必须同时复位以保证ackID字段对齐,推荐主机和从机的复位信号完全重叠以减少包和控制符号的丢失率。

    3.4 RapidIO协议简介

           RapidIO的协议已经在这个系列的前面几篇文章中做了很多介绍了,这里仅仅做一个总结。

           第2类事务(FTYPE=2)为请求类事务,根据TTYPE字段的不同值,它包括NREAD事务(TTYPE=4’b0100),ATOMIC Increment事务(TTYPE=4’b1100),ATOMIC Decrement事务(TTYPE=4’b1101),ATOMIC Set事务(TTYPE=4’b1110),ATOMIC Clear事务(TTYPE=4’b1111)这几种。

           第5类事务(FTYPE=5)为写类事务,根据TTYPE字段的不同值,它包括NWRITE事务(TTYPE=4’b0100),NWRITE_R事务(TTYPE=4’b0101),ATOMIC Swap事务(TTYPE=4’b1100),ATOMIC Compare-and-Swap事务(TTYPE=4’b1101),ATOMIC Test-and-Swap事务(TTYPE=4’b1110)这几种。

      第6类事务(FTYPE=6)为SWRITE事务(流写事务),请求方可以利用流写事务往目标方的存储空间写入大块数据。与NWRITE相比,流写事务具备以下两个特点:1、流写事务传输数据的最小单位为双字(Double Word);2、流写事务的包格式相对于NWRITE包格式具有更少的头部开销。

      第10类事务(FTYPE=10)为DOORBELL事务(门铃事务),门铃事务不包含数据负载,它只能用来传输16-bit的信息,所以DOORBELL事务适合传输中断或者信号量。

      第11类事务(FTYPE=11)为MESSAGE事务(消息事务),消息事务必须携带数据负载,完成一次数据消息操作最多需要16个单独的消息事务,其中每个消息事务携带的数据负载最大仍为256字节,所以消息操作的最大数据载荷为4096字节(16*256 Bytes)。

      第13类事务(FTYPE=13)为响应类事务,根据TTYPE字段的不同值,它包括不带数据响应事务(TTYPE=4’b0000),消息响应事务(TTYPE=4’b0001)和携带数据响应事务(TTYPE=4’b1000)。

      第9类事务(FTYPE=9)为Data Streaming事务,在标准的RapidIO协议中第9类事务为保留事务,所以第9类事务是一种自定义的事务。关于第9类事务的详细内容请查看pg007_srio_gen2.pdf的第106页。

     

    四、RapidIO核配置

      1、在IP Catalog中找到RapidIO

     

      

      2、双击RapidIO核打开配置界面

     

      3、选择Mode为Advanced

     

      Component Name:IP的的名字,只能为字母,数字,下划线,其中首字符必须为字母。

      Mode:IP的模式,有基本(Basic)和高级(Advanced)两种。

      Link Width:链路宽度,可选值为1、2或者4,链路宽度越大,数据的传输带宽越大。

      Transfer Frequency:传输频率,这个值表示的是每个串行链路的传输速率,可选值有1.25、2.5、3.125、5.0和6.25。传输频率越大,数据的传输带宽越大。

      Reference Clock Frequency:参考时钟频率,可选值为125MHz或156.25MHz,它指的是外部时钟源(晶振或者锁相环芯片)送给FPGA串行收发器专用时钟引脚的时钟。

      TX Buffer Depth:发送Buffer的深度,可选值为8、16或32。这个值表示的是发送Buffer中可存储的包的最大数目。

      RX Buffer Depth:接收Buffer的深度,可选值为8、16或32。这个值表示的是接收Buffer中可存储的包的最大数目。

      Component Device ID:这个参数是复位以后Base Device ID CSR寄存器的复位值。

      Device ID Width:设备ID的宽度,收发双方的设备ID宽度应该相同,否则,由于包头的偏移可能会导致事务被错误的解释。大多数系统Device ID为8位,但是RapidIO核也提供了16位的Device ID供用户选择。

      Unified Clock:如果用户设计中log_clk和phy_clk相同,那么可以选中这个选项,选中这个选项可以减少延时和资源利用率。

      Transmitter Controlled:选中这个选项以后,RapidIO核会首先尝试用transmitter-controlled实现流控,但如果接收方不支持的话那么会自动切换为receiver-controlled。transmitter-controlled流控可以利用接收buffer的状态和水印最小化重试条件。receiver-controlled流控会随意的发包并使用重试协议。

      Receiver Controlled:选中这个选项以后,RapidIO核仅能用receiver-controlled实现流控,在这种模式中,receiver-controlled流控会随意的发包并使用重试协议。

      4、Logical Layer标签

     

      Source (Initiator) Transaction Support:用来选择支持的发送事务类型。

      Destination(Target) Transaction Support:用来选择支持的接收事务类型。

      Enable Arbitration:用来使能逻辑层与输入端口之间的仲裁器。

      Maintenance Transaction Support:这个选项应该保持一直使能。

      Local Configuration Space Base Address:本地配置空间基地址,选中这个选项后,RapidIO会检查I/O事务的高地址位,如果地址匹配,那么会把事务发给维护端口。由于手册没有提供一种机制去关闭LCSBA,所以在这种情况下系统的行为是未定义的。

      5、I/O标签

     

      Port I/O Style:I/O接口可以配置为Condensed I/O和Initiator/Target两种类型。其中Condensed I/O接收和发送均使用一个AXI4-Stream通道。Initiator/Target接收和发送采用不同的AXI4-Stream通道。

      I/O Format:I/O端口能被配置使用HELLO格式包或SRIO Stream格式包,一般情况下,强烈推荐使用HELLO格式

      Messaging:用来选择消息事务的端口,可选的参数有Combined with IO和Separate Messaging Port两种。Combined with IO选项表明消息事务和I/O写事务采用相同的IO端口,Separate Messaging Port选项表明消息事务采用一个独立的端口传输,选中这个选项以后IP核会出现消息事务的AXI4-Stream通道。

      Maintainance:用来选择维护端口类型,维护端口类型只能为AXI4-Lite类型。

      6、Buffer层标签

     

      Request Reordering:选中这个选项以后,发送Buffer会根据请求包的优先级重新排序。

      Flow Control Options:用来选择优先级水印复位值,详细内容请查看pg007_srio_gen2.pdf

      7、物理层标签

     

      CRF Support:关键请求流(Critical Request Flow),一般不选中

      Link Requests before Fatal:用来指定链路进入致命错误状态之前链路请求的个数,一般选择默认值

      Software Assisted Error Recovery:RapidIO协议定义了3个CSRs用软件来辅助错误恢复。

      IDLE Mode Support:空闲模式(IDLE Mode)的选择与传输速率有关,空闲序列1(IDLE1)仅仅支持每通道线速率小于5.5Gbps的情况,选择空闲序列1时,RapidIO使用的控制符号为短控制符号。空闲序列2(IDLE2)支持每通道线速率大于5.5Gbps的情况,6.25Gbps的线速率必须选择空闲序列2,空闲序列2提供了一些附加的功能,比如链路宽度,链路优先级信息以及一些用于改善均衡器性能,提高数据恢复率的随机数。当IDLE1和IDLE2均被选中时,每通道线速率仅支持小于等于5.5Gbps的情况。上一篇文章《RapidIO串行物理层的包传输过程》也介绍了空闲序列1和空闲序列2相关的内容。

      8、逻辑层寄存器标签

     

      Device Identity CAR:指定了Device ID与Vendor ID,这两个值不能修改。

      Assembly Identity CAR:可通过设置这两个值唯一的确定RapidIO设备的标识符。这两个值不影响核的功能。

      Assembly Information CAR:这个寄存器存储的是RapidiO子系统的版本信息,这个值不影响核的功能。

      Processing Element Features CAR:选择存储器单元的主功能,默认为Memory,这个值不影响核的功能。

      9、物理层寄存器标签

     

      Extended Features Space:扩展特征空间,一般选择默认值。

      Port Link Time-out Control CSR:指定链路控制符号丢失后的超时时间,最大值为0xFFFFFF,对应的超时时间约为4.5s,精确度为33%

      Port Response Time-out Control CSR:指定链路包丢失后的超时时间,最大值为0xFFFFFF,对应的超时时间在3s到6s之间。

      Port General Control CSR:Host选项表明RapidIO设备是主设备,这个选项不影响核的功能。Master Enable选项用来控制是否允许RapidiO核发起请求事务,如果未选中,RapidIO核只能发起响应事务而不能发起请求事务。Discovered选项表明RapidIO核能被处理器定位,这个选项不影响核的功能。

      10、共享逻辑标签

     

           当选中Include Shared Logic in Example Design选项时,MMCM、复位逻辑和GT COMMON块等共享逻辑被包含在例子设计中。当选中Include Shared Logic in Core选项时,MMCM、复位逻辑和GT COMMON块等共享逻辑被包含在IP核中。

     

    五、总结

           整个RapidIO核的介绍到此为止,文中大部分内容都是翻译的pg007_srio_gen2.pdf,由于自身水平有限,所以有些地方可能翻译的不太好,建议大家先粗略浏览对相关内容有一个大致印象,然后把不明白的地方对照pg007_srio_gen2.pdf原文做进一步理解。

           整片文章的重点只有一个,就是设计指南那一节所提到的HELLO格式与HELLO格式的时序,强烈建议对照pg007_srio_gen2.pdf文档多读几遍。 事实上,在编写Verilog代码时,就是先根据事务类型组装对应的HELLO格式的包头(Header),然后按照HELLO格式的时序,在第一个有效时钟周期类把包头(Header)发出去,后面几个有效的时钟周期发送你的数据。在这个过程中,RapidIO核会自动把HELLO格式的包转化为标准的RapidIO串行物理层的包,并添加控制符号,空闲序列等必要信息发出去,接收过程则正好相反,RapidIO核接收到标准的RapidIO串行物理层的包,控制符号,空闲序列等信息后以后,会把接收的信息转化为HELLO格式的包给用户做后续处理。所以对用户来说只需要理解HELLO格式包的组成与HELLO格式的时序就可以利用RapidIO核实现数据的高速传输,而不需要关注RapidIO协议的过多细节。

           最后,再来复习一下RapidIO串行物理层的包格式与控制符号来结束全文,下篇文章会教大家如何利用Xilinx官方提供的例子工程来理解请求事务与响应事务Verilog代码,并详细分析各个事务的时序细节。

           RapidIO串行物理层包格式:

     

           控制符号:

     

    六、参考资料

      1、pg007_srio_gen2,下载地址 https://china.xilinx.com/support/documentation/ip_documentation/srio_gen2/v4_0/pg007_srio_gen2.pdf

      2、RapidIO™ Interconnect Specification,下载链接 https://pan.baidu.com/s/1ek-3AAhetLAcxTuOE2IyMg

     

    转载地址:https://www.cnblogs.com/liujinggang/p/10072115.html

    展开全文
  • xilinx vivado SRIO license

    2018-01-17 15:32:46
    xilinx vivado SRIO license,亲自测试可以生成BIT文件,希望大家有用
  • Xilinx SRIO ID

    千次阅读 2016-03-26 13:29:19
    Xilinx SRIO IP核里可以看见3个ID,source_id,deviceid,dest_id。dest_id是数据要发送至的目的ID。source_id和deviceid是本地ID,由id_override选择使用哪一个作为本地ID,如果id_override=1,则选择source_id...

    Xilinx SRIO IP核里可以看见3个ID,source_id,deviceid,dest_id。dest_id是数据要发送至的目的ID。source_id和deviceid是本地ID,由id_override选择使用哪一个作为本地ID,如果id_override=1,则选择source_id(source_id可以由用户设置),如果id_override=0,则选择deviceid(deviceid是IP核生成时在GUI里设置的)。


    展开全文
  • xilinx vivado srio license

    千次阅读 2019-08-21 22:16:50
    xilinx vivado srio license 如上图所示打开 xilinx vivado srio core 时 显示 Bought IP license available 则表示当前使用的license 是购买的license,与官网申请的评估license 最大的区别是单次上电工作没有时间...

    xilinx vivado srio license
    显示已购买license (Bought IP license available)
    如上图所示打开 xilinx vivado srio core 时 显示 Bought IP license available 则表示当前使用的license 是购买的license,与官网申请的评估license 最大的区别是单次上电工作没有时间限制,如果仅用于学习目的,申请使用官网的license即可,当然评估的license限制还是挺多的,不仅有时间限制,而且还要捆绑以太网物理地址的限制,申请的license只能用于一台电脑,也就是我们经常遇到的IP捆绑问题。

    我这有一个评估的license:但是时间上已经过期,亲测修改电脑日期还能继续使用,此license不需要IP捆绑,足够用于学习调试xilinx vivado srio。

    INCREMENT srio_phylog_io xilinxd 2050.12 10-jun-2018 uncounted
    3CA746BCEB7F VENDOR_STRING=License_Type:Bought HOSTID=ANY
    START=28-may-2018 TS_OK

    将上面内容复制到 xilinx lic 即可使用。
    亲测 vivado2015.4 vivado 2016.4 vivado 2017.4 vivado 2018.2 等版本可用,可以产生bit文件。

    本人目前正在学习xilinx vivado srio,遇到license的问题,花费了一些精力搞到了正版无IP捆绑和评估版无IP捆绑的license。希望分享给大家,一起学习一起交流(昵称即联系方式)。

    展开全文
  • xilinx公司srio用户手册

    2011-10-09 23:30:26
    xilinx公司srio用户手册,详细介绍了xilinx公司产品提供的srio解决方案。
  • xilinx srio协议中文版,涵盖协议原理,应用,仿真,example解析,是本完整的入门手册,看完之后完全可以上手
  • Xilinx SRIO详解.pptx

    2020-08-07 13:37:24
    第一篇 协议简介 产生背景 应用场景 协议构成 传输速率 电气接口 路由机制 与其他协议区别 第二篇 信息交换过程 Initiator Fabric responser 第三篇 RAPIDIO数据包的构成 Rapidio数据包的构成 ...控制时序
  • 关于Xilinx spartan6系列FPGA的SRIO使用例程,内含使用说明,亲测可用
  • xilinx最新SRIO使用手册

    2013-03-14 09:46:31
    这是第二代SRIO的使用手册,希望对大家有用,从XILINX官网上下载的资源。
  • 在利用Xilinx的IP进行开发时,为了简化报文的解析和组包,SRIO Gen2 usesAXI4-Stream,Xilinx推出了一种简化的报文格式,这样一来,我们可以发现,这样又很接近PCIE的TLP报文格式了。 lHELLO format
  • 目录 5.1 SRIO核概述 5.2SRIO核的结构剖析 5.2.1逻辑层接口(LOG) 5.2.2Buffer接口(BUF) 5.2.4寄存器空间 ...5.1 ​​​​​​​SRIO核概述 ...SRIO即串行rapidio,srio核的设计标准来源于RapidIO Interconn...
  • Xilinx Srio详解&IP核使用,还算比较有用的资料,尤其是对IP核接口各个信号的说明很有用,基本值得参考
  • 4.5 “srio_request_*”模块分析 4.6 “srio_response_*”模块分析 4.4 核的物理层 原本不打算理会这部分内容的,但看《PG007》对这部分介绍很多,而且上问好多信号也涉及到了这部分内容,所以看来有必要对这...
  • 这种格式可以使我们不按照srio协议格式编码组帧,而是采用xilinx提供的这种(HELLO)数据格式,这种格式更简单,更易编码,且与rapiodio协议有一定的映射关系,会在逻辑层自动完成,无需用户操心。这种格式把包的...
  • ​​​​​​​5.5 Xilinx的IP核配置 5.5.1 基础选项卡 5.5.2 Logical Layer选项卡——逻辑层 5.5.3 I/O选项卡 5.5.4 Buffer层标签 5.4.5 物理层选项卡 5.5.6 逻辑层寄存器标签 5.5.7 物理层寄存器选项卡 ...
  • 我们可以很便捷的获取Xilinx官方提供的案例供我们分析学习,真是贴心,我就按照第五章配置的IP核所生成的代码进行分析,里面不包括维护事物,减少分析工作量,借机也好好学习一下人家是的设计思路。 目录 4.1 示例...
  • Xilinx FPGA RapidIO SRIO

    2020-09-10 16:54:19
    Xilinx手册pg007《Serial RapidIO Gen2 Endpoint v4.1 LogiCORE IP Product Guide》 IDT CPS1848手册《CPS-1848™ User Manual》 博客Zynq-Linux移植学习笔记之14-RapidIO驱动开发 博客基于Xilinx的RapidIO核配
  • 第三章xilinx srio核结构 3.1xilinxsrio核的结构介绍 3.2 ilinx srio核的HELLO格式和流控 3.3 xilinx srio核的配置 第四章xilinxSRIO核的官方实例分析 4.1 Xilinx SRIO的示例分析(一) 4.2 Xilinx SRIO的示例...
  • 原文:http://xilinx.eetrend.com/d6-xilinx/article/2018-07/13149.html 一.简介 RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能、 低引脚数、 基于数据包交换的互连体系结构,是为满足和未来高性能...
  • vivado IP核Rapidio可使用,无需修改MAC地址,但是需要修改PC机时间,是调试验证不错的选择,亲测2015.2和2018.1版本均可使用,其他版本没有尝试。
  • SRIO】5、Xilinx RapidIO核例子工程源码分析

    千次阅读 多人点赞 2019-06-09 21:53:37
    目录 一、软件平台与硬件平台 二、打开例子工程 三、例子工程详解 3.1 工程概述 3.2 工程结构 ...3.1 顶层模块srio_example_top.v源码分析 ...3.2 模块srio_request_gen.v源码分析 ...3.5 模块srio_...
  • SRIO】4、Xilinx RapidIO核详解

    千次阅读 2019-06-09 20:47:20
    Buffer对于保证包发送和流控操作是非常有必要的,Xilinx提供了一个可配置的Buffer解决方案,可以在系统性能和资源利用率之间权衡选择。  发送Buffer负责把将要发出去的事务放到队列中,并对发往物理层(PHY)的...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 132
精华内容 52
关键字:

srioxilinx