目录
一、前言
二、写选通(Write strobes)
三、窄传输(Narrow transfers)
1、示例1
2、示例2
四、字节不变性(Byte invariance)
五、未对齐的传输(Unaligned transfers)
六 、读写响应结构
七、总结
一、前言
在之前的文章中,我们介绍了AXI协议的猝发传输,AXI协议是基于猝发的,主机通过将控制信息和传输中第一个字节的地址驱动到从机,开始每一次猝发传输。随着猝发的进行,从机必须计算突发中后续传输的地址。一次猝发不能跨越4KB的地址边界。
在这篇文章中,我们将介绍AXI协议的数据读写结构和读写响应结构。主要描述了 AXI 读写数据总线传输的不同大小和接口如何用字节不变endian 去握手混合 endian 传输,之后我们简单介绍关于AXI的读写响应操作。
二、写选通(Write strobes)
当写选通信号 WSTRB[n:0] 为高时,指定包含有效信息的数据总线的字节通道。写数据总线的每8位都有一个写选通,因此 WSTRB[n] 对应于 WDATA[ (8n+7) : (8n) ] 。
主机必须确保写选通仅对包含有效数据的字节通道是高的。
当WVALID为低时,写选通可以取任何值,不过还是建议它们要么是驱动的低,要么保持在它们以前的值。
三、窄传输(Narrow transfers)
当主机产生的数据宽度小于数据总线宽度时,地址和控制信息决定哪一个 字节通道(byte lanes)为有效的数据:
(1)在递增或回卷模式时,对猝发的每个节拍使用不同的字节通道
(2)在固定模式时,每个节拍都使用相同的字节通道
下面给出了两个窄传输的例子(阴影单元格表示未传输的字节):
1、示例1
- 猝发有5个传输
- 起始地址是0
- 每个传输是8位
- 传输是在一个位宽为32位总线上
- 突发类型是INCR(递增猝发)
2、示例2
- 猝发有三个传输
- 起始地址是4
- 每个传输是32位
- 传输是在一个位宽为64位总线上
四、字节不变性(Byte invariance)
为了访问单个内存空间中的混合数据结构,AXI协议使用字节不变的方案。大多数小端元件可以直接连接到字节不变接口。只支持大端传输的元件需要一个字节不变操作的转换函数。字节不变性确保了大端结构和小结构可以在单个内存空间中共存而不损坏。
下面是一个数据不变性存取需求的数据结构的例子。他包含头信息,例如source、destination identifiers 这些信息是采用 little-endian 格式,但是 payload 是big-endian字节流,具体情况如下图:
字节不变性确保在数据结构中 little-endian 存取头信息的部分不会破坏其他 big-endian 数据。
五、未对齐的传输(Unaligned transfers)
AXI支持非对齐的传输。对于任何由大于一个字节的数据传输组成的猝发,被访问的第一个字节可能与自然地址边界不对齐。例如,从0x1002的字节地址开始的32位数据包与自然的32位地址边界不对齐。
主机可以:使用低阶地址行去标示一个不对齐的起始地址。低阶地址行的信息必须包含 byte lane strobes 信息。
下图显示了在32位总线上使用对齐和未对齐的32位传输的递增猝发的示例。图中的每一行表示一个传输,阴影单元格表示未传输的字节;
下图显示了在64位总线上使用对齐和未对齐的32位传输的递增突发的示例。图中的每一行表示一个传输,阴影单元格表示未传输的字节:
下图显示了一个在64位总线上使用对齐的32位传输的包装突发的例子。图中的每一行表示一个传输,阴影单元格表示未传输的字节:
六 、读写响应结构
AXI协议为读和写事务提供响应信令:
(1)对于读事务,来自从机的响应信息在读数据信道上;
(2)对于写事务,响应信息在写响应信道上。
七、总结
本文介绍的主要内容是AXI协议的数据读写结构和读写响应结构,主要讲述了当遇到各种特殊情况时,AXI如何完成数据的读写操作,最后介绍了读写响应的4种类型。