AXI-STREAM协议及信号详解(1)

将AXI-STREAM协议分为两个部分进行讲解,以下是第一部分

AXI-STREAM

一、INTRO

1、信号线,后面会有,此处不再赘述

2、数据流

2.1 字节流

       字节流是大量数据和空字节的传输。在每次 TVALID、TREADY 握手中,可以传输任意数量的数据字节。空字节没有任何意义,可以在流中插入或删除

2.2 连续对齐流

       连续对齐流是传输多个数据字节,其中每个数据包没有位置或空字节。

3、连续非对齐流

       连续未对齐流是传输多个数据字节,其中每个数据包的第一个数据字节和最后一个数据字节之间没有位置字节。

       但是该形式的数据流可以在数据包的开头、结尾或同时在开头和结尾处具有任意数量的连续位置字节。 

4、稀疏流(SPARSE)

        稀疏流是传输多个数据字节和位置字节。所有数据和位置字节必须被维护并从源传输到目的地。稀疏流仍然是数据字节多。

二、接口信号

note:下面是一些信号位宽的index

n: 数据为位宽(byte)

i: 数据流标识符(TID)宽度,建议最大8位

d:数据流路由信息(TDEST)宽度,建议最大4bit

u:用户定义的边带信息(TUSER)宽度,建议接口宽度的整数倍

仅仅对特殊的信号做解释:

TSREB[(n-1):0]
/*master,字节限定符,指示 TDATA 相关字节的内容是否
被处理为数据字节或位置字节。*/
TKEEP[(n-1):0]
/*指代相关位置的数据是data还是null,tkeep拉高:data;tkeep拉低:null*/
TID 是数据流标识符,指示不同的数据流。
TDEST 提供数据流的路由信息。
TUSER 是用户定义的边带信息,可以与数据流一起传输。

2.2 信号传输

2.2.1 握手

        TVALID与TREADY信号在传输发生时需要被置位,可以某一个信号先被置为在等待另一个信号,也可以同时置为。就像之前说的TVALID不能被动等待TREADY信号,且TVALID信号在置位后必须直到握手结束之前才能拉低。

        从机可以等待TVALID信号后再置位对应的TREADY;

        从机置位TREADY,可以在TVALID信号置位前拉低TREADY

  • 握手例子1;TVALID before TREADY handshake

    TVALID信号优先拉高

    这里需要注意:一旦MASTER的TVALID拉高,来自MASTER的数据和控制信息必须保持不变,直到SLAVE的TREADY拉高。下图可见VALID信号和DATA是同时准备好的,从机READY信号由valid信号激活,此时从机要同步用缓冲区接收数据。

  • 握手例子2;TREADY before TVALID handshake

    仅表示从机主动拉高TREADY,但是主机的VALID不会依存

  • 握手例子3;TVALID with TREADY handshake

2.3 数据信令 Data Signaling

        本节介绍 AXI4-Stream 接口的数据信令要求。 TDATA 是 AXI4-Stream 接口的主要有效负载,用于将数据从源传输到目的地。

2.3.1 字节位置

        数据流中总线的低位字节优先发出来,对于fully packed stream,可以使用以下方法确定给定字的位置:

序列字节数n,从0开始向上计数;

传输次数t,从0开始向上计数;

总线宽度w;

INT(X),向下取整;

传输次数t : t = INT(n/w);

byte position 的位置:b = n - (t*w);

byte position 的字节定位:TDATA[(8b+7):8b]

2.3.2 字节类型

AXI4-Stream协议中定义了三种字节类型

        1、DATA BYTE:有效数据字节

        2、Position BYTE : 位置字节必须从source到destination,必须在源和目标之间维护位置字节的数量以及流中位置字节的相对位置(相对于其他数据字节和位置字节)与位置字节关联的 TDATA 数据值不需要在源和目的地之间传输。

        3、Null BYTE

        互连不得修改流内数据字节或位置字节的数量或相对位置。允许互连从流中插入或删除空字节。

        某些操作可能需要插入空字节,例如扩大到更宽的数据总线,其中没有足够的数据和位置字节来进行完整的数据宽度传输。

        主组件和从组件不需要支持空字节,因此任何能够在流中插入空字节的互连也应该能够在流到达无法处理空字节的目的地之前删除它们。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现将AXI4协议数据转换为AXI-Stream协议数据的过程可以通过以下步骤进行: 1. AXI4协议数据格式(如地址、数据、控制信号等)与AXI-Stream协议数据格式(仅有数据信号)存在差异,在转换过程中需要对数据进行重新组织和调整。 2. 首先,从AXI4总线上接收到的数据包括地址信号、数据信号和控制信号。其中,地址信号指示要访问的AXI4设备的具体位置,数据信号包含要传输的实际数据,而控制信号则指示操作类型和传输方向。 3. 在数据转换模块中,需要将接收到的AXI4数据进行解析和分离。根据AXI4协议规范,地址信号和数据信号以及控制信号之间存在对应关系。通过解析控制信号,可以确定要进行的操作类型,如读取或写入。 4. 根据控制信号的类型(读取或写入),确定在AXI-Stream数据中要设置的有效位(Valid)标志。对于写入操作,需要将有效位设置为高电平,以指示有新的数据要传输。对于读取操作,有效位设置为低电平,以指示无新的数据传输。 5. 组织被选中的数据(根据控制信号的读取或写入操作类型),并以AXI-Stream协议的格式进行处理和编码。AXI-Stream协议仅包含数据信号,没有地址信号和控制信号。 6. 在AXI-Stream数据中,根据AXI4数据的信息,包含数据位(data)以及标志位(valid)。有效位标志(valid)在数据有效时设置为高电平,以表明数据位(data)是有效的。 7. 最后,将转换后的AXI-Stream数据发送到AXI-Stream总线上,以供其他支持该协议的设备使用。 通过以上步骤,可以将AXI4协议数据转换为AXI-Stream协议数据,实现不同协议之间的数据交互和传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值