AXI4-Stream 接口介绍

标准AXI-stream总线

AXI4-Stream去掉了地址项,允许无限制的数据突发传输规模。

一、接口信号描述

信号

描述

ACLK

时钟源

全局时钟信号。所有信号在ACLK信号上升沿采样。

ARESETn

复位源

全局复位信号。ARESETn低电平有效。

TVALID

TVALID表示主设备正在驱动一个有效的传输。当TVALID和TREADY都置位时,发生一个传输。

TREADY

TREADY表示从设备在当前周期能够接收一次传输。

TDATA[(8n-1):0]

TDATA是基本的有效载荷,用来提供跨越接口的数据。数据为整数个字节。

TSTRB[(n-1):0]

TSTRB位字节修饰符。用来描述TDATA相关字节内容作为一个数据字节或者一个位置字节被处理。

TKEEP[(n-1):0]

TKEEP是字节修饰符。用来表明TDATA相关字节的内容是否作为数据流的一部分被处理。TKEEP字节修饰符未被确认的那些相关字节是空字节,可以从数据流中去除。

TLAST

TLAST表明了包的边界。

TID[(i-1):0]

TID是数据流的标识符,用来表明不同的数据流。

TDEST[(d-1):0]

TDEST为据流提供路由信息。

TUSER[(n-1):0]

TUSER是用户定义的边带信息,这它能伴随数据流进行发送。

二、握手机制

只有当VALID 和READY 同时为高时,才能进行传输。

VALID和READY信号的先后顺序有一下三种形式:

AXI4-Stream 接口介绍

 

2.1 VALID早于READY信号

AXI4-Stream 接口介绍

 

2.2 READY信号早于VALID信号

AXI4-Stream 接口介绍

 

2.3 VALID 信号与 READY 信号同时

标准AXI4-stream时序

AXI4-Stream跟AXI4的区别就是AXI4-Stream去除了地址线,这样就不涉及读写数据的概念了,只有简单的发送与接收说法,减少了延时。由于AXI4-Stream协议(amba4_axi4_stream_v1_0_protocol_spec.pdf)没有时序图,因此,我使用XILINX公司的产品指导手册(pg007_srio_gen2.pdf)里的一个时序图来演示AXI4-Stream各个信号的关系。如下图所示:

AXI4-Stream 接口介绍

 

上图中,tready信号一直处于高电平,表示从设备做好了接收数据准备。tvalid变为高电平的同时,tdata、tkeep、tuser也同时进行发送。在tdata最后一个字节数据时,tlast发送一个高电平脉冲。数据发送完成后,tvalid变为低电平。这样一次传输就完成了。

 

Aurora接口简介

AXI4-Stream 接口介绍

 

用户侧接口可配置为framing/streaming 模式,

当前722项目配置为framing 模式,接口定义如下:

USER_DATA_S_AXIS_RX

m_axi_rx_tdata[0:63]

output

64bit

aurora接口输出给模块的64位帧数据,bit[0:63]高位到低位排列从右到左。

m_axi_rx_tkeep[0:7]

output

8bit

aurora接口输出给模块的帧数据最后一拍有效字节数,bit[0:7]每个bit代表一个有效字节,累计bit为1的个数为有效字节数。(streaming模式时不可用)

m_axi_rx_tlast

output

1bit

aurora接口输出给模块的帧数据帧尾标志 (streaming模式时不可用)

m_axi_rx_tvalid

output

1bit

aurora接口输出给模块的帧数据有效标志

USER_DATA_S_AXIS_TX

s_axi_tx_tdata[0:63]

input

64bit

模块输出给aurora接口tready时序调整后的64位帧数据,bit[0:63]高位到低位排列从右到左。

s_axi_tx_tkeep[0:7]

input

8bit

模块输出给aurora接口tready时序调整后的帧数据最后一拍有效字节数,bit[0:7]每个bit代表一个有效字节,累计bit为1的个数为有效字节数。(streaming模式时不可用)

s_axi_tx_tlast

input

1bit

模块输出给aurora接口tready时序调整后的帧数据帧尾标志(streaming模式时不可用)

s_axi_tx_tvalid

input

1bit

模块输出给aurora接口tready时序调整后的帧数据有效标志

s_axi_tx_tready

output

1bit

aurora接口输出的发送准备好标志

可以看出aurora接口模式配置成streaming模式时,与标准的AXI-stream接口有很大区别。

Framing模式符合AXI4-Stream协议规范并包含发送和接收帧数据所需的信号。

数据bit顺序定义如下:

AXI4-Stream 接口介绍

 

发送时序图

Aurora 接口没有特定的帧格式(不同于太网phy接口那样),在s_axi_tx_tvalid和s_axi_tx_tready同时为高时,按照正确的bit顺序发送数据即可。下面举例说明aurora接口的发送时序。

Example1: 发送3个user_data

AXI4-Stream 接口介绍

 

s_axi_tx_tvalid和s_axi_tx_tready同时为高时,数据有效。

s_axi_tx_tvalid和s_axi_tx_tlast同时为高时,指示最后一个数据。

s_axi_tx_tkeep有效字节标志,s_axi_tx_tkeep在s_axi_tx_tlast时有效。

 

Example2: 断续发送, 发送3个user_data

AXI4-Stream 接口介绍

 

用户可以在数据发送的过程中通过控制s_axi_tx_tvalid来暂停发送。

 

Example3: 带时钟补偿的数据发送

AXI4-Stream 接口介绍

 

当s_axi_tx_tready为低时,用户需要暂停数据传输。

接收时序图

由于aurora core接收方向没有buffer,所以没有 ready信号,

AXI4-Stream 接口介绍

 

m_axi_rx_rvalid为高时,数据有效。