网上有许多关于AXI非对齐传输和窄传输的介绍,但配图和介绍内容均以wdata为例,缺少slave返回读data的处理办法。
通过查阅arm community论坛发布的axi unaligned transfer相关帖子,确认了非对齐/窄传输时读返回data的格式,本文将就此展开介绍。
首先我们假设总线宽度为64 bit,有这样一片内存区域,其中存储的值如下图所示(对应地址为7-0, 15-8):
窄传输
INCR
我们发送burst length为4 transfers,busrt size为32-bits,burst type为INCR,起始地址为0的窄传输包,则返回的rdata分别为0x89abcdef、0x1234567、0x76543210、0xfedcba98,高32位补0。
非对齐传输
INCR
我们发送burst length为4 transfers,busrt size为32-bits,burst type为INCR,起始地址为3的非对齐传输包,则返回的rdata分别为0x23456789、0x54321001、0xdcba9876、0xfe,高32位补0,最后一笔transfer未使用位补0。