AXI协议中的BURST

本文详细介绍了AXI协议中的Burst传输模式,包括FIXED、INCR和WRAP三种类型,以及其地址计算和限制。AXI4协议中的burst长度、数据宽度和响应类型也被讨论,强调了在错误情况下数据完整传输的要求。同时,文章还涵盖了地址对齐、wrap边界计算等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AXI是基于BURST传输的。
burst 传输必须不能越过4KB 地址接界线。

AXI4 的burst 长度为:AxLEN[7:0]+1;
master 可以通过关闭写strobe的方式关闭更多的写操作,

每一个burst传输中数据按照byte一拍一拍传输:
每个transfer中,字节数为2**AxSIZE[2:0],例如,
每个transfer,传输字节数为4,那么AxSIZE[2:0]==3’h2,
每个transfer,传输字节数为8,那么AxSIZE[2:0]==3’h3,

传输的大小必须不能超过每次传输相关器件的数据宽度。
例如对于WDATA,如果位宽为32,那么每个transfer,传输字节数不超过4。

AXI 协议定义三种burst 类型:
FIXED:burst 传输中每次传输的地址相同;burst 中所有拍的有效byte line是固定的,然而这些byte line中,真正有WSTRB的byte在burst中每一拍都不同。
INCR:burst中每次传输的地址比前一个变大,增量跟传输的大小相关。例如,一个4byte大小的burst传输,地址比前一个地址加四。
WRAP:长度必须是2,4,8,16; 起始地址必须包含每次传输的大小。高位地址被限制,会循环到低位地址。

AxBURST代表TYPE。
2‘b00:FIXED。
2’b01:INCR,
2’b10:WRAP,
2’b11: reserved.

xRESP表示TYPE。
2’b00:OKAY,
2’b01:EXOKAY,
2’b10:SLVERR,
2’b11:DECERR。
在写传输中,一个完整的burst 对应一个response,而不是每次传输都有response。
在读传输中,slave 可能在一个burst中不同的传输中指定不同的response。比如,一个burst读取16次,slave 可能在15个中回复OKEY,一个回复SLVERR。
协议要求发送数据必须确定,即使一个错误标志。比如,一次读操作slave有8次传输,但是slave有一个错误条件,这样slave必须发送8次数据传输,每次返回一个错误响应。

计算方式;
Start_Address=AxADDR,
Number_Bytes=2**AxSIZE,
Burst_Length=AxLEN+1,
Aligned_Addr=(INT(Start_Address/Number_Bytes))xNumber_Bytes。//INT表示向下取整。
Address_N=Aligned_Address+(N-1)xNumber_Bytes,
Wrap_Boundary=(INT(Start_Address/(Number_Bytes x Burst_Length)))x(Number_Bytes x Burst_Length)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值