AXI 事务构造(1)---地址构造

1. 地址构造

AXI 协议是基于突发的。master通过驱动控制信息和事务中第一个字节的地址到slave来开始每个突发。随着突发的进行,slave必须计算突发中后续传输的地址。

突发不得跨越 4KB 地址边界。

注意  这防止了突发跨越两个slave之间的边界。它还限制了slave必须支持的地址增量的数量。

1.1 突发长度(burst length)

突发长度由以下指定:

  • 读传输的 ARLEN[7:0]
  • 写传输的 AWLEN[7:0]

在本spec中,AxLEN 表示 ARLEN 或 AWLEN。

AXI3 支持所有突发类型的突发长度为 1 到 16 次传输。

AXI4 将 INCR 突发类型的突发长度支持扩展到 1 到 256 次传输。AXI4 中所有其他突发类型的支持仍为 1 到 16 次传输。

AXI3 中的突发长度定义为: Burst_Length = AxLEN[3:0] + 1

AXI4 中的突发长度定义为: Burst_Length = AxLEN[7:0] + 1,以适应 AXI4 中 INCR 突发类型的扩展突发长度。

AXI 有以下规则管理突发的使用:

  • 对于wrap突发,突发长度必须为 2、4、8 或 16
  • 突发不得跨越 4KB 地址边界
  • 不支持提前终止突发。

没有组件可以提前终止突发。然而,为了减少写突发中的数据传输数量,master可以通过取消断言所有写使能来禁用进一步的写入。在这种情况下,master必须完成突发中剩余的传输。在读突发中,master可以丢弃读数据,但它必须完成突发中的所有传输。

注意 丢弃不需要的读数据可能导致在访问读敏感设备(如 FIFO)时丢失数据。在访问此类设备时,master必须使用完全匹配所需数据传输大小的突发长度。 

在 AXI4 中,具有 INCR(增量)突发类型且长度大于 16 的事务可以被转换为多个更小的突发,即使事务属性表明该事务是不可修改的(Non-modifiable)。在这种情况下,生成的突发必须保留与原始事务相同的事务特性,唯一的例外是:

  • 突发长度减少;
  • 生成的突发的地址适当调整。

注意:将更长的突发分解为多个更短的突发的能力对于 AXI3 兼容性是必需的,也可能需要用来减少更长突发对服务质量(QoS)保证的影响

1.2 突发大小(burst size)

在突发中的每个数据传输,或拍(beat),要传输的最大字节数由以下指定:

  • 读传输的 ARSIZE[2:0]
  • 写传输的 AWSIZE[2:0]

在本规范中,AxSIZE 表示 ARSIZE 或 AWSIZE。

下表显示了 AxSIZE 编码对应突发大小

AxSIZE[2:0]字节传输数
0b0001
0b0012
0b0104
0b0118
0b10016
0b10132
0b11064
0b111128

如果 AXI 总线宽度大于突发大小,AXI 接口必须根据传输地址确定每次传输使用数据总线的哪些字节通道。

1.3 突发类型

AXI 协议定义了三种突发类型:

1.3.1 FIXED(固定)

在固定突发中:

  • 突发中每次传输的地址都相同。
  • 对于突发中的所有拍(beat),有效的字节通道是恒定的。然而,在这些字节通道内,每一拍中实际有 WSTRB 断言的字节可以不同。

这种突发类型用于对同一位置的重复访问,例如在加载或清空一个 FIFO(先进先出队列)时。

1.3.2 INCR(增量)

在增量突发中,突发中每次传输的地址是前一次传输地址的增量。增量值取决于传输的大小。

例如,在大小为四个字节的突发中,每次传输的地址是前一个地址加四。

这种突发类型用于访问常规的顺序内存。

1.3.3 WRAP(包装)

包装突发与增量突发类似,只不过当达到一个上限地址限制时,地址会回绕到一个较低的地址。 包装突发适用以下限制:

  • 开始地址必须与每次传输的大小对齐。
  • 突发的长度必须为 2、4、8 或 16 次传输。

包装突发的行为是:

  • 突发使用的最低地址与要传输的数据的总大小对齐,即,(每次传输的大小)×(突发中的传输次数)。这个地址被定义为包装边界。
  • 每次传输后,地址增量与 INCR 突发相同。然而,如果这个增量地址是(包装边界)+(要传输的数据的总大小),那么地址会回绕到包装边界。
  • 突发中的第一个传输可以使用高于包装边界的地址,但必须遵守包装突发适用的限制。这意味着对于第一个地址高于包装边界的任何 WRAP 突发,地址都会发生回绕。

这种突发类型用于缓存行访问。

突发类型由以下指定:

  • 读传输的 ARBURST[1:0]
  • 写传输的 AWBURST[1:0]

在本规范中,AxBURST 表示 ARBURST 或 AWBURST。

下表显示了 AxBURST 信号编码对应的突发类型。

AxBURST[1:0]突发类型
0b00FIXED
0b01INCR
0b10WRAP
0b11保留

1.4 突发地址

一次突发内传输的地址和字节通道取决于以下变量:

Start_Address(起始地址)                    主设备发出的起始地址。

Number_Bytes(数据字节数)                每次数据传输中的最大字节数。

Data_Bus_Bytes(数据总线字节数)      数据总线中的字节通道数。

Aligned_Address(对齐地址)                  起始地址的对齐版本。

Burst_Length(突发长度)                        突发内总的数据传输次数。

Address_N(传输 N 的地址)                    突发中第 N 次传输的地址。N 为 1 表示突发中的第一个传输。

Wrap_Boundary(包装边界)                     包装突发内的最低地址。

Lower_Byte_Lane(较低字节通道)           传输中地址最低的字节的字节通道。

Upper_Byte_Lane(较高字节通道)           传输中地址最高的字节的字节通道。

INT(x)                                                           x 的向下取整整数值。

以下方程式确定突发内传输的地址:

  • 起始地址(Start_Address) = AxADDR
  • 数据字节数(Number_Bytes) = 2 ^ AxSIZE
  • 突发长度(Burst_Length) = AxLEN + 1
  • 对齐地址(Aligned_Address) = (起始地址 / 数据字节数) 的向下取整 × 数据字节数

这个方程式确定突发中第一次传输的地址:

  • 传输1的地址(Address_1) = 起始地址

对于增量(INCR)突发,以及地址尚未包装的包装(WRAP)突发,这个方程式确定突发中第一次传输之后任何传输的地址:

  • 传输N的地址(Address_N)= 对齐地址 + (N - 1) × 数据字节数

对于包装(WRAP)突发,包装边界变量(Wrap_Boundary)定义了包装边界:

  • 包装边界(Wrap_Boundary)= (起始地址 / (数据字节数 × 突发长度)) 的向下取整 × (数据字节数 × 突发长度)

对于包装(WRAP)突发,如果传输N的地址(Address_N)= 包装边界 + (数据字节数 × 突发长度),那么使用这个方程式计算当前传输:

  • 传输N的地址(Address_N)= 包装边界

使用这个方程式计算任何随后的传输:

  • 传输N的地址(Address_N)= 起始地址 + (N - 1) × 数据字节数 - (数据字节数 × 突发长度)

这些方程式确定突发中第一次传输使用哪些字节通道:

  • 较低字节通道(Lower_Byte_Lane)= 起始地址 - (起始地址 / 数据总线字节数) 的向下取整 × 数据总线字节数
  • 较高字节通道(Upper_Byte_Lane)= 对齐地址 + (数据字节数 - 1) - (起始地址 / 数据总线字节数) × 数据总线字节数

这些方程式确定突发中第一次传输之后所有传输使用哪些字节通道:

  • 较低字节通道(Lower_Byte_Lane)= 传输N的地址 - (传输N的地址 / 数据总线字节数) 的向下取整 × 数据总线字节数
  • 较高字节通道(Upper_Byte_Lane)= 较低字节通道 + 数据字节数 - 1

数据传输在以下位宽上:

  • DATA((8 × 较高字节通道) + 7 : (8 × 较低字节通道))

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值