Arm Community
Site
Search
User
Site
Search
User
Support forums
Architectures and Processors forum
AXI Wrap Bursts
Jump...
Cancel
State
Not Answered
Locked
Locked
Replies
8 replies
Subscribers
346 subscribers
Views
24614 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
AXI Wrap Bursts
Parag Goel
over 12 years ago
In case of wrapped bursts, we need to calculate first the Aligned_Address, using:
Suppose start address is 55, assuming 32 - bit bus, burst length of 4
Aligned_Address = (INT(Start_Address / Number_Bytes) ) * Number_Bytes;
The value is ::
52 or 56
i.e.
do we have round to lower or upper value.
Then we calculate the wrap boundary, using
Wrap_Boundary = ((INT(Start_Address / (Number_Bytes * Burst_Length))) * (Number_Bytes * Burst_Length);
What does this wrap boundary actually indicate,
1. The address from where wrapping will take place.
2. The address value after wrap.
Also, if anyone can let me know in a step-wise manner how the address are calculated using the same scenario above, would be great.
Hope to see the replies soon.
Parents
0
Peter Harris
over 12 years ago
Note: This was originally posted on 1st July 2009 at
http://forums.arm.com
As I mentioned before, your example is
not a valid AXI transfer
- it can never happen.
The formula in the spec if for calculating the Aligned address in the wrap, not for aligning the start address - that must be aligned by the master making the access.
For a 4-byte beat your start address must be 4-byte aligned. 55 is not. To repeat what I said before:
[snip]
Start_Address needs to be aligned on the beat-size, so for a 32-bit beat it needs 4-byte aligned, 16-bit beat needs to be 2-byte aligned, etc. In this case your start address (55) is not a valid Start_Address for a 32-bit beat - ..., 52, 56, 60, 64, ... would be OK for example.
[/snip]
However, assuming a start address of 56 the following calculation would apply:
Burst Len = 32-bit beat * 4 beats = 16 bytes
Aligned address:
= INT(56 / 16) * 16
= INT(3.5) * 16
= 3 * 16
= 48
Wrap boundary:
= highest byte accessed in burst
= 48 + 16 -1
= 63
Access Pattern:
= 56, 60, 48, 52
Cancel
Vote up
0
Vote down
Cancel
Reply
0
Peter Harris
over 12 years ago
Note: This was originally posted on 1st July 2009 at
http://forums.arm.com
As I mentioned before, your example is
not a valid AXI transfer
- it can never happen.
The formula in the spec if for calculating the Aligned address in the wrap, not for aligning the start address - that must be aligned by the master making the access.
For a 4-byte beat your start address must be 4-byte aligned. 55 is not. To repeat what I said before:
[snip]
Start_Address needs to be aligned on the beat-size, so for a 32-bit beat it needs 4-byte aligned, 16-bit beat needs to be 2-byte aligned, etc. In this case your start address (55) is not a valid Start_Address for a 32-bit beat - ..., 52, 56, 60, 64, ... would be OK for example.
[/snip]
However, assuming a start address of 56 the following calculation would apply:
Burst Len = 32-bit beat * 4 beats = 16 bytes
Aligned address:
= INT(56 / 16) * 16
= INT(3.5) * 16
= 3 * 16
= 48
Wrap boundary:
= highest byte accessed in burst
= 48 + 16 -1
= 63
Access Pattern:
= 56, 60, 48, 52
Cancel
Vote up
0
Vote down
Cancel
Children
No data