AXI中的wrap burst

协议:AMBA® AXI and ACE Protocol Specification ISSUE H.c

AXI has the following rules governing the use of bursts:
• For wrapping bursts, the burst length must be 2, 4, 8, or 16.
• A burst must not cross a 4KB address boundary.
• Early termination of bursts is not supported.

1、4KB问题
关于axi协议里面burst的4k问题https://blog.csdn.net/hit_shaoqi/article/details/53245521
2、burst_length=2、4、8、16**
start_address:Axaddr,The start address that is issued by the Manager.
Number_Bytes:= 2^AxSIZE,The maximum number of bytes in each data transfer.
Burst_Length = AxLEN + 1
Aligned_Address = (INT(Start_Address / Number_Bytes)) × Number_Bytes
Address_1 = Start_Address
Wrap_Boundary = (INT(Start_Address / (Number_Bytes × Burst_Length)))× (Number_Bytes × Burst_Length)
Address_N = Wrap_Boundary + (Number_Bytes × Burst_Length)
Address_N = Start_Address + ((N – 1) × Number_Bytes) – (Number_Bytes × Burst_Length)
3、example
3.1、

addr=ff0,size=4,burst_length=8.
Aligned_Address=INT(ff0/2^4)x2^4=ff0
Address_1=ff0
Wrap_Boundary=INT(ff0/(10x8))X(10x8)=f80
Address_N=f80+80=1000
Address_2=f80
Address_3=f90
Address_4=fa0
Address_5=fb0
Address_6=fc0
Address_7=fd0
Address_8=fe0

地址正好处于4k边界。
3.2、

addr=ff0,size=4,burst_length=5.
Aligned_Address=INT(ff0/2^4) x 2^4=ff0
Address_1=ff0
Wrap_Boundary=INT(ff0/(10x5))X(10x5)=ff0
Address_N=ff0+50=1040

地址跨越4k边界。
3.3、

addr=ff8,size=4,burst_length=16.
Aligned_Address=INT(ff8/2^4) x 2^4=ff0
Address_1=ff0
Wrap_Boundary=INT(ff0/(10x10))X(10x10)=f00
Address_N=f00+100=1000

地址正好处于4k边界。
3.4、
特殊对齐地址0

addr=0,size=4,len=f,burst_length=16
Aligned_addr=INT(0/2^4)x2^4=0
Address_1=0
Wrap_boundary=INT(0/(10x10)x(10x10))=0
Address_16=f0

4、仿真测试

constraintAligned:Access != ACCESS_EXCLUSIVE,StartAddress % BurstSize == 0;
AXI 当burst=wrap且为非独占访问时,只接受与size对齐的地址。BurstSize=1 << Size,StartAddress % BurstSize == 0。

Size   BurstSize
0      1(1<<0)
1      2(1<<1)
2      4(1<<2)
3      8(1<<3)
4      0x10(1<<4)
5      0x20(1<<5)
60x40(1<<6)

你可能感兴趣的:(协议,笔记,IC验证)