AXI-Stream协议详解(2)—— Interface Signals

一、信号列表(Signal list)

        AXI_Stream信号的列表如下,在列表中,我们遵守如下规则:

  • n    数据总线宽度,以字节为单位
  • i     TID宽度。推荐的最大值为8位。
  • d    TDEST宽度。推荐的最大值为4位。
  • u    TUSER宽度。推荐的位数是接口宽度的整数倍。
信号 描述
ACLK 时钟源 全局时钟信号
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[(u-1):0]
主机 TUSER是用户定义的边带信息,可以与数据流一起传输。

        AXI-S的信号相对于AXI类型就少了很多,我们进行一个简单的分类:

  1. 系统类信号(图中红色)
  2. 传输控制和数据类信号(图中蓝色)
  3. 数据修饰类信号(图中黄色)
  4. 传输修饰类信号(图中黑色)
  5. 边界信号(图中紫色)

二、系统类信号

         时钟信号和复位信号,没有什么好过多赘述的,这里简单截图一下复位信号的注意事项:

AXI-Stream协议详解(2)—— Interface Signals_第1张图片

三、传输控制和数据类信号

1、传输信号

        本节给出了握手信号的细节,并定义了TVALID和TREADY握手信号之间的关系。

1.1 VALID 先于 READY 变高(主机先于从机准备好)

        时序图如下:

        主机在T1之后显示地址、数据或控制信息,并生效VALID信号。从机在T2时刻之后生效READY信号,并且主机必须保持其信息稳定,直到在T3发生传输。

        一旦VALID信号有效,那么它就必须保持生效,直到握手过程发生

1.2 READY 先于 VALID 变高(从机先于主机准备好)

        时序图如下:

        从机在T1之后,在地址、数据或控制信息有效之前生效READY信号,表明它可以接受该信息。主机在T2之后呈现信息,并生效VALID,当这个生效被识别时,传输发生在T3。在这种情况下,传输发生在一个周期中。 

        如果READY信号生效了,允许READY信号在VALID信号生效之前失效。和上面的情况做个对比,也就是说一旦主机宣布准备好了(VALID),那么除非完成握手协议,否则主机不允许自行退出传输,而从机宣布准备好了(READY),可以在主机准备好前的任意时刻退出。

1.3 VALID 和READY同时有效(主机和从机同时准备好)

        时序图如下:

        在T1之后,主机和从机都恰好表明它们可以传输地址、数据或控制信息。在这种情况下,当VALID和READY的生效可以被识别。这意味着传输发生在T2时刻。

2、 数据信号

2.1 字节位置(Byte locations)

        在数据流中,数据总线的低阶字节是流中较早的字节。

        对于没有空字节的完全打包流,可以使用以下方法确定流中给定字节的位置:

        在一个数据流中:

  • 字节n的序列从0向上编号
  • 一个序列中的每个传输t都从0向上编号
  • 数据总线的宽度为w字节
  • INT (x)是x的向下舍入的整数值

        因此,字节n包含在传输t中,其中:t = INT(n/w)

        在字节位置b处,其中:b = n - (t * w)

        包含在:TDATA[(8b+7):8b]

2.2 字节类型(Byte types)

        AXI-S协议包含了三种字节类型

数据字节(Data byte) 一个包含了用于在源端和目的端传输有效信息的数据字节
位置字节(Position byte) 一个表示流中的数据字节的相对位置的字节。这是一个占位符,它不包含在源和目标之间传输的任何相关数据值。
空字节(null byte) 一个不包含任何数据信息或关于流中数据字节的相对位置的任何信息的字节。

2.3 数据合并、打包和宽度转换(Data merging, packing, and width conversion)

        对于一个接口来说,一旦设计完成,其位宽就是不可更改的了。但是我们还是会希望一个接口可以实现多种不同位宽数据的传输。预计在大多数应用程序中,接口宽度是2字节的幂次宽。但是,这不是协议的要求,因此接口可以是一个字节数宽的整数。

        所有增大和缩小操作都需要保留TKEEP信号为高的相关字节(TKEEP为高,后面会介绍,指的是数据字节或位置字节)。如果增大或缩小操作没有足够的字节数据来编制全宽度输出,则可以添加一些额外的字节(这些字节的TKEEP禁止生效)。

四、数据修饰类信号 

        数据修饰信号有TKEEP和TSTRB两个,其作用是描述字节类型。

AXI-Stream协议详解(2)—— Interface Signals_第2张图片

五、传输修饰类信号

        传输修饰信号有3个:TID,DEST,TUSER。

        作用如下:

  • TID : 表示不同数据流的数据流标识符,表示数据的来源
  • DEST : 用于提供路由信息,表示数据的目的地
  • TUSER : 预留的自定义数据

六、包边界类信号

        数据包是通过接口一起传输的一组字节。通过处理将基础架构组件分组的传输,通常可以使其更加有效。AXI4-S数据包类似于AXI4突发。

        Tlast 信号的用途是:

  • 当取消断言时,TLAST表示可以遵循另一个转移,因此可以实现扩大、缩小或合并而延迟当前转移
  • 当断言时,目的地可以使用TLAST来指示数据包边界
  • 当断言时,TLAST表示在共享链路上进行仲裁更改的有效点

        简单说就是可以当Tlast信号拉高,就代表一个帧/包发完了

AXI-Stream协议详解(2)—— Interface Signals_第3张图片

你可能感兴趣的:(AMBA总线协议,fpga,AMBA,AXI,AXI-S)