AXI4的4K边界

AXI4的4K边界

一、什么是4k边界?

主机每一次写突发或者读突发传输,地址偏移量(或叫地址增加量),不能超过4K,也不能跨域4K。4K=4096。

举个例子:数据位宽m_axi_wdata=128bit,突发长度为100。可以计算出突发长度的字节数量:128÷8×100=1600。

第一次:突发开始的地址是0,结束地址(最后一个字节的地址)是1599。axi总线规定一个字节对应一个地址。

第二次:突发开始的地址是1600,结束地址(最后一个字节的地址)是3199。axi总线规定一个字节对应一个地址。

第三次:突发开始的地址是3200,结束地址(最后一个字节的地址)是4799。axi总线规定一个字节对应一个地址。这个就有问题了,地址超过了4096(4k)

如下图,4k区间即0-4095,或者4096-8191,读写的时候不能跨越4k区间

image-20240222140853695

二、计算最大的突发长度发

计算公式:最大的突发长度发=4096÷(axi数据位宽÷8)

1)m_axi_wdata=128bit:可以计算出最大突发长度:4096/(128÷8)=256。4096是4k边界,128÷8为字节数

2)m_axi_wdata=256bit:可以计算出最大突发长度:4096/(256÷8)=128。

3)m_axi_wdata=512bit:可以计算出最大突发长度:4096/(512÷8)=64。

4)m_axi_wdata=64bit:可以计算出最大突发长度:256。按照上面的计算的话4096/(64÷8)=512,但是axi总线规定突发长度在0到256之间,所以此时最大只能是256

三、如何避免4k边界

1)如果突发长度固定,每次突发的地址偏移量可被4096整除,比如axi4写数据位宽为128bit,突发长度为128,则地址偏移量:128*(128/8)=2048。4096÷2048=2,地址偏移量可以被整除,这可以避免跨越4k边界。地址偏移量就是结束地址减去起始地址。

2)如果突发长度不固定,可以给每次突发分配4k地址空间。

假设数据位宽m_axi_wdata=128bit。第一次突发长度为100,起始地址是0,结束地址是128/8*100 - 1=1599。第二次突发长度是200的话,起始地址是1600,结束地址是1600+(128/8 * 200)-1=4799,此时跨越了4k边界,会出现错误。为了避免跨越4k边界,可以在第二次时,初始地址给4096,那么结束地址就是4096+(128/8 * 200)-1=7295。同理,第三次突发时,起始地址可以从8192开始。

--晓凡	2024222日于武汉书
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值