AXI协议详解(1)-协议简介
https://zhuanlan.zhihu.com/p/574017386
AXI协议详解(2)-信号描述
https://zhuanlan.zhihu.com/p/576906832
AXI协议详解(3)-通道握手
https://zhuanlan.zhihu.com/p/577287559
AXI协议详解0:介绍与资料梳理
https://zhuanlan.zhihu.com/p/469042371
AMBA学习
https://www.zhihu.com/column/c_1663245806869291008
重要信号
1. AxLEN 突发传输长度
AxLEN表示突发长度,即读写事务中数据传输的确切数量,此信息确定与该地址相关的数据传输的数量。
突发长度的计算公式是:突发长度=AxLEN+1。
AXI3和AXI4/5的突发长度最大值略有不同,如下所示:
- AXI3:所有突发类型都支持1~16的突发长度。
- AXI4/5:INCR突发类型支持1256的突发长度,其他类型还是只支持116的突发长度。
AXI有以下规则来管理突发的使用:
- 对于WRAP类型突发,突发长度必须为2、4、8或16。
- 突发不能跨越4KB地址边界。(page大小为4K,4KB 边界即addr[11:0]=0的地址)
- 不支持提前终止突发。
- 注意:没有任何组件可以提前终止突发,然而为了减少写突发中的数据传输数量,Master可以通过取消所有WSTRB来禁用进一步的写。这种情况下Master必须在突发中完成剩余的传输(但是写的数据无效)。在读突发中,Master可以丢弃读取的数据,但它也必须完成突发中的所有传输。
- 注意:丢弃不需要的读数据可能导致访问读敏感设备(如FIFO)时丢失数据。当访问这样的设备时,Master必须使用与所需数据传输的大小完全匹配的突发长度。
在AXI4/5中,具有INCR突发类型和长度大于16的事务可以转换为多个较小的突发,即使事务属性表明该事务是不可修改的。(请参阅关于CACHE内存属性的更改。)这种情况下,生成的突发必须保留与原始交易相同的事务特征,但是注意这些事务的突发长度被减少了,突发地址也被适当地调整了。
注意:为了实现AXI3兼容性或者保证QoS性能,需要能够将较长的突发分解为多个较短的突发。
2. AxSIZE 突发传输宽度
指的是一个 data transfer(周期) 里面有多少 bytes. ARSIZE[2:0]
和AWSIZE[2:0]
就是用于设置这个属性的。
AxSIZE表示的数据宽度不能超过数据总线宽度。
AxBURST
突发传输类型
(1)FIXED
该地址在每次传输中都是相同的。
有效的字节通道对于突发中的所有节拍(beat)都是恒定的。然而在这些字节通道中,对于突发中的每个节拍,断言了WSTRB的实际字节可能是不同的。
这种突发类型用于重复访问同一位置,例如在加载或清空FIFO时。
(2)INCR
突发中每次传输的地址都是前一次传输地址的增量。
增量值取决于传输的大小。例如在一个大小为4Byte的突发中,每个传输的地址是前一个地址加4。
这种突发类型用于访问普通顺序内存。
(3)WRAP
WRAP突发类似于INCR突发,不同之处在于如果达到了地址上限,地址就会回卷到较小的地址。以下限制适用于WRAP突发:
起始地址必须与每次传输的大小一致。
突发的长度必须为2、4、8或16次传输。
这种突发类型用于缓存线路访问。
一些事项
概念 Transaction、Burst、Beat(Transfer)
Transaction是包含整个burst的传输,包括address/data/response。Transfer值的是单个信息的传输,比如一个address或一个data。
一次传输即握手成功就叫做一次transfer,有些场景也会叫做一次beat。而Transaction指的是传输一组数据所发生的所有的交互。用官方的话来说如下:
A transfer is a single exchange of information, with one VALID and READY handshake.
A transaction is an entire burst of transfers, containing an address transfer, one or more data transfers, and, for write sequences, a response transfer.
4k边界
Burst不得跨4KB边界,防止跨越Slave边界
这是为了避免一个burst访问两个slave。它还限制了slave需要支持的地址递增的数量。
Outstanding传输
表示正在进行中的传输,master在当前transaction任务完成之前,就可以开始进行下一个transaction,因此系统中可能存在多个outstanding的transaction。即一个transaction已经发出,但还没有得到response。