AXI---事务属性(1)

1. 事务类型和属性

从设备被分类为以下两种之一:

内存从设备

  • 内存从设备需要正确处理所有事务类型。

外设从设备

  • 外围从设备具有自定义的访问方法。通常,这在该设备的datasheet中定义,该datasheet描述了从设备正确处理的事务类型。
  • 任何不属于自定义访问方法的对外围从设备的访问必须按照协议完成。然而,一旦进行了这样的访问,外围从设备就不需要继续正确操作。只要求它继续以符合协议的方式完成进一步的事务。

注意

为了防止系统死锁,需要符合所有事务类型的完成,但是不要求外围从设备继续正确操作。 由于外围从设备只需要对定义的访问方法正确工作,因此它的接口信号集可以大大减少。

AXI 协议定义了一组事务属性,支持内存和外围从设备。ARCACHE 和 AWCACHE 信号指定事务属性,它们控制:

  • 事务如何前进通过系统
  • 任何系统级高速缓存如何处理该事务

在本规范中,术语 AxCACHE 统一指代 ARCACHE 和 AWCACHE 信号。

2. AXI3 内存属性信号

在 AXI3 中,AxCACHE[3:0] 信号指定了事务的可缓冲(Bufferable)、可缓存(Cacheable)和分配(Allocate)属性。

下表显示了 AxCACHE[3:0] 的编码和事务属性的对应关系。

AxCACHE事务属性
[0]0非可缓冲
[0]1可缓冲
[1]0非可缓存
[1]1可缓存
[2]0无读分配
[2]1读分配
[3]0无写分配
[3]1写分配

2.1 AxCACHE[0],Bufferable (B) bit  (可缓冲(B)位

当此位被断言时,互连或任何组件可以延迟事务到达其最终目的地的时间,延迟周期数可以是任意的。

注意    通常,可缓冲属性仅与写操作相关。

2.2 AxCACHE[1],Cacheable (C) bit 可缓存(C)位

当此位被取消断言时,禁止分配事务。

当此位被断言时:

  • 允许分配事务。RA 和 WA 提供额外的提示信息。
  • 事务在最终目的地的特性不需要与原始事务的特性匹配。
  • 对于写操作,这意味着可以将多个不同的写操作合并在一起。
  • 对于读操作,这意味着可以预取一个位置的内容,或者从单次获取的值可以用于多个读事务。

2.3 AxCACHE[2],读分配(RA)位

当此位被断言时,建议但不是强制进行读分配事务。 如果 C 位被取消断言,则不能断言 RA 位。

2.4 AxCACHE[3],写分配(WA)位

当此位被断言时,建议但不是强制进行写分配事务。 如果 C 位被取消断言,则不能断言 WA 位。

3. AXI4对内存属性信号的更改

AXI4 相较于AXI3,  内存属性信号做出了以下更改:

  • AxCACHE[1] 位被重命名为可修改(Modifiable)位。
  • 为不可修改(Non-modifiable)事务定义了排序要求。
  • 更新了读分配(Read-allocate)和写分配(Write-allocate)的含义。

3.1 AxCACHE[1],可修改(Modifiable)

在 AXI4 中,AxCACHE[1] 位是可修改(Modifiable)位。当设置为高电平时,可修改表示事务的特性可以被修改。当可修改设置为低电平时,事务是不可修改的。

注意   AxCACHE[1] 位从可缓存(Cacheable)位重命名为可修改(Modifiable)位,以更好地描述所需的功能。实际功能没有改变。 以下各节描述了不可修改和可修改事务的属性。

3.1.1 不可修改事务

通过将 AxCACHE[1] 设置为低电平,指示一个不可修改事务。

不可修改事务不得分割成多个事务也不得与其他事务合并

在不可修改事务中,下表中显示的参数不得更改。

参数信号
传输地址AxADDR(因此 AxREGION)
突发大小AxSIZE
突发长度AxLEN
突发类型AxBURST
锁类型AxLOCK
保护类型AxPROT

只有AxCACHE 属性能被修改以将事务从可缓冲(Bufferable)转换为不可缓冲(Non-bufferable)。不允许对 AxCACHE 进行其他更改。

事务 ID 和 Qos 值可以被修改。

具有大于 16 的突发长度的不可修改事务可以被分割为多个事务。产生的每个事务必须满足本小节给出的要求,除了:

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

一个被标记为独占访问的不可修改事务(由断言的 AxLOCK 指示),如果访问的总字节数保持不变,允许修改事务大小 AxSIZE 和事务长度 AxLEN。

3.1.2 可修改事务

通过断言 AxCACHE[1] 来指示一个可修改事务。 可修改事务可以通过以下方式进行修改:

  • 一个事务可以被分割成多个事务。
  • 多个事务可以合并成一个事务。
  • 读事务可以获取比要求更多的数据。
  • 写事务可以访问比要求更大的地址范围,使用 WSTRB 信号确保只有适当的位置被更新。
  • 在每个生成的事务中,以下信号可以被修改
  1.  传输地址,AxADDR
  2.  突发大小,AxSIZE
  3.  突发长度,AxLEN
  4. 突发类型,AxBURST
  • 以下信号不得更改:
  1. 锁类型,AxLOCK。
  2. 保护类型,AxPROT。

内存属性 AxCACHE 可以被修改,但任何修改都必须确保其他组件对事务的可见性不被降低,即不通过阻止事务传播到所需点,或通过改变需要在缓存中查找事务的需求。对内存属性的任何修改必须对同一地址范围的所有事务保持一致。

事务 ID 和 QoS 值可以被修改。

不允许进行以下事务修改:

  • 导致访问与原始事务不同的 4KB 地址空间。
  • 导致对单一副本原子性大小的区域的单次访问被执行为多次访问。

3.2 不可修改事务的排序要求

AXI4 要求对于满足以下所有条件的任何事务集合,必须保持它们的排序:

  • 这些事务是不可修改的。
  • 这些事务使用相同的 AXI ID。
  • 这些事务针对同一从设备。

必须保持排序,无论事务的地址如何,只要这些事务是针对同一从设备。

这个排序要求不保证发往不同从设备的事务之间的相对排序。 由于不同物理从设备之间的地址映射边界是实现定义的,如果不知道从设备之间的边界,那么就必须保持同一路径上具有相同 AXI ID 的所有不可修改事务的排序。

这个排序要求适用于所有不可修改事务之间,包括不可缓冲和可缓冲事务之间。

当 AXI 路径中的中间组件发出事务响应时,该组件负责确保正确的排序。

3.3 读分配(Read-allocate)和写分配(Write-allocate)含义的更新

在 AXI4 中,读分配和写分配位的含义已经更新,以便一个位表示事务是否发生了分配,另一个位表示是否由于另一个事务本可以进行分配。

对于读事务,写分配(Write-allocate)位被重新定义为表示:

  • 由于写事务,该位置之前可能已经在缓存中分配(根据 AXI3 的定义)。
  • 由于另一个主设备的动作,该位置之前可能已经在缓存中分配(AXI4 新增定义)。

对于写事务,读分配(Read-allocate)位被重新定义为表示:

  • 由于读事务,该位置之前可能已经在缓存中分配(根据 AXI3 的定义)。
  • 由于另一个主设备的动作,该位置之前可能已经在缓存中分配(AXI4 新增定义)。

这些变化意味着:

  • 如果 AxCACHE[3:2] 的值不是 0b00,则必须在缓存中查找事务。
  • 如果 AxCACHE[3:2] 的值是 0b00,则不需要在缓存中查找事务。

注意 AxCACHE 定义的更改意味着,对于同一位置的读事务和写事务,这些信号可能会有所不同

表 A4-3 显示了 AXI4 中 AWCACHE 信号的位分配

信号AXI4 定义描述
AWCACHE[3]分配(Allocate)当此位被断言时,事务必须在缓存中查找,因为它可能已经被先前分配。如果 AWCACHE[2] 也被断言,则事务也必须在缓存中查找。当取消断言时,如果 AWCACHE[2] 也被取消断言,则事务不需要在缓存中查找,事务必须传播到最终目的地。当断言时,出于性能原因,建议此事务在缓存中分配。
AWCACHE[2]其他分配(Other Allocate)当此位被断言时,事务必须在缓存中查找,因为它可能已经被另一个事务先前分配在缓存中,无论是读事务还是来自另一个主设备的事务。如果 AWCACHE[3] 也被断言,则事务也必须在缓存中查找。当取消断言时,如果 AWCACHE[3] 也被取消断言,则事务不需要在缓存中查找,事务必须传播到最终目的地。
AWCACHE[1]可修改(Modifiable)当断言时,可以修改事务的特性,并且可以合并写入。当取消断言时,必须不修改事务的特性。
AWCACHE[0]可缓冲(Bufferable)当取消断言时,如果 AWCACHE[3:2] 都取消断言,则写响应必须来自最终目的地。当断言时,如果 AWCACHE[3:2] 都取消断言,则写响应可以从中间点给出,但写事务必须及时在最终目的地可见。当取消断言时,如果 AWCACHE[3:2] 中的任何一个被断言,则写响应可以从中间点给出,但写事务必须及时在最终目的地可见。当断言时,如果 AWCACHE[3:2] 中的任何一个被断言,则写响应可以从中间点给出。写事务不需要在最终目的地可见。

表格 A4-4 ARCACHE 位分配

信号AXI4 位定义描述
ARCACHE[3]其他分配

当断言(即设置为1)时,必须在缓存中查找该事务,因为它可能已经被其他事务分配到缓存中,无论是写事务还是来自另一个主设备的事务。如果ARCACHE[2]也被断言,也必须在缓存中查找该事务。

当取消断言(即设置为0)时,如果ARCACHE[2]也被取消断言,则该事务不需要在缓存中查找。

ARCACHE[2]分配

当断言时,必须在缓存中查找该事务,因为它可能已经被分配。如果ARCACHE[3]也被断言,也必须在缓存中查找该事务。

当取消断言时,如果ARCACHE[3]也被取消断言,则该事务不需要在缓存中查找。

当断言时,出于性能原因,建议将该事务分配到缓存中。

ARCACHE[1]可修改当断言时,可以修改事务的特性,并且可以获取比所需更多的读取数据。当取消断言时,不得修改事务的特性。
ARCACHE[0]可缓冲

当ARCACHE[3:1]被取消断言时,该位没有效果。

当ARCACHE[3:2]被取消断言且ARCACHE[1]被断言时:

  • 如果该位被取消断言,读取数据必须从最终目的地获取。
  • 如果该位被断言,读取数据可以从最终目的地或正在进行到最终目的地的写操作中获取。
  • 当ARCACHE[3]被断言,或ARCACHE[2]被断言时,该位可以用来区分写入直通(Write-through)和回写(Write-back)内存类型。

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: axi-stream和axi-lite是两种不同的传输协议,它们在数据传输的方式和控制信号上有所不同。在将axi-stream转换为axi-lite时,需要进行一些改变和调整。 首先,axi-stream是一种流式传输协议,它主要用于高速数据传输,没有固定的地址和控制信号。而axi-lite是一种基于地址和控制信号的传输协议,适用于低速数据传输和对外部设备的读写控制。 要将axi-stream转换为axi-lite,需要定义一个寄存器(或寄存器组),用于接收从axi-stream传输过来的数据。通过定义该寄存器的地址和控制信号,可以对其进行读写操作,并将数据传输到外部设备。 其次,需要根据具体的应用场景,对数据的格式和处理进行调整。axi-stream一般通过数据流的方式传输,而axi-lite传输的数据需要按照特定的格式进行打包和解包。因此,在进行转换时,需要对数据进行格式转换和处理,以满足axi-lite的传输要求。 最后,需要修改相应的控制逻辑和状态机来适应axi-lite的读写操作。axi-stream主要通过数据流传输,而axi-lite需要定义读写控制信号和状态机来实现读写操作。因此,在进行转换时,需要对控制逻辑和状态机进行修改,以实现axi-lite的读写功能。 总结起来,将axi-stream转换为axi-lite需要进行以下几个步骤:定义一个寄存器用于接收数据、调整数据的格式和处理、修改控制逻辑和状态机来适应axi-lite的读写操作。通过这些步骤,我们可以完成axi-stream到axi-lite的转换。 ### 回答2: 要将Axi-Stream转换为Axi-Lite,需要进行一系列的处理和转换。 首先,需要了解Axi-Stream和Axi-Lite之间的区别。Axi-Stream是一种高速数据传输协议,用于在数据流传输应用中实现高速数据传输。相比之下,Axi-Lite则是一种更简化、精简的协议,适用于低速、延迟敏感的访问要求。 要将Axi-Stream转换为Axi-Lite,需要将数据流转变为离散的数据包。可以通过添加一些额外的逻辑和寄存器来实现数据的提取和转换。 首先,需要添加一个接收缓冲区,用于接收Axi-Stream传输的数据。可以使用一个FIFO(First-In, First-Out)缓冲区来实现。将Axi-Stream输入端口连接到该缓冲区,并配置缓冲区的大小以适应数据传输的需求。 然后,可以使用状态机和控制逻辑从接收缓冲区中提取数据。根据Axi-Lite协议的要求,需要提取合适的数据字段,并将其放入适当的寄存器中。可以使用状态机来控制数据的提取和转换过程。 最后,在提取和转换数据后,可以使用Axi-Lite的地址端口和数据端口,将数据传输到Axi-Lite总线上。根据Axi-Lite协议的要求,需要设置地址、数据和控制信号,以完成对寄存器的读写操作。 总体而言,将Axi-Stream转换为Axi-Lite需要添加接收缓冲区、状态机和控制逻辑,并通过Axi-Lite协议完成数据的提取和转换。这样可以实现从高速数据传输到低速数据访问的转换。 ### 回答3: Axi-stream和Axi-lite是两种不同的通信协议,将Axi-stream转换为Axi-lite可以通过添加适当的逻辑和转换器来实现。下面是一种将Axi-stream转换为Axi-lite的方法: 1. 首先,需要添加一个转换器模块,该模块将负责将Axi-stream信号转换为Axi-lite信号。该转换器模块可以使用FIFO(First-In-First-Out)缓冲区来处理数据流,并将其转换为连续的数据列。 2. 转换器模块接收来自Axi-stream的有效数据包,并根据Axi-lite协议的要求生成对应的Axi-lite数据包。转换过程包括将Axi-stream的数据包拆分为Axi-lite的数据包,并提取有效数据和其他控制信息。 3. 转换器模块还需要处理Axi-stream信号的流速。由于Axi-stream的数据是连续流动的,而Axi-lite的数据包需要在时钟边沿进行传输,因此需要添加适当的时序逻辑来处理数据流速的差异。 4. 转换器模块还应该能够处理Axi-lite协议中的写入和读取操作。写入操作将由Axi-stream转换成Axi-lite写入操作,读取操作将由Axi-stream转换成Axi-lite读取操作。 5. 最后,通过适当的连接操作将转换器模块与Axi-lite总线连接起来,以实现从Axi-stream到Axi-lite的转换。 总结来说,将Axi-stream转换为Axi-lite需要添加一个转换器模块,该模块负责处理Axi-stream数据流的数据包和流速,并将其转换为符合Axi-lite协议的信号。这样可以实现从Axi-stream到Axi-lite的数据通信转换。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值