AXI协议(数据传输结构)

AXI协议关于Data read and write structure的部分指出,在数据传输过程中,主要涉及三个问题:

  • 窄位宽数据传输(Narrow transfers)
  • 地址非对齐传输(Unaligned Transfer)
  • 混合大小端传输(Byte invariance)

Narrow transfers

当master产生的一笔数据(transfer)位宽小于总线数据位宽时,该次传输成为窄(位宽)数据传输。

协议中规定:

  • 在 INCR 和 WRAP 模式中每次使用的 byte line 必须不同,即数据位置与地址对应。
  • 在 FIXED 模式中,整个传输过程使用相同的 byte line(地址反正 FIXED 不会变)

在这种传输过程中,Master需要告知slave数据通道中哪些字节是有效的,这就需要使用到W通道中的WSTRB信号。

WSTRB[n] 对应 WDATA[8n+7:8n],也就是:当 WSTRB[n] 为 1 时,WDATA[8n+7:8n]有效。

以下图为例,5笔transfer的WSTRB分别为0001/0010/0100/1000/0001

在这里插入图片描述

从上图我们发现,在每次数据传输中使用的数据总线字节位置(byte line)不同,尽管数据以字节为单位,分为多个周期传输,但是数据的位置仍与其地址对应。D[7:0]将写入起始地址 0x0,故位于最低字节。D[15:8] 将写入地址 0x1,故位于次低字节。

在这里插入图片描述

总之,这种窄位宽传输的设计可能的好处在于,当Master是因为Slave或者其他客观条件限制,需要进行窄传输时,可以一次性将数据放置于数据总线上,只需在每次传输期间由Master改变WSTRB信号即可。窄传输中通过Master来调整有效数据的字节位置,以及给出字节有效信号 WSTRB,能够使Slave无需进行数据重组等工作。

Unaligned transfers

AXI 协议支持地址非对齐的传输,允许突发传输的首字节地址,即起始地址与突发传输位宽不对齐。举个例子,数据总线位宽为 64bit 时,如果起始地址为 0x1002 ,则产生了非对齐现象。与 64bit 位宽总线对齐的地址需要能被 8(byte) 整除,即 ADDR[2:0] = 3’b0。

此处对齐与否应该取决于突发传输的宽度,而不是数据总线位宽!这两个是不一样的!数据总线是64bit不代表WDATA有效的数据是64bit

对于非对齐传输,Master会进行两项操作:

  • 即使起始地址非对齐,也保证所有传输是对齐的
  • 在首个transfer中增加填充数据,将首次传输填充至对齐,填充数据使用 WSTRB 信号标记为无效

在这里插入图片描述

这是一个窄传输+非对齐传输的例子,以1st transfer为例:

  • 首先将transfer填充至突发传输位宽32bit(和数据总线位宽区分开),还需要补充0x07 mod 4(byte) = 3byte。解决了非对齐的问题。
  • 接下来就是窄位宽传输的问题了,遵从上文的分析。
  • Master通过添加7byte数据将的实际地址调整为对齐,并用WSTRB为1000标识出无效字节

Mixed-Endian data structure

首先我们要搞清楚内存中数据存放的大小端模式。可以参考内存中的数据存放模式(大端/小端)

为了能够使大小端模式在存储中共存,AXI 协议设计了一种字节定序(Byte-invariant)的大小端传输方案。对于存储中包括多个字节的数据结构(单字节自然不存在大小端问题)协议做了如下规定:

  • 无论数据按什么顺序存放,每个数据结构存储空间的分配方式是相同的
  • 该数据结构按照其大小端模式决定字节存储的地址顺序
  • 在传输过程中不考虑数据结构的大小端,按照字节原先存储的顺序,原样传输并存放至对端

在这里插入图片描述

这种模式的意义在传输双方均不对数据结构的大小端进行解析转换,而严格按照字节的存储顺序进行传输并转存,防止大小端共存产生数据覆盖。

参考文献:
amba3_axi_protocol_spec.A3.4.3
https://zhuanlan.zhihu.com/p/46538028

  • 12
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AMBA协议是指Advanced Microcontroller Bus Architecture(高级微控制器总线结构协议,其中包括多个不同的总线协议,用于在现代SoC(系统级芯片)设计中实现高效的内部通信。其中,AMBA的第四代是AXI(Advanced eXtensible Interface)协议AXI协议是AMBA协议中的一种,被广泛应用于现代SoC设计中。它提供了一种高性能,灵活且可扩展的总线接口,用于在处理器、外设设备和内存之间进行高效的数据传输AXI协议具有多个特性,包括支持高带宽、流水线设计、分层模型和端到端数据保护等。 AXI协议的主要特点包括: 1. 高带宽:AXI协议支持高频率的数据传输,能够满足现代SoC设计对于大量数据的处理需求。 2. 流水线设计:AXI协议使用流水线技术,可以同时进行多个传输操作,提高了总线的效率和吞吐量。 3. 分层模型:AXI协议采用分层的结构,可以灵活地连接多个从属设备,并支持多个处理器之间的共享内存访问。 4. 端到端数据保护:AXI协议引入了一些机制,如校验和和错误检测,以确保数据在传输过程中的完整性和可靠性。 总的来说,AMBA协议中的AXI协议是一种用于现代SoC设计的高性能、灵活和可扩展的总线接口协议,通过提供高带宽、流水线设计和端到端数据保护等特性,满足了现代SoC设计对于高效数据传输的需求。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [AMBA协议- AXI协议指南(1)](https://blog.csdn.net/ygyglg/article/details/129937804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值