一、AXI协议概述

1、AXI接口

AXI是一个接口规范,定义IP的接口,而不是互联本身。

只有两种AXI接口类型,主机(Manager)和从机(Subordinate),接口类型对称,所有的AXI连接都在主机接口和从机接口之间。

AXI互联接口包含相同的信号,使得不同IP集成相对简单。上图直接连接主机和从机,没有额外的逻辑,提供了最大的带宽。

AXI是点对点结构,而不是总线结构。 如果需要多个主机和从机,则需要axi_interconnect,也是axi接口。

2、AXI通道

写操作需要下列通道:

  • 主机在写地址通道(AW)发送地址,在写数据通道(W)发送数据给从机。
  • 从机将接收到的数据写到对应的地址,当从机完成写操作,会回复消息给主机在写响应通道(B)。B代表buffer,因为从机的响应是在写操作完成之后。

读操作需要下列通道:

  • 主机在读地址通道(AR)发送想要读取的地址。
  • 从机在读数据通道(R)发送相应地址中的数据给主机。

每个通道都是单向的

3、AXI的主要特征

AXI协议有几个关键特性,旨在提高数据传输及事务的带宽和延迟。

  • 独立的读写通道:axi支持两组不同的通道,一组用于读,一组用于写。拥有两组独立的通道会提高接口的带宽性能。因为读写可以同时发生。
  • 多个outstanding地址(未完成地址):axi允许多个未完成的地址,主机可以发起事务,无需等待前面的事务完成。可以提高系统性能,支持事务的并行处理。
  • 地址和数据操作间没有严格的时序关系:主机可以在写地址通道上发送一个写地址,但是何时写入相应的数据在写数据通道上并没有规定。
  • 支持非对齐的数据传输:地址不用和自然边界地址(natual address boundary)对齐。
  • 乱序的事务完成:axi协议包括事务完成符,对于不同ID值的事务,并没有对完成进行限制。
  • 基于起始地址的突发事务:AXI主机只需发起第一个传输的起始地址,后面的传输,从机会基于突发的地址计算后面的传输地址。

二、通道的传输和事务

1、通道握手机制

所有的通道都是使用基于valid和ready的握手机制。valid从源端到目的端,ready从目的端到源端。

源端和目的端并不是主机和从机。

2、传输(transfer)和事务(transactions)

2.1 传输

传输指单次的信息交换,伴有一次的握手。

当valid和ready在时钟上升沿同时有效时,数据在通道上传输。读写握手必须遵守以下原则:

  • 源端口不需要在valid置位前等待ready置位
  • 目的端口需要在ready置位前等待valid置位

2.2 事务

事务指一次完整的突发传输,包括地址传输,多次或单次数据传输,如果是写,还包括响应传输。

读写事务有一个区别:读事务对于每一次传输都有相应。在写事务中,从机需要在B通道上发送单独的相应。

2.3 未完成的事务(outstanding)

未完成事务也叫活动事务(active)

未完成的读事务:读地址已经传输,但是最后一个读数据还未传输完成。数据必须在地址之后。

未完成的写事务:地址或者首位数据已经传输,但是写相应还未传输完成。数据可以在地址之前,也可以在地址之后。

三、各通道信号

3.1 写地址通道信号

AW channel signal AXI version
AWVALID AXI3 and AXI4
AWREADY AXI3 and AXI4
AWADDR[31:0] AXI3 and AXI4
AWSIZE[2:0] AXI3 and AXI4
AWBURST[1:0] AXI3 and AXI4
AWCACHE[3:0] AXI3 and AXI4
AWPROT[2:0] AXI3 and AXI4
AWID[X:0] AXI3 and AXI4

AWLEN[3:0]

AWLEN[7:0]

AXI3 only

AXI4 only

AWLOCK[1:0]

AWLOCK

AXI3 only

AXI4 only

AWQOS[3:0] AXI4 only
AWREGION[3:0] AXI4 only
AWUSER[X:0] AXI4 only

3.2 写数据通道信号

W channel signal AXI version
WVALID AXI3 and AXI4
WREADY AXI3 and AXI4
WLAST AXI3 and AXI4
WDATA[X:0] AXI3 and AXI4
WSTRB[X:0] AXI3 and AXI4
WID[X:0] AXI3 only
WUSER[X:0] AXI4 only

3.3 写响应通道信号

B channel signal AXI version
BWVALID AXI3 and AXI4
BREADY AXI3 and AXI4
BRESP[1:0] AXI3 and AXI4
BID[X:0] AXI3 and AXI4
BUSER[X:0] AXI4 only

AXI3和AXI4写通道的不同:

  • 对于写地址通道,AXI4中的AWLEN信号更宽。因此,AXI4能够比AXI3支持更长的burst传输
  • AXI4将AWLOCK信号减小到1位,不支持锁定传输,支持独占传输。
  • AXI4将AWQOS添加到AW通道,这个信号支持AXI协议中质量服务的概念。
  • AXI4将AWREGION添加到AW通道,这个信号支持下属区域,从机一个物理接口上的多个逻辑接口。
  • AXI4将WID从W通道移除,写数据重新排序不允许。
  • AXI4向每个通道添加用户定义的信号。

3.4 读地址通道信号

AR channel signal AXI version
ARVALID AXI3 and AXI4
AREADY AXI3 and AXI4
ARADDR[31:0] AXI3 and AXI4
ARSIZE[2:0] AXI3 and AXI4
ARBURST[1:0] AXI3 and AXI4
ARCACHE[3:0] AXI3 and AXI4
ARPROT[2:0] AXI3 and AXI4
ARID[X:0] AXI3 and AXI4

ARLEN[3:0]

ARLEN[7:0]

AXI3 only

AXI4 only

ARLOCK[1:0]

ARLOCK

AXI3 only

AXI4 only

ARQOS[3:0] AXI4 only
ARREGION[3:0] AXI4 only
ARUSER[X:0] AXI4 only

3.5 读数据通道信号

R channel signal AXI version
RVALID AXI3 and AXI4
RREADY AXI3 and AXI4
RLAST AXI3 and AXI4
RDATA[X:0] AXI3 and AXI4
RRESP[1:0] AXI3 and AXI4
RID[X:0] AXI3 and AXI4
RUSER[X:0] AXI4 only

AXI3和AXI4读通道的不同:

  • 对于AXI4协议,读地址长度信号ARLEN更宽。因此,AXI4比AXI3支持更多的burst传输
  • AXI4将AWLOCK信号减小到1位,不支持锁定传输,支持独占传输。
  • 与写通道一样,服务质量和下属区域都适用。
  • AXI4将用户定义的信号添加到两个读取通道。

3.6 特别信号说明

3.6.1 数据大小,长度,突发类型

  • AxLEN描述事务中传输的长度,对于AXI3,位宽为4,支持1-16传输。AXI4,位宽为8,支持1-256传输。
  • AxSIZE[2:0]描述数据传输每一次的最大字节数,位宽为3,分别表示1,2,4,8,16,32,64,128每次传输字节数。
  • AxBURST[1:0]描述事务的突发类型,FIXED,INCR,WRAP。

3.6.2 支持保护等级

访问权限信号AWPROT和ARPROT,可以防止非法访问系统中的下游事务。

这个对于Arm TrustZone的保护解决方案是有效的,其中的处理器有安全和非安全两种状态。

  • AxPROT[0]将访问标识为特权还是无特权(1特权,0无特权)
  • AxPROT[1]将访问标识为安全还是不完全(1不安全,0安全)
  • AxPROT[2]表示该事务是指令访问还是数据访问(1指令访问,0数据访问)

3.6.3 支持缓存

为了支持不同缓存策略的系统,AWCACHE和ARCACHE信号指示如何要求事务在系统中进行。

  • AxCACHE[0]是可缓冲位,当该位置1时,互联或任意组件可以延迟事务到达最终目的端的时间。可缓冲位标识响应是否可以来自中间端,或者必须来自终点从机。
  • AxCACHE[1]是AXI3中的可缓存位,或者是AXI4中的可修改位。这个位表示终点的事务不必与源点的事务属性匹配。对于写操作,设置可修改位意味着多次不同的写操作可以合并,或者单次写操作可以分解成多个事务。对于读操作,设置可修改位意味这可以预取位置的内容,或者单次读取的值可以用于多个读取事务。
  • AxCACHE[2]为RA位。RA位表示在读操作时,建议进行事务分配,但不强制。如果AxCACHE[2]或AxCACHE[3]置位,那么事务必须从cache中查找,因为它被其他主机分配到了cache中。
  • AxCACHE[3]为WA位。WA为表示在写操作时,建议进行事务分配,但不强制。如果AxCACHE[2]或AxCACHE[3]置位,那么事务必须从cache中查找,因为它被其他主机分配到了cache中。
  • 如果AxCACHE[1]没有置位,则AxCACHE[2]和AxCACHE[3]不能被置位。

3.6.4 响应信号

AXI对于读写事务都提供了响应信号。对于读事务,从机的响应信号是读数据通道上的RRESP。

对于写事务,响应信号是写响应通道的BRESP。

RRESP和BRESP都是两个bit的信号,可以表示四种响应:

00-OKAY

正常访问成功或者独占访问失败

OKAY是用于大多数事务的响应。OKAY表示正常访问已经成功。

这个响应还可以表示独占访问失败。独占访问是指多个主机可以访问一个从机,但是这些主机不能访问相同的内存范围。

01-EXOKAY

独占访问成功

EXOKAY表示独占访问的读或写部分已经成功。

10-SLVERR

从机错误

当访问已经成功到达从机,但从机想要返回错误条件给主机时,便用SLVERR。

表示事务的失败。例如,当试图进行不受支持的传输大小或写入操作试图访问只读位置。

11-DECERR

解码错误

DECERR通常由互联组件生成,以表明在事务地址上没有从属关系。

3.6.5 写数据选通(strobes)

写数据选通信号是主机用于高速从机哪个字节的数据是有效的。写数据选通信号对于稀疏数据移动中的缓存访问非常有用。除了使用写数据选通外,还可以使用非对齐的起始地址优化数据传输。

写数据通道上WSTRB每一位表示数据的每个字节,为1时表示数据有效。例如:64位的写数据总线,WSTRB有8位。

假如我们希望有效数据为高6个字节,对应为字节7-2,主机则需要控制WSTRB为0xFC。相似的,字节2,3,4,5为0x3C。       字节7,2为0x81。          字节7,6,5,3 为0xE8。

选通信号提供了稀疏数据阵列的高效移动。使用这种方法,写事务可以通过设置传输字节选通为0提前终止。尽管其余的传输仍要完成,WSTRB可以在事务的传输之间改变。

读数据通道没有选通信号,因为主机明确传输需要而且可以屏蔽从机传输过来的不需要的字节。

3.6.6 使用锁定信号的原子访问

AxLOCK信号用于指示何时执行原子访问。

AXI协议提供了两种机制支持原子操作

  • 锁定访问A锁定传输锁定通道,直到解锁传输产生时解锁。锁定访问与AHB协议支持的机制相似。当主机使用AxLOCK表示事务是锁定事务时,那么互联必须确保只有该主机可以目标从机区域,直到主机完成了一个解锁的事务。互联中的仲裁器必须执行此项限制,因为锁定访问要求互联防止锁定期间其他事务的发生,会对互联的性能会有重要影响。锁定事务应该只用于遗留设备。只有AXI3支持锁定访问,AXI4不支持锁定访问。
  • 独占访问比锁定事务更有效,并且他们允许多个主机同时访问一个从机。独占访问机制支持实现信号量类型的操作,而不需要总线在操作期间保持对特定主机的锁定。因为锁定访问不像独占访问那样有效,并且大多数组件不需要锁定事务,已经从AXI4中移除了。

AXI3中,AxLOCK信号又2bits组成:

00 Normal
01 Exclusive
10 Locked
11 Reserved

AXI4,AxLOCK由1bit组成:

0 Normal
1 Exclusive

3.6.7 服务质量

AXI4协议引入了额外的信号来支持服务质量(QoS)。

服务质量允许优先处理事务,允许改进系统性能,通过将更重要的事务以更高的优先级处理。

有两个服务质量信号AWQOS,ARQOS分别在写和读地址通道对每次读写事务设置。

两个信号都是4bits位宽,0x0表示最低优先级,0xF表示最高优先级

在实际中,像CPU,GPU,VPU等组件,CPU对于内存的访问要远高于其他组件。当事务被分配了适当的QoS值时,互联可以仲裁更高优先级事务,DMC将事务重新排序确保给予正确的优先级。

3.6.8 区域信号

区域信号是AXI4中的一个可选特性。

当使用区域标识符时,意味着从机上单个物理接口可以提供多个逻辑接口。每个逻辑接口位置不同。且从机不需要在不同的逻辑接口间进行地址解码。

区域信号使用4位的区域标识符。AWREGION和ARREGION,最多可以标识16个不同的区域。

3.6.9 用户信号

AXI4接口信号可以选择一组用户定义信号。

用户信号可以用于各个通道传输额外的主从机之间的自定义控制信息,如果使用这些信号,不同通道的位宽也可以不同。

因为AXI协议没有定义这些信号的功能,如果两个组件在使用中使用相同的用户信号,则可能会出现互操作性问题,这是不相容的。

3.6.10 AXI通道依赖性

三个主要的依赖性:

  • BVALID被置位之前必须完成WLAST的传输;

    • 主机在响应之前必须发送所有的数据,这个依赖性在AXI3中没有,但在AXI4引入了;
    • 在AXI3中,写响应发送之前地址不需要看到;
    • 在AXI4中,所有的地址和数据必须在响应之前全部传输;
  • ARADDR传输完成后才能对RVALID进行置位
    • 从机若没有第一时间看到地址,则不能传输读数据。这是因为从机不知道主机想要读的数据是来自哪个地址的。
  • WVALID可以在AWVALID之前置位
    • 主机可以在传输写地址之前,传输写数据。

四、原子访问

原子访问是对于一个内存区域的一系列访问的术语。当主机想要对一个特定的内存区域进行一系列的访问时,便会使用原子访问,同时确保该该区域中的原始数据不会被其他主机的写操作破坏。

原子访问有两种类型:

  • 锁定:当一个主机正在无锁定的执行一个事务,其他主机对同一个从机的访问都会被拒绝。
  • 独占:当一个主机以独占访问的方式成功的执行了一系列的事务,其他主机可以访问从机,但是不能访问其内存区域。

4.1 锁定访问

锁定访问只用于遗留设备legacy devices。AXI4不支持锁定事务,但是AXI3支持。

在主机启动锁定的事务序列之前,必须确保没有其他事务等待完成。

设置了AxLOCK信号的事务表示一个锁定的事务,一个事务的锁定序列,强制互联拒绝其他主机对该从机的访问。

一个锁定序列的完成必须在最后一个事务中没有对AxLOCK的设置。最后一个事务仍然在锁定序列中,但是移除了锁定,允许其他主机访问该从机。

因为锁定访问需要互联在访问时去阻止其他事务的发生,对于互联的性能有着重要的影响。

当M0对于一个事务使用锁定信号,表明这是一次锁定事务,之后互联使用一个仲裁器确保只有M0可以访问目标从机。互联会阻塞所有的来自M1的访问直到M0完成一个解锁的事务。

对事务序列锁定访问的步骤如下:

  1. 主机M0启动READ,MODIFY,WRITE序列。第一个事务READ,对LOCK信号置位,表面启动了一个锁定的事务。
  2. 互联将其他事务排除在外。从此时起,主机M1无法对从机进行访问。
  3. 序列中最后一个事务,WRITE,不用对LOCK信号置位。这个事务表明锁定序列的结束。互联移除锁定,并且其他主机可以访问从机。

4.2 独占访问

在AXI4中,独占访问比锁定访问更加高效。因为独占访问更加高效的使用了互联带宽。

在一个独占访问序列中,其他主机可以同时访问从机,但是只有一个主机被授予内存范围的访问权。

独占访问的这个机制可以提供信号量类型semaphore-type的操作而不需要在操作过程中总线保持专用特定主机。这意味着总线接入延迟和最大可实现带宽不受影响。

独占访问可以由不止一个数据传输组成,但所有的事务必须有相同的地址通道属性。

从机需要一个硬件独占访问监视器记录独占事务的序列信息,以便知道正在访问的内存范围和正在访问的主机。

如果直到独占访问完成,没有其他主机访问监视范围。则访问是原子的。

从机可以向其他主机敞开访问权限,从而整体上提高系统的带宽利用率。

4.2.1 独占访问硬件监视器的操作

独占访问的基本机制是由独占访问监视器控制的。

独占访问监视器的响应是以下之一:

  • EXOKAY:值被读到了,且事务的ID被存储在了独占访问监视器中。
  • OKAY:值被读到了,但是不支持独占访问,并且主机应该将此响应作为独占操作的错误。

在稍后的一段时间,如果独占读期间收到了EXOKAY。M0会去完成独占序列通过对同一个地址进行独占写操作。独占写使用和独占读相同的事务ID。

独占访问监视器的响应是以下之一:

  • EXOKAY:自独占读访问,没有其他主机向该位置写,所以读操作成功,在这种情况下,更新内存;
  • OKAY:其他主机,例如M1,自独占读访问开始,向该位置写过,所以写操作失败。这种情况下,内存不更新。

一些从机需要额外的逻辑支持独占访问。独占访问监控只监控每个事务ID的一个地址。需要实现去监控所有可以看到的可能的独占ID。

4.2.2 独占事务对:两者都通过

从机接口包括独占传输监视器,可以保存每次事务的ID和访问地址。

下表描述了举例序列不同的事务,所有表中事务都是独占传输:

事务序列按照表中的顺序进行,步骤如下:

  1. 第一个事务是,主机执行ID0,地址0xA000的独占读事务。独占访问硬件监视器保存了ID和事务的地址,并且从机响应了读的数据,0x1。因为独占访问正确支持此从机,独占访问硬件监视器以EXOKAY响应。
  2. 接下来,主机执行一个新的独占读事务,ID为1,地址是0xB000,同样,独占访问硬件监视器保存新事务的详细信息,且从机响应了读数据0x2。因为独占访问正确支持此从机,独占访问硬件监视器同样以EXOKAY响应。此时例子中的两个独立的独占序列进行。
  3. 在主机完成操作后,执行了一个ID0,地址0xA000的独占写事务。独占访问硬件监视器检查此次事务的详细信息。因为存在ID0,地址0xA000的记录,以EXOKAY回应主机。这意味着没有其他主机访问该内存位置,从机更新接收到的新值0x3。独占访问硬件监视器删除ID和事务的地址。因为对于该独占访问序列地址现在已经完成。
  4. 最后,主机执行一个新的ID1,地址0xB000独占写事务。独占访问硬件监视器检查事务的详细信息。存在一个ID1,地址0xB000的记录。同样以EXOKAY响应主机。这意味着没有其他主机访问内存位置,且从机更新新值0x4。独占访问硬件监视器删除ID和事务的地址。因为对于该独占访问序列地址现在已经完成。

4.2.3 独占事务对:一个成功,一个失败

从机接口包括独占传输监视器,可以保存每次事务的ID和访问地址。

下表描述了举例序列不同的事务,所有表中事务都是独占传输:

事务序列按照表中的顺序进行,步骤如下:

  1. 第一个事务是执行ID为0,地址是0xA000的独占读事务。独占访问硬件监视器保存ID和事务的地址,并且从机响应了读的数据,0x1。因为独占访问正确支持此从机,独占访问硬件监视器以EXOKAY响应。
  2. 接下来,主机执行一个新的独占读事务,ID为1,地址是0xA000,同样,独占访问硬件监视器保存新事务的详细信息,且从机响应了读数据0x1。因为独占访问正确支持此从机,独占访问硬件监视器同样以EXOKAY响应。此时例子中的进行着两个不同的独占序列在相同的内存位置。
  3. 在主机完成操作后,执行了一个ID0,地址0xA000的独占写事务。独占访问硬件监视器检查此次事务的详细信息。因为存在ID0,地址0xA000的记录,以EXOKAY回应主机。这意味着没有其他主机访问该内存位置,从机更新接收到的新值0x3。因为地址0xA000的内容已经被修改,独占访问硬件监视器删除与地址相匹配的所有条目。
  4. 最后,主机执行一个新的ID1,地址0xA000独占写事务。独占访问硬件监视器检查事务的详细信息。没有找到关于地址0xA000的任何记录,以OKAY回应主机。OKAY意味着之前已经对该内存位置进行过写操作,更新了数据。在这种情况下,从机不能在0xA000更新0x4。这种情况是独占访问失败。在这种情况下,主机必须重新启动独占访问序列,即先独占读,再独占写。

这个例子演示了独占访问如何实现非阻塞行为。正是这种行为相比于锁定访问提供了更大的系统吞吐量。

五、传输行为与事务排序

5.1 简单事务举例

简单事务举例解释了不同AXI通道间的关系。下图显示了AXI3或AXI4接口中五个通道几个有效事务的时间表示。

例子中的不同事务如下:

  1. 事务A,包含4个传输的写事务。主机首先把地址A放到AW通道,然后快速将四个数据传输放到W通道,以AL结尾,L代表最后一个。一旦4个数据传输完成,从机在B通道上回应。
  2. 当事务A发生时,主机还使用读通道执行读事务操作C,包含两个传输。因为这是一个读事务,当传输完成时,没有从机相应通道的响应,而是数据和响应都在R通道中。
  3. 一旦事务C完成,主机使用AR通道发送一个新的读地址D给从机。在这种情况下,从机的响应不是立刻的,可以通过D和D0之间的空时隙表示。这种延迟是会发生的,从机没有义务立即回答。例如从机可能正忙于另一个操作,或者可能需要时间来检索数据。最后,从机响应四个连续传输。在R通道上的D0到DL。
  4. 最后,当读事务D正在进行时,主机使用AW通道发起一个写事务,发送新的地址B给从机。同时主机将数据B0发送至W通道。例子中B0和BL之间是有延迟的,且BL和响应B之间也有延迟。只有当从机发送响应给主机时,事务结束。所有这些示例都是有效的事务。

下图显示了相同的有效读写事务中的不同点

在此例中,主机在完成事务A之前就开始了事务B。

主机在完成事务A在W通道上的数据传输之前,便通过AW通道传输新的地址B开始了新的事务。

当所有事务A的数据传输完成时,事务B的传输给到了从机。在主机传输事务B的数据之前,它不需要等待事务A在B通道上的响应。

同时,主机使用AR通道传输给从机地址C和D。从机按顺序对两个读请求回应。

这个例子显示了读和写事务在不同通道上不同的有效组合。这显示了AXI协议的灵活性和优化互联性能的可能性。

5.2 传输ID

AXI协议为每个通道定义了一个ID信号总线。将每个事务用ID标记,使乱序完成事务有了可能。这意味着快速内存区域的事务不需要等待前面慢速内存区域的事务完成。传输ID的使用可以实现高性能互联,最大化的数据吞吐量和系统效率。也可以改进系统性能,因为减少了事务延迟的影响。

ID信号包括如下:

  • AWID
  • WID
  • BID
  • ARID
  • RID

通过允许每个接口充当多序接口,AXI支持乱序事务。根据AXI协议规范,所有有ID的事务必须有序,然而,对于不同的ID的事务排序没有限制。

当使用传输ID时,遵循以下规定:

  • 所有传输都必须有一个ID
  • 一个事务中所有的传输都要有相同的ID
  • 从机通常需要一个可配置的ID宽度

同样要谨记ID信号在AXI中的两个重要参数

  • 写ID宽度,即AWID,WID,BID总线的比特数
  • 读ID宽度,即ARID,RID总线的比特数

5.2.1 写事务中的顺序规定

写事务在AXI顺序中有三条规定

  • 在W通道上的写数据必须与在AW通道上的传输地址顺序一致。

在图中,主机先发地址A再发地址B,所以数据必须A0在B0前。

  • 不同ID的事务可以任意顺序完成

在图中,事务B在事务A之前完成,即使事务A先开始。

  • 一个主机可以有多个具有相同ID的未完成事务,但他们必须顺序执行且顺序完成。

在图中,事务B和其他事务有不同的ID,所以它可以任意时刻完成。然而,事务A和C有相同的ID,所以他们必须顺序完成,先A后C。

5.2.2 读事务中的顺序规定

读事务在AXI顺序中有三条规定

  • R通道上的不同ID的读数据没有顺序限制。这意味着从机可以任何顺序发送。

  • R通道上不同ID的读数据可以交叉,使用RID值区分数据和哪个事务相关。

  • 对于具有相同ID的事务,必须按照要求的顺序返回R通道的读数据

5.2.3 读写通道的顺序

读写通道之间没有相互关联的排序规则。这意味着他们可以任意顺序完成。所以如果主机要求对特定的读写序列排序,主机必须在发起新的事务之前,通过明显的等待事务完成确保事务顺序一致。

序列操作顺序如下:

  1. 主机开始首次写事务。
  2. 主机确保从机已经完成写事务,通过等待写响应通道的信号。
  3. 主机开始读事务。
  4. 主机等待读数据通道的最后一个响应。
  5. 主机开始第二次事务。

5.3 非对齐传输的起始地址

AXI协议支持非对齐的首地址事务,它只会影响事务的第一次传输,第一次传输之后,其他的传输都是对齐的。

非对齐传输是AxADDR值没有与事务的宽度对齐,比如,32位的数据包,起始地址为0x1002,与自然的32位地址边界没有对齐,因为0x1002不能被0x20整除。

下面的例子显示了5次32位宽的传输,非对齐起始地址为0x01。

如果事务按照起始地址0x00对齐,结果应该是五次4字节的burst,实现最大数据传输20字节。然而,起始地址0x01非对齐,这减少了传输的总数据量,但是这不意味着最后的传输为了弥补数据量是非对齐的。这个例子中,首次传输起始地址是0x01,包括三个字节。所有后面的突发传输都是与总线宽度对齐的,且由四个字节组成。

下面的例子显示了5次16位的事务,起始地址为0x03。

如果事务与起始地址0x00对齐,结果将是5次2字节burst,实现最大数据传输10字节。在本例中,首次传输是从非对齐地址0x03开始,包括1字节,所有之后的burst传输都与总线地址对齐,由2字节组成。

5.4 字节顺序的支持

AXI协议通过使用大端(BE-8)模式支持相同内存空间的混合端结构。相比于小端模式,BE-8使用相同的字节通道模式,但是字节顺序颠倒了。

使用BE-32的混合端结构比BE-8更复杂,因为字节通道与小端模式不同。

下图显示了相同的四字节数据大端和小段表示:

对于四字节的小端模式,最高有效字节使用最高通道位3。在BE-8模式,最高有效字节在最低通道位0。

下图显示了相同的两字节数据大端和小段表示:

对于两个字节的半字,小端模式下,高位在通道1,低位在通道0。大端BE-8模式,高位在通道0,低位在通道0。

最后,下图显示了单个字节的大小端模式,没有区别:

字节都在通道0。

在可配置的端序列组件(Arm内核)中,支持BE-8,字节的重新排序应该在内部执行,这样互联上就什么都不用做。另一方面,连接到AXI互联中的定制设备,是BE-8,已经是正确的字节顺序。使用BE-8可以减轻对动态端序列转换的支持。

5.5 读写接口属性

本节重点介绍配置AXI读写通道的重要属性

写接口属性包括:

  • 写发出能力:表示当前主机接口可以产生的最大活动写事务的数量。
  • 写交错能力(仅AXI3):主机接口中活动的写事务中发送数据的数量。
  • 写接受能力(仅AXI3):表示从机接口可以接受最大活动写事务的数量。
  • 写翻转深度属性:表示从机接口可以接受来自活动写事务的数量。

读接口属性包括:

  • 读发出能力属性:表示主机接口能产生最大的活动读事务的数量。
  • 读接受能力:从机接口能接受的最大活动读事务的数量。
  • 读数据重排序深度:从机接口可以从读事务中传送数据,对更早的事务计数的数量。

参考

an_introduction_to_amba_axi

AMBA-AXI协议相关推荐

  1. AMBA AXI 协议

    1.1 AXI 协议简介 AMBA AXI 协议以高性能,高频系统设计为目标,提供了很多适合高速亚微型系统 互连的特征. 最新的 AMBA 接口的目标是: 适合高带宽.低延迟的设计 不使用复杂桥的情况 ...

  2. 数字IC设计--------AMBA AXI协议(英文原版)

    AXI:AMBA Advanced eXtensible Interface (AXI) Protocol Specification 目录 chapter 1 Introduction about ...

  3. AMBA协议之AXI协议——中文翻译

    AMBA协议之AXI协议--中文翻译 本规范的编写是为了帮助那些想要熟悉高级微控制器总线架构(AMBA)和设计与AXI协议兼容的系统和模块的硬件和软件工程师. 文章目录 AMBA协议之AXI协议--中 ...

  4. AXI协议详解(1)-协议简介

    协议简介 0 绪论 AXI--Advanced Xtensible Interface(高级可扩展接口)是为了满足高性能系统设计而定义的一套独立通道协议,在AMBA3.0中提出,AMBA4.0将其修改 ...

  5. AMBA总线协议 之 APB总线协议

    AMBA总线协议概念: AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有 ...

  6. AMBA总线协议(一)——一文看懂APB总线协议

    0.AMBA总线概括 AMBA AHB 总线协议介绍请点击以下链接: AMBA总线协议(二)一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别 AMBA总线协议(三)--一文看懂 ...

  7. AXI协议学习笔记~~

    AXI总线简介 ​  AXI属于AMBA(The ARM Advanced Microcontroller Bus Architecture)家族的一员,AXI协议在AMBA3.0版本中开始出现,并在 ...

  8. AMBA APB5协议中文版

    本文是对AMBA APB5协议的中文翻译. AMBA APB5协议技术规范 目录 AMBA APB协议规范 前言 关于规范 APB版本 反馈 第一章序言 1.1关于PAB协议 第二章信号描述 2.1 ...

  9. AXI协议与自定义AXI4-Lite外设

    引言   之前在Xilinx的FPGA上做设计,只是知道AXI接口,但是没有详细地了解过这个协议,现在需要用AXI总线做整个系统的设计了,所以还是有必要详细了解一下这个协议. 参考资料 IHI0022 ...

  10. 【AXI】解读AXI协议事务属性(Transaction Attributes)

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

最新文章

  1. CenterFusion: 基于Radar和Camera融合的3D检测算法
  2. 【组合数学】基本计数原则 ( 加法原则 | 乘法原则 )
  3. PHP安装编译错误及解决办法
  4. Popupwindowdemo
  5. netty冲突 play sbt_netty4 实现一个断点上传大文件功能
  6. SAP Spartacus的用户登录页面设计
  7. JavaFX中的塔防(3)
  8. BaseColumns类的作用
  9. 腾讯视频云支持超300万场次直播带货 助力企业一天搭建直播间
  10. android 对话框的父view是谁,android – 在对话框中获取相对于其父级的视图位置
  11. (86)Verilog HDL:三分频设计
  12. 基于Java的外卖订餐平台
  13. Java Integer 对象的比较
  14. 信号与系统实验二 信号运算的MATLAB 实验
  15. allegro 尺寸标注操作未到板边的处理
  16. python调用谷歌翻译_python调用谷歌翻译
  17. 固态硬盘安装linux系统教程视频,固态硬盘 能安装linux系统吗
  18. (基础篇1-15)项目架构简介及环境搭建
  19. 游戏阴阳师启动闪退问题解决
  20. OpManager 实时网络监控

热门文章

  1. nyoj LYQの字符串(尺取法)
  2. Arch Linux 安装
  3. pandownload下载完成却找不到所下载的文件 解决方法
  4. Linux部署FAQ
  5. 山东大学数字图像处理实验(五)
  6. Style Transfer(PyTorch)
  7. 华为发布量子计算模拟器HiQ云服务平台
  8. ajax访问如何重定向,ajax请求重定向
  9. 新版标准日本语中级_第七课
  10. 简单分析实现运维利器---web远程ssh终端录像回放libl