can anybody explain how AXI Wrap boundary calculation done? For example, what is wrap boundary for address 0x24, databus width is 32-bit, awlen is 4, awsize is 2?
In reply to dorababu:
Let us consider your slave’s size is slave[3:0][3:0] with 1byte each so your addressing will be from 0x08 to 0x128
You have taken size ‘2’ meaning 4-byte size for each transfer for 4 transfers(length) with your starting address as 0x24.
Wrap boundary for this will be,
size of each transferlength => 32bits4 => 128 => 0x128 is your wrap boundary.
Your transaction will be something like this,
Transfer 1 : 0x24 to 0x48
Transfer 2 : 0x56 to 0x80
Transfer 3 : 0x88 to 0x112
Transfer 4 : 0x120, 0x128 (it reached its last location - here the wrapping happens - next byte goes to the lowest location - 0x08 followed by 0x16)
You prevent loss of data(here the last 2 bytes) by wrapping
Hope this helped you.
Hello sir,
As you mentioned slave size[3:0][3:0] and calculated 0x08 to 0X128, so how this range was obtained?
Does size of each transfer will be equal to the data bus width as you have taken 32bit?