突发传输
本章介绍 AXI 突发类型以及如何计算突发内传输的地址和字节通道。 它包含以下部分:
- 寻址选项
- 突发长度
- 突发大小
- 突发类型
- 突发地址
4.1 关于寻址选项
AXI 协议是基于突发的,Master通过驱动传输控制信息和传输中第一个字节的地址来开始每个突发。 随着突发事务的进行,Slave负责计算突发中后续传输的地址。
突发不得跨越 4KB 边界,以防止它们跨越Slave之间的边界并限制Slave内所需的地址增量器的大小。
4.2 突发长度
AWLEN 或 ARLEN 信号指定每个突发内发生的数据传输次数。 如表 4-1 所示,每个突发的传输长度为 1-16。
Table4-1 Burst length encoding
对于回环突发,突发的长度必须是 2、4、8 或 16 次传输。
每笔事务都必须具有 ARLEN 或 AWLEN 指定的传输次数。 没有任何组件可以提前终止突发以减少数据传输的数量。 在写突发期间,Master可以通过解除所有写选通来禁止进一步写入,但它必须完成突发中剩余的传输(无论如何不能中断正在进行中的突发)。 在读突发期间,Master可以丢弃进一步的读数据,但它必须完成突发中剩余的传输。
注意:
在访问读取敏感设备(例如 FIFO)时,丢弃不需要的读取数据可能会导致数据丢失。 Master绝不能使用比所需长度更长的突发长度来访问此类设备(不能多读)。
4.3 突发大小
表 4-2 显示了 ARSIZE 或 AWSIZE 信号如何指定在突发内的每个节拍或数据传输中传输的最大数据字节数。
Table4-2 Burst size encoding
AXI 根据传输地址确定每次传输使用数据总线的哪些字节通道。
对于传输大小小于数据总线的增量或回环突发,对于突发的每个节拍,数据传输在不同的字节通道上。 固定突发的地址保持不变,每次传输都使用相同的字节通道。
任何传输的大小不得超过事务中组件的数据总线宽度。
4.4 突发类型
AXI 协议定义了三种突发类型,如下所述:
- 固定突发(地址固定的突发)
- 增量突发(地址递增的突发)
- 回环突发。(在回环边界处回绕到较低地址的递增地址突发)
表 4-3 显示了 ARBURST 或 AWBURST 信号如何选择突发类型。
Table4-3 Burst type encoding
4.4.1 固定突发
在固定突发中,突发中每次传输的地址都保持不变。 这种突发类型用于重复访问同一位置,例如加载或清空外设 FIFO 时。
4.4.2 增量突发
在增量突发中,突发中每次传输的地址都是前一个传输地址的增量。 增量值取决于传输的大小。 例如,大小为四字节的突发中每次传输的地址是前一个地址加四。
4.4.3 回环突发
回环突发类似于递增突发,突发中每次传输的地址都是前一个传输地址的增量。 然而,在回环突发中,当到达回绕边界时,地址回绕到较低地址。 回环边界是突发中每个传输的大小乘以突发中的传输总数。
两个限制适用于回环突发:
- 起始地址必须与传输的大小对齐
- 突发的长度必须是 2、4、8 或 16
4.5 突发地址
本节提供了一些简单的公式,用于确定突发内传输的地址和字节通道。 公式使用以下变量:
Variables | 解释 |
Start_Address | Master发出的起始地址 |
Number_Bytes | 每次数据传输中的最大字节数 |
Data_Bus_Bytes | 数据总线中的字节通道数 |
Aligned_Address | 起始地址的对齐版本 |
Burst_Length | 突发内的数据传输总数 |
Address_N | 突发内传输 N 的地址;N是2-16之间的整数 |
Wrap_Boundary | 回环突发中的最低地址 |
Lower_Byte_Lane | 传输的最低寻址字节的字节通道 |
Upper_Byte_Lane | 传输的最高寻址字节的字节通道 |
INT(x) | x 的四舍五入整数值 |
使用以下等式来确定突发内的传输地址:
使用以下等式确定突发中第一次传输的地址:
使用此等式确定突发中第一次传输之后的任何传输的地址:
对于回环突发,扩展 Wrap_Boundary 变量以考虑回环边界:
如果
使用如下公式:
在卷绕到边界之后,使用如下公式:
使用以下等式确定用于突发中的第一次传输的字节通道:
使用下列等式来确定在突发中的第一次传输之后要用于所有传输的字节通道:
数据基于如下公式传输: