AXI-stream学习笔记(一)

目录

一.AXI-stream的基本概念

1.1关于AXI-stream

1.1.1字节定义

1.1.2传输定义

1.2数据流

1.2.1字节流

1.2.2持续对齐的流

 1.2.3持续非对齐流

1.2.4稀疏流

二.AXI-stream接口信号 

2.1信号列表

2.2握手信号

2.2.1TVALID在TREADY之前有效

 2.2.2TREADY在TVALID在之前有效

 2.2.3TREADY和TVALID同时有效

 2.3唤醒信号(wake-up signaling)

2.4数据信号

2.4.1字节位置(有疑问)

2.4.2字节类型

2.4.3数据合并、组包以及宽度转换

2.5限定字符

2.5.1TKEEP限定字符

2.5.1TSTRB限定字符

2.6包边界 

2.7源和目标信号

2.8时钟和复位信号

2.8.1 时钟

2.8.2 复位

2.9 用户信号

2.9.1决定用户信号的宽度


一.AXI-stream的基本概念

1.1关于AXI-stream

1.1.1字节定义

数据字节(Data byte):代表有效信息

位置字节(Position byte):仅表示相对位置不包括相关的有效信息

空字节(Null byte):不包括任何有效信息与位置信息

1.1.2传输定义

Transfer:transfer可定义为一次TVALID和TREADY信号有效的握手操作间的传输数据。

Packet:定义为一个或多个transfer操作,相当于AXI中的burst操作。

Frame:定义为一个或多个packet操作,是AXI-stream中的最高层次的字节组合。

Data stream:包含两种形式①一系列独立的transfer②一系列有transfer组合而成的packet

1.2数据流

1.2.1字节流

字节流的传输由数据字节和空字节构成,空字节可以在任何位置被插入or移除。下图为一个字节流的例子。

1.2.2持续对齐的流

意味这他传输过程中没有占位字节和空字节

 1.2.3持续非对齐流

指的是在每个packet的第一个数据字节和最后一个数据字节中没有位置字节,但在其开始之前或者结束之后可以有许多的位置字节。

1.2.4稀疏流

稀疏流中包含了数据字节和位置字节,数据字节在稀疏流中占主要部分,位置字节在,稀疏流中的位置保持不变。


二.AXI-stream接口信号 

2.1信号列表

①ACLK:来源于clock 位宽为1,上升沿有效。

②ARESERn:来源于reset, 位宽为1。

③TVALID:来源于数据发送端,位宽为1,该信号意味着发射端将发射有效的transfer。

④TREADY:来源于数据接收端,位宽为1,该信号意味着接收端将接受一个transfer。

⑤TDATA:来源于数据发送端,位宽为TDATA_WIDTH(8、16、32、64、128、256、512、1024-bits)。

⑥TSTRB:来源数据发射端,位宽为TDATA_WIDTH/8,该信号意味这TDATA是数据字节还是位置字节。

⑦TKEEP:来源数据发射端,位宽为TDATA_WIDTH/8,该信号意味相关字节的内容是否作为数据的一部分来处理。

⑧TLAST:来源数据发射端,位宽为1,该信号意味着packet的边界。

⑨TID:来源数据发射端,位宽为TID_WIDTH,该信号是数据流标识符。

⑩TDEST:来源数据发射端,位宽为TDEST_WIDTH,该信号提供了数据流的routing信息(暂未搞懂routing information指的是什么)。

①①TUSER:来源数据发射端,位宽为TUSER_WIDTH,该信号指的是用户定义的边带可以传送的信息数据流。

①②TWAKEUP:来源数据发射端,位宽为1,该信号指的是任何与axi-stream接口有关的活动。

2.2握手信号

握手过程依靠的是TVALID和TREADY两个信号,分成以下三种情况。

2.2.1TVALID在TREADY之前有效

当TVALID有效时来自数据发送端的数据字节和控制信息必须保持不变,当TREADY为高电平时接收器就可以接收数据和控制信息,transfer的过程发生在TREADY为高时,图中的T3时刻。

 2.2.2TREADY在TVALID在之前有效

当TREADY在数据信号有效之前有效,当TVALID为高电平时接收器就可以接收数据和控制信息,transfer的过程发生在TVALID为高时,图中的T3时刻。

 2.2.3TREADY和TVALID同时有效

TREADY和TVALID信号在同一个时钟上升沿有效,所以transfer发生在下图中的T2时刻。

 

 2.3唤醒信号(wake-up signaling)

TWAKEUP:暗示了AXI5-stream接口的任何活动,不多做解释具体可以参照ARM的AXI-stream手册。

2.4数据信号

TDATA是由数据发射端传输到数据接收端的数据。

2.4.1字节位置(有疑问)

在一个数据流中,数据总线的低位字节是流中的较早传输的。

对于一个没有空字节的packet,流中一个给定字节的位置可以使用以下方式来决定:

在一个数据流中:

1.字节 n 的序列 从 0 开始向上编号

2.序列中的每个transfer,t, 从 0 开始向上编号

3.数据总线的宽度为 w bytes

4.INT(x) 是数值 x 向下取整( rounded down 向绝对值减小的方向舍入取整)

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

字节位置 b: b = n -(t *w)

字节位置b包含在:TDATA[(8b+7):8b]

举例当n=100bytes,w=32bytes时 t=3 b=4意味着需要传输3+1一次,第四次传输4byte(总线为32byte)

2.4.2字节类型

数据字节:在传输过程中不能修改的数据字节属性①数据字节的number②相关的TDATA信号的值③在数据流中数据字节的相对位置。

位置字节:在传输过程中不能修改的位置字节属性①位置字节的number②在数据流中位置字节的相对位置。

空字节:不包含任何信息,空字节在传输过程中可以插入或者移除。

互联不能修改流中的数据字节和位置字节的数量和相对位置,但是可以插入或者移除空字节。

2.4.3数据合并、组包以及宽度转换

推荐建立AXI-stream接口的时候是一个强适应性的数据位宽,因为这样可以根据系统去配置他的位宽。但当适应性强的位宽是不可能的时候他需要数据合并、组包以及宽度转换。

考虑数据合并

数据合并是指把两个来自不同的transfer的字节合并成一个transfer,数据合并需要考虑几个条件:

①只用满足TID和TDEST一致的transfer才可以被合并

②如果当前的transfer的TLAST信号有效,他将不能与后面的transfer合并,并且这个transfer不能被延迟。

③满足正确的数据字节以及位置字节的要求。

④满足正确的TLAST、TSTRB、TUSER信号要求。

考虑数据组包

数据组包的意思是移除数据流中的空字节,利用的是KEEP信号。

考虑数据压缩

通过给定的压缩给定的数据位宽(将数据位宽从给定的位宽压缩至更窄的数据总线位宽)通常涉及单输入到多输出。需要考虑以下条件:

①输出流的字节顺序与输入流的字节顺序必须match

②TSTRB必须以类似的方式缩小,保证数据字节以及位置字节的映射关系。

③TLAST只能与缩小后的最后一个transfer有关。

④所有输出transfer的TID和TDEST必须和输入的transfer的值相同。

⑤TUSER信息必须保持一样的字节。

⑥如果一个只包含空字节的transfer并且他的TKEEP和TLAST无效时是可以被压缩的。

考虑数据扩展操作


扩展是从一个给定的数据总线宽度转换到一个更宽的数据总线。

这一过程可以和合并操作混合进行,以便从多输入传输产生一个单个的输出传输。

如果扩展与合并操作混合进行,那么扩展操作可能会是一个更复杂的过程,因为在传输的接收端,扩展器不能始终判断下一个传输是否在一个相同的包中。

扩展的规则如下:
①输出流中的字节顺序必须与输入流中的字节顺序相同

②TSTRB 必须以类似的方式被扩展到数据的宽度,以保证数据字节和位置字节之间正确的关系被保持

③TLAST 必须被保持

④所有输出事物的 TID 和 TDEST 必须与输入事物的相同

⑤TUSER 信息必须与相同的字节保持关联
 

2.5限定字符

2.5.1TKEEP限定字符

TKEEP:来表示该byte的数据是否必须传输到目的地;

TKEEP为高代表他必须被传输到目的地,为低代表是可以被移除的NULL byte。

2.5.1TSTRB限定字符

TSTRB:来表示该byte数据是数据字节还是位置字节;

TSTRB为高代表是一个数据字节,TSTRB为低代表是一个位置字节。

2.6包边界 

包是通过接口传输的一组字节。通过处理组合成包的传输,可以使得基础组件更有效率。AXI4-stream packet类似于 AXI4-burst。在一个包传输过程中需要考虑的信号有TID 、 TDEST 以及 TLAST 。关于 TID 和 TDEST 的更多信息请参考源设备和目标设备信号 。

TLAST的使用如下:

①当取消断言时, TLAST 表示接下来可以进行另一个传输,因此当前传输可以被延迟,以进行扩展、缩小或合并操作

②当被断言时, TLAST 可以被一个目标设备用来表示包的边界

③当被断言时, TLAST 表示在一个共享链路上进行仲裁改变的有效点

2.7源和目标信号

与源设备和目标设备关联的信号有:

TID        提供了一个流标识符,可被用来区分通过相同接口传输的多流数据。

TDEST 提供了用于数据流的粗放的路由信息。

2.8时钟和复位信号

2.8.1 时钟

每个组件都使用一个单一的时钟信号ACLK 。所有输入信号都在 ACLK 的上升沿上采样。所有输出信号必须在 ACLK 上升沿之后发生改变。

2.8.2 复位

协议包含一个单一的低有效的复位信号ARESETn 。复位信号可以被异步断言,但取消断言必须是在 ACLK 上升沿之后、同步的。在复位期间,TVALID 必须被驱动为低。

2.9 用户信号

当m=2 n=3时,它意味着每个数据字节有2个用户信号与他相关,接口总宽度为2,用户bits为6,x=0-5

所以字节x=5的用户信号为TUSER[(5*2)+(2-1):(5*2)];

x=4的用户信号为TUSER[(4*2)+(2-1):(4*2)]

对于TUSER的扩展或者压缩补0法

2.9.1决定用户信号的宽度

决定TUSER 的宽度对于一个具有若干个主机接口和从机接口的互联,互联必须支持的每字节TUSER bit 数定义为:

MIN(MAX[ 主机每字节 TUSER 位数), MAX[ 从机每字节 TUSER 位数])

在实际中:

1. 找出 TDATA 的每字节 TUSER bit 数最大的主机
2. 找出 TDATA 的每字节 TUSER bit 数最大的从机
3. 使用以上两个值中的最小值,即为互联必须支持的每 TDATA 字节 TUSER bit 数

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: axi-streamaxi-lite是两种不同的传输协议,它们在数据传输的方式和控制信号上有所不同。在将axi-stream转换为axi-lite时,需要进行一些改变和调整。 首先,axi-stream是一种流式传输协议,它主要用于高速数据传输,没有固定的地址和控制信号。而axi-lite是一种基于地址和控制信号的传输协议,适用于低速数据传输和对外部设备的读写控制。 要将axi-stream转换为axi-lite,需要定义一个寄存器(或寄存器组),用于接收从axi-stream传输过来的数据。通过定义该寄存器的地址和控制信号,可以对其进行读写操作,并将数据传输到外部设备。 其次,需要根据具体的应用场景,对数据的格式和处理进行调整。axi-stream一般通过数据流的方式传输,而axi-lite传输的数据需要按照特定的格式进行打包和解包。因此,在进行转换时,需要对数据进行格式转换和处理,以满足axi-lite的传输要求。 最后,需要修改相应的控制逻辑和状态机来适应axi-lite的读写操作。axi-stream主要通过数据流传输,而axi-lite需要定义读写控制信号和状态机来实现读写操作。因此,在进行转换时,需要对控制逻辑和状态机进行修改,以实现axi-lite的读写功能。 总结起来,将axi-stream转换为axi-lite需要进行以下几个步骤:定义一个寄存器用于接收数据、调整数据的格式和处理、修改控制逻辑和状态机来适应axi-lite的读写操作。通过这些步骤,我们可以完成axi-streamaxi-lite的转换。 ### 回答2: 要将Axi-Stream转换为Axi-Lite,需要进行一系列的处理和转换。 首先,需要了解Axi-StreamAxi-Lite之间的区别。Axi-Stream是一种高速数据传输协议,用于在数据流传输应用中实现高速数据传输。相比之下,Axi-Lite则是一种更简化、精简的协议,适用于低速、延迟敏感的访问要求。 要将Axi-Stream转换为Axi-Lite,需要将数据流转变为离散的数据包。可以通过添加一些额外的逻辑和寄存器来实现数据的提取和转换。 首先,需要添加一个接收缓冲区,用于接收Axi-Stream传输的数据。可以使用一个FIFO(First-In, First-Out)缓冲区来实现。将Axi-Stream输入端口连接到该缓冲区,并配置缓冲区的大小以适应数据传输的需求。 然后,可以使用状态机和控制逻辑从接收缓冲区中提取数据。根据Axi-Lite协议的要求,需要提取合适的数据字段,并将其放入适当的寄存器中。可以使用状态机来控制数据的提取和转换过程。 最后,在提取和转换数据后,可以使用Axi-Lite的地址端口和数据端口,将数据传输到Axi-Lite总线上。根据Axi-Lite协议的要求,需要设置地址、数据和控制信号,以完成对寄存器的读写操作。 总体而言,将Axi-Stream转换为Axi-Lite需要添加接收缓冲区、状态机和控制逻辑,并通过Axi-Lite协议完成数据的提取和转换。这样可以实现从高速数据传输到低速数据访问的转换。 ### 回答3: Axi-streamAxi-lite是两种不同的通信协议,将Axi-stream转换为Axi-lite可以通过添加适当的逻辑和转换器来实现。下面是一种将Axi-stream转换为Axi-lite的方法: 1. 首先,需要添加一个转换器模块,该模块将负责将Axi-stream信号转换为Axi-lite信号。该转换器模块可以使用FIFO(First-In-First-Out)缓冲区来处理数据流,并将其转换为连续的数据列。 2. 转换器模块接收来自Axi-stream的有效数据包,并根据Axi-lite协议的要求生成对应的Axi-lite数据包。转换过程包括将Axi-stream的数据包拆分为Axi-lite的数据包,并提取有效数据和其他控制信息。 3. 转换器模块还需要处理Axi-stream信号的流速。由于Axi-stream的数据是连续流动的,而Axi-lite的数据包需要在时钟边沿进行传输,因此需要添加适当的时序逻辑来处理数据流速的差异。 4. 转换器模块还应该能够处理Axi-lite协议中的写入和读取操作。写入操作将由Axi-stream转换成Axi-lite写入操作,读取操作将由Axi-stream转换成Axi-lite读取操作。 5. 最后,通过适当的连接操作将转换器模块与Axi-lite总线连接起来,以实现从Axi-streamAxi-lite的转换。 总结来说,将Axi-stream转换为Axi-lite需要添加一个转换器模块,该模块负责处理Axi-stream数据流的数据包和流速,并将其转换为符合Axi-lite协议的信号。这样可以实现从Axi-streamAxi-lite的数据通信转换。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值