在 AXI4 协议 中,地址的计算方式取决于 数据位宽(Data Width) 和 突发长度(Burst Length)。根据你的描述:
- 数据位宽(Data Width): 128 bit(16 Byte)
- 突发长度(Burst Length): 128
- 初始地址(Starting Address): 0x0
地址计算方式
AXI4 的 地址增量(Address Increment) 由以下公式决定:
[
\text{Next_Address} = \text{Current_Address} + (\text{Burst_Length} \times \text{Data_Width_Bytes})
]
其中:
- Data_Width_Bytes =
128 bit / 8 = 16 Byte
- Burst_Length =
128
所以,完成一次突发传输后,下一个突发的起始地址 应该是:
[
\text{Next_Address} = 0 + (128 \times 16) = 2048 \ (\text{0x800})
]
验证地址对齐
AXI4 要求 地址必须对齐到数据宽度,即:
- 对于 128-bit(16 Byte) 数据,地址必须是 16 的倍数(即最低 4 位为
0
)。 - 你的初始地址
0x0
和计算出的0x800
都满足对齐要求。
总结
- 当前突发传输范围:
0x0
→0x7FF
(共 128 × 16 = 2048 Byte) - 下一次突发起始地址:
0x800
(2048) - 地址增量(addr += ?):
2048
(即128 × 16
)
特殊情况
如果 突发类型(Burst Type) 是 固定地址(FIXED),则地址不会改变(适用于 FIFO 场景)。但通常 AXI4 传输使用 增量突发(INCR),所以上述计算适用。
如果你遇到 地址错误,请检查:
- AWADDR 是否对齐到 16 Byte。
- 突发类型(Burst Type) 是否为
INCR
(默认是增量突发)。 - 突发长度(Burst Length) 是否正确(AXI4 最大支持 256,但你的 IP 可能限制为 128)。