基于Xilinx的数据手册pg007_SRIO的P1-55、P73-83得到以下SRIO接口知识:

SRIO(Serial RapidIO,串行RapidIO)是一种用于高速差分串行通信协议。

(1)SRIO Gen2支持 1 路、2 路和 4 路(1x、2x、4x,“x”表示通道数,选择几lane,几组差分线,几个高速收发器通道)通道传输数据(选择lane的宽度,要考虑板子底层差分线数量是否支持)

(2)SRIO Gen2每个通道(per lane)传输速度支持 1.25、2.5、3.125、5.0 和 6.25 Gbaud

(3)SRIO Gen2使用简单的握手机制控制 AXI4-Stream接口进行高吞吐量数据传输,使用 AXI4-Lite接口进行配置、维护(联想到以太网的MAC核)

(4)SRIO Gen2兼容A7板卡,A7高速收发器是GTP,最大线速6.6Gbit/s,故SRIO Gen2通道最大速度是6.25Gbaud(木桶效应)

板间高速差分通信GTX---GTH,木桶效应,按照GTX(慢的)算

(5)SRIO(发数据和中断)用途:

1. FPGA与DSP进行通信

2. 含有高速收发器的俩板子//芯片(片间板间)进行通信,可以使用SRIO,但此方法并不是最优解

(6)SRIO Gen2 分三层:逻辑层、缓冲层、物理层

逻辑层:逻辑层定义整体协议和数据包格式。

缓冲层:接收发送缓存的包深度(8/16/32,通常默认或最大)

SRIO系统传输框架:

SRIO分三层:逻辑层、缓冲层、物理层;通过用户接口,以AXI4-stream形式将数据传送到逻辑层,再将数据通过传输接口送到缓冲层,之后将数据传到物理层,最后通过GT高速收发器将数据串行发送出去:

(1)框图左边用户接口以I/O Port形式进行传输,框图右边收发器接口以差分串行高速收发器形式进行传输

(1)每个SRIO IP核的物理层数据通过1个高速收发器(1个高速通道)串行输出,高速收发器通道由1个GT COMMON(QPLL)提供时钟

(2)1个GT Quad里面只有1个QPLL,只能给一个高速收发器通道提供时钟,若多个高速收发器通道都调用SRIO IP核,就需要多个QPLL驱动,这时就需要共享逻辑资源:

①共享资源实现:其中一个IP核包含共享逻辑资源(共享资源端),其它IP核不包含共享逻辑资源(被共享资源端),将共享IP的输出端连接被共享IP的输入,为其提供逻辑资源

②共享资源设置步骤:

在调用SRIO IP核时,选择“Include Shared Logic in Core”为共享资源端

选择“Include Shared Logic in Example Design”为被共享资源端

SRIO传输接口叙述:

1、用户接口传输情况:

(1)逻辑层用户接口主要通过I/O Port 进行数据传输

①maintr、cfgr、cfgl:使用AXI4-Lite接口,管配置和维护

②I/O Port、消息端口、用户自定义端口使用AXI4-stream协议

(2)I/O Port有两种类型:收发、带应答(默认I/O Port带应答)

I/O Port引脚说明:(使用AXI4-stream协议,引脚相似)

①发送引脚iotx:

• s_axis_iotx_tvalid(我提供)和s_axis_iotx_tready(SRIO IP核提供)组成握手信号

• s_axis_iotx_tdata[63:0]:64位数据线,握手后,数据有效

• s_axis_iotx_tkeep[7:0]:选通信号,每1bit对应data的1字节(data : keep位宽 8:1)

• s_axis_iotx_tlast:最后突发数据标志,拉高

• s_axis_iotx_tuser[31:0]:用户自定义,一般不用,用在一个SRIO向多从传输时(扇出时),通过ID(器件ID,16bit)进行选择传输

HELLO格式:由源 ID (31:16) 和目标 ID (15:0) 组成

SRIO stream格式:tuser 只有 8 位宽

②接收引脚iorx:(同理)

• m_axis_iorx_tvalid(数据发送方SRIO IP核提供),m_axis_iorx_tready(数据接收方我提供)

(3)两种传输数据包格式:

• HELLO (精简包,不是一种包格式,里面还包含许多包格式)

• SRIO Stream(标准包,结构复杂)

2、收发器接口传输情况:

(1)高速收发器包括一个发送器TX和一个接收器RX

(2)收发器接口引脚:

• srio_rxnN和srio_rxpN:一对差分的高速串行输入引脚

• srio_txnN和srio_txpN:一对差分的高速串行输出引脚

• 命名规则:rx输出,tx输入;p和n指差分的两条正、负线;N指第几lane

(3)收发器接口时钟信号(gt_clk),时钟速率基于内核的传输频率:

3、串行接口传输情况:

串行接口的时钟信号(gt_pcs_clk),时钟速率基于内核的传输频率,是gt_clk的一半:

对于高速收发器,区分串行接口和收发器接口:

串行接口:主要用于传输数字信号,它定义了数据的格式、速率、时序等。

收发器接口:主要与传输介质进行数据传输,包括信号的调制、解调、放大、滤波等。

HELLO包具体数据格式:

(1)HELLO包分为许多事务类型:(由FTYPE/TTYPE决定)

①NREAD:基础读取请求事务,带响应(0010/0100)

②NWRITE:基础写操作包,不带响应(0101/0100)

③NWRITE_R:带响应的的写操作包(0101/0101)

④SWRITE:不带响应的连续写操作(0110/----)

⑤DOORBELL:门铃包、中断包(1010/----)

(2)HELLO包:

①HELLO包包长64bit(8Byte)

②HELLO 包最大净荷量(最大传输数据量):256字节(传输范围为 0 - 255)

③事务类型相当于包头(车头)

③我们使用的是NWRITE和DOORBELL

• NWRITE包头后跟数据(这车载货)

•OORBELL包头后不跟数据(这车不载货)

(3)HELLO包的包格式:

• TID:数据包的事务 ID

• FTYPE/TTYPE:各4bit,FTYPE和TTYPE两条线控制事务类型选择

• priority:2bit,数据包的优先级

• CRF:1bit,包响应,用时置1

• size:8bit,决定包长度、净荷量(范围0 - 255,最大传输256字节数据)

• addr:地址

• R:R保留位

• info:表明不是数据包,是中断包

①NWRITE包叙述:(DOORBELL构成要知道,NREAD/SWRITE要了解)

主要有8bit的ID、4bit的FTYPE和4bit的TTYPE共同决定了它的事务类型、8bit的净荷量(0-255字节)、34bit的地址,剩下还有3bit的保留位,1bit响应,2bit优先级

②DOORBELL包:中断包,先有数据再有中断,先发NWRITE包,再发DOORBELL包

FPGA---DSP传输机制:

FPGA先发包头NWRITE+size个字节数据,之后发DOORBELL(不跟数据)进行中断,告诉DSP现在处理刚发来的数据

SRIO使用AXI4-stream发送数据相比AXI4-stream接口区别:

SRIO需要先发个包头(事务类型)----(这里只说数据格式上的区别)

包头后面若能跟数据(如:HELLO包的NWRITE),数据最大能传输256个字节长度,不是无限制的;

其他的呢,在这儿呢

SRIO的板间远端回环和单板近端回环:

(1)1个板子近端回环,我们使用的是近端回环,1个板子调2个SRIO IP核自己和自己发

1个板子回环过程:数据生成模块APP使用AXI4-stream协议发送HELLO数据包到SRIO1 IP核,在SRIO1 IP核将数据包转化成高速收发器接口的形式发送到SRIO2 IP核,在SRIO2 IP核对包进行解析,以AXI4-stream接口形式发送到APP,形成回环

(2)2个板子远端回环:

2个开发板进行回环:每个板子都调用1个SRIO IP核,板内部通过SRIO用户接口以AXI4-stream形式与数据模块进行交互,两板之间通过高速收发器进行传输,通过SRIO选择的lane的个数(1x、2x、4x),使用对应个数的高速收发器进行传输

SRIO时序:

(1)I/O Port:AXI4-stream协议,在握手机制有效下,写NWRITE事务和DOORBELL事务

①NWRITE事务:先发64bit包头后跟数据(最大限制256字节,数据最后last拉高)

②DOORBELL事务:只发64bit中断包(last拉高)

(2)维护端口:AXI4-Lite协议,上写入事务的示例

SRIO程序信息:(默认I/O Port带应答,我们用的是不带应答机制的包类型)

需要经过初始化:

SRIO有2个初始化信号:

①port_initialized(用户端口,端口初始化,快些)

②link_initialized(整条传输通道(链路)的初始化,慢些)

当2个初始化都完成后,初始化信号都有效(高电平有效)后,才能进行传数

TEST_DATA_SEND.v文件:造了个NWRITE包

SRIO_TOP_LOOP.v是顶层文件

TB文件主要模拟将2个SRIO IP核外部的高速收发器的线连接在一起

调用SRIO IP核步骤:

选择模式,我们使用的是基础模式

(1)基础模式下,选择lane数量,传输速率,时钟频率,器件ID等

(注意:时钟频率指的是收发器接口时钟频率,要和lane的传输速率匹配)

选择此SRIO IP核是共享资源端还是被共享资源端

(2)自定义模式下,各层信息可以手动配置选择