AXI 4k边界

由AXI_MASTER源码而来的AXI 4k边界学习。

  • AXI中一次突发不能越过4k边界,4k = 2^12,以32位计算机系统为例,其以32位来表示内存地址,因此像32'h00001000,32'h00002000,32'h00003000这样的地址都称为4k边界,原因是计算机系统中定义一个page大小为4k Byte,为了更好地设定每个slave的访问属性,就给每个slave划分4k Byte空间,而计算机系统一个地址的容量为1 Byte,因此一个slave的地址总量为4k。如果一次burst传输访问两个slave,则可能会造成地址从slave1增加到了slave2上,而slave2不响应,导致传输无法完成。
  • 在一次burst transaction中,有若干次burst传输,每次burst传输的地址逐渐累加。
  • AXI的4K边界是指任意一次burst传输都不能跨过4K边界的地址;由此可得到任意一次burst传输的最大burst length = 4K / (2^AXSIZE);但是AXI4协议规定burst length最大只能为2^8,即若AXSIZE=2,其最大burst length不是2^10,而仍是2^8。
  • 一次burst transaction的每个burst传输的burst length可以是固定的,也可以是不固定的。

一次burst transaction从地址0开始,那么4096*N这些地址便是4K边界地址,(4K=4*2^10=4096)
假设AXSIZE=4,那么每个transfer的宽度为2^4 Byte,
当burst length固定为100时:
    第一次burst传输,地址从0       到1599;(0+100*2^4-1)
    第二次burst传输,地址从1600 到3199;
    第三次burst传输,地址从3200 到4799;
    ……
第三次burst传输跨过了4K边界。

  • 如何避免出现4K边界问题:
  • 当burst length固定,使每次burst传输的地址偏移量能被4096整除:即burst length * 2 ^ AXSIZE 能被4K整除

例如,AXSIZE仍为4,burst length固定为2^9,
    第一次burst传输,地址从0      到2047;(0+2^9*4-1)
    第二次burst传输,地址从2048到4095;
没有跨过4K边界。

  • 当burst length不固定,可以给每一次burst传输分别不同的4k地址区间:

例如,AXSIZE仍为4,
    第一次burst传输burst length为100,地址从0到1599;
    第二次burst传输burst length为200,地址直接从4096开始,到4096+200*2^4-1;
    第三次burst传输burst length为256,地址直接从8191开始,到8192+256*2^4-1;
没有跨过4K边界。

所以以下代码对应当burst length固定,使每次burst传输的地址偏移量能被4096整除的情况:
地址的偏移量即一次burst传输的最大BYTE数= 2^12/(burst length*2^AXSIZE),
对其求以2为底的对数即为每次偏移量的最大BYTE数计数信号位宽

= clogb2(2^12/(burst length*2^AXSIZE))

=12-clogb2(burst length*2^AXSIZE)。

// Burst length for transactions, in C_M_AXI_DATA_WIDTHs.
// Non-2^n lengths will eventually cause bursts across 4K address boundaries.
 localparam integer C_MASTER_LENGTH    = 12;
// total number of burst transfers is master length divided by burst length and burst size
 localparam integer C_NO_BURSTS_REQ = C_MASTER_LENGTH-clogb2((C_M_AXI_BURST_LEN*C_M_AXI_DATA_WIDTH/8)-1);
 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值