文章目录
- AXI-Stream概述
- 协议中一些定义
- 字节定义
- 流的定义
- 数据流类别
- 字节流
- 连续对齐流
- 连续不对齐流
- 稀疏流
- 协议的信号
- 信号列表
文章为个人理解整理,如有错误,欢迎指正!
参考文献
ARM官方手册 《IHI0051B》
AXI-Stream概述
协议中一些定义
AXI-Stream是两个连接在一起的器件进行数据交换的标准协议,他是点对点协议,连接一个发送端和一个接收端。
字节定义
1、数据字节:包含有效信息的数据字节,数据字节在源端和目的端之间传输
2、位置字节:指示数据流中数据字节的相对位置,一个占位符,它不包含在源端和目的端之间传输的任何相关数据值。
3、空字节:不包含上述两种字节意义的第三种字节。
流的定义
1、Transfer:AXI-Stream协议中的一次数据传输。一次TVALID和TREADY的握手,就是一次transfer
2、Packet:AXI-Stream协议中传输的一组字节,一个Packet包含一个或多个Transfer,类似于AXI突发。
3、Frame:一个Frame包含整数个Packet,一个Frame可以有很多的字节,例如整个视频帧缓冲区。一个Frame是AXI—Stream协议中,字节分组的最高级别。
4、Data Stream:可以包含独立的字节传输,或者在Packet中组合在一起的一系列字节传输。
上述四个流的定义,从上到下,暗含了层级的概念。
数据流类别
AXI-Stream支持多种数据流形式。
本节中显示的示例包含4字节宽总线上的十六进制值,列按时间顺序从左到右排列
字节流
字节流是数据字节和空字节的传输,字节流传输可以传输任意数量的数据字节,这取决于数据宽度。
空字节可以在发送端和接收端之间的任何点从流中插入或删除。
图1-1给了两个字节流的例子,由于空字节没有任何有效信息,所以两个图传输的信息是一样的。
连续对齐流
连续对齐流是传输一定数量的数据字节,其中每个数据包没有位置字节或空字节,如图1-2所示。
连续不对齐流
连续不对齐流中,可以有任意数据的位置字节,但是位置字节不会插在数据字节中间,只会在包头或者包尾,或者同时在包头和包尾。
如图1-3左边的包,D-01至D-11的数据字节是连续的,在尾巴处有两个位置字节;
如图1-3右边的包,D-01至D-11的数据字节是连续的,在头部和尾巴处各有三个位置字节;
稀疏流
稀疏流传输数据字节和位置字节,所有的数据字节必须要从源端传到目的端,所有数据字节和位置字节的相对位置在源端和目的端之间不能改变,一般来说,数据流中的主体是数据字节。
图1-4所示,每两个数据字节后跟着一个位置字节。
协议的信号
信号列表
前四个信号不再赘述,时钟、复位、valid和ready握手,都是AXI协议中的老演员了,时序要求和AXI-FULL、AXI-Lite差不多。
TDATA:数据,位宽必须是字节的整数倍,推荐8, 16, 32, 64, 128, 256, 512 or 1024-bits。
字节位置:数据流中先传输的是数据流的低字节,对于一个没有空字节的满包流,位置满足如下规律
- 字节序列n从0开始向上编号
- 每次传输,t,按顺序从0往上编号
- 数据总线的宽度为w字节
- INT(x)是x的舍入整数值
字节n包含在传输t中,其中: t = INT(n/w) ,
在字节位置b,其中:b = n - (t * w)
它包含在:TDATA[(8b+7):8b]
字节类型:数据字节、位置字节和空字节。
数据合并、打包和宽度转换:其中的宽度转换,包括向上转换和向下转换。
TSTRB:可以理解为标识符,指示TDATA中的每个字节,是数据字节还是位置字节。
TKEEP:同样理解为标识符,指示TDATA中的每个字节,是否需要作为数据流的一部分被处理。
TLAST:指示Packet的边界。
TID:是数据流标识符,其位宽建议不大于8。
TDEST:为数据流提供路由信息,其位宽建议不大于8。
TUSER:是用户定义的边带信息,可以沿着数据流传输。其宽度建议为TDATA_WIDTH/8的整数倍。
TWAKEUP:标识与axis - stream接口相关的任何活动