AMBA AXI协议总结

AXI 表示 Advanced eXtensible Interface(高级可扩展接口),它是由 Arm 定义的接口协议,包含在“高级微控制器总线架构 AMBA”标准中。
该总结针对的是AXI3的SPEC进行的。因为翻译可能并不能准确表达AXI的正确含义,在无法表达正确含义的情况下,会用英文表示。

Feature

  1. 具有独立的地址/控制通道和数据通道
  2. 基于突发式传输机制(burst)处理(transaction)
  3. 写数据(write data channel)和读数据通道(read data channel)分离
  4. 提供一个低功耗的直接存储器访问(direct memory acess)
  5. 支持非对齐数据传输(unaligned data transfer)
  6. 支持outstanding(support for issuing multiple outstanding addresses)
  7. 支持out-of-order(support for out-of-order transaction )
  8. 可以反向兼容 AHB 和 APB 接口

AXI与AHB的区别

AXI总线通常用作在对传输带宽要求较高的设备中,如DDR内存的数据传输;AHB,APB总线通常用在中速或者低速的数据传输,对带宽要求低的设备中。

AHB总线在同一时刻只能读或者写,效率低;对AXI总线而言,由于读写通道独立,故读写操作可以保证同时进行,效率高。

AHB总线要求地址要和数据对齐,例如传输16位数据时,地址通常为0或者2的倍数;传输32位数据时,地址通常为0或者4的倍数。而AXI通过采用字节选通的方式,地址可以为任意初值,支持非对齐的数据传输。

AHB总线执行burst传输时,每次都要指定地址信息;对于AXI总线而言来说只要给出基地址和burst的长度,即可支持burst传输。

AHB每次的读写操作要等待前一次完成,才能继续执行后面的操作;而AXI总线由于地址控制通道和数据通道独立,所以地址和控制通道不用等待上次操作的数据通道传输是否完成,就可以发送下一次的操作,这种outstanding并发操作提高了数据传输的效率。AXI总线支持多个outstanding并发操作。

对于AXI总线而言,因为master可以不等待的先后发送多个请求,必然存在有些请求提前被响应的情况,故要支持out of order乱序操作,即后发送的请求可以先于前面的请求被响应。这时要保证请求和被响应的ID是一致的。

AXI transaction

AXI 架构

由若干master设备和slave设备通过一些形式的interconnect组成的典型的系统如下图所示,AXI总线即可作为其中的Interface,实现数据通信。
Interconnect
1.共享地址和数据总线
2.共享地址总线和多条数据总线
3.多层,具有多个地址和数据总线。
Interface(AXI)
1.五个不同的通道(channels)
2.使用双向VALID和READY握手机制
在这里插入图片描述

AXI通道

AXI总线的master和slave的端口分为5个双向流量控制的通道,如图所示。所谓双向流量控制是指发送端用valid表示数据是有效的,接收端用ready表示可以接受数据;只有在vaild和ready同时为1时,数据才成功被传送。vaild/ready机制可以使发送接收双方都有能力控制传输速率。
可以把5个通道分为2类:write transfer和read transfer

write transfer

在这里插入图片描述
write transfer 流程:
1、主机通过写地址通道发送写请求;
2、主机通过写入数据通道发送写入的数据;
3、slave完成写操作后(最后写数据通道),通过写响应通道发回确认信息。

read transfer

在这里插入图片描述
read transfer 流程:
1、主机通过读地址通道发送读请求;
2、从机通过读数据通道将读到的数据传送给主机。

AXI总线信号

1.全局信号

信号描述
ACLKClock source全局时钟信号
ARESETnReset source全局复位信号,低电平有效

2.写地址通道信号

信号描述
AWID[3:0]主机写地址ID,这个信号是写地址信号组的ID tag,指定某些特殊传输任务的顺序
AWADDR[31:0]主机写地址。
AWLEN[3:0]主机突发式写的长度。此长度决定突发式写所传输的数据的个数。
AWSIZE[2:0]主机突发式写的大小。
AWBURST[1:0]主机突发式写的类型。
AWLOCK[1:0]主机锁类型。
AWCACHE[3:0]主机Cache类型。这信号指明事务的bufferable、cacheable、write-through、write-back、allocate attributes信息。
AWPROT[2:0]主机保护类型。
AWVALID主机写地址有效。1 = 地址和控制信息有效。0 = 地址和控制信息无效 ,这个信号会一直保持,直到AWREADY变为高。
AWREADY设备写地址准备好。这个信号用来指明设备已经准备好接受地址和控制信息了。1 = 设备准备好,0 = 设备没准备好

3.写数据通道信号

信号描述
WID[3:0]主机写ID tag,WID的值必须与AWID的值匹配
WDATA[31:0]主机写的数据。
WSTRB[3:0]主机写阀门。WSTRB[n]标示的区间为WDATA[(8n)+7:(8n)]
WLAST主机写的最后一个数据。
WVALID主机写有效,1 = 写数据和阀门有效,0 = 写数据和阀门无效
WREADY设备写就绪。指明设备已经准备好接受数据了,1 = 设备就绪吗,0 = 设备未就绪

4.写响应通道信号

信号描述
BID[3:0]设备响应ID , 这个数值必须与AWID的数值匹配。
BRESP[1:0]设备写响应。这个信号指明写事务的状态。可能有的响应:OKAY、EXOKAY、SLVERR、DECERR。
BVALID设备写响应有效。1 = 写响应有效。0 = 写响应无效
BREADY主机接受响应就绪。该信号表示主机已经能够接受响应信息。1 = 主机就绪。0 = 主机未就绪

5.读地址通道信号

信号描述
ARID[3:0]主机读地址ID。
ARADDR[31:0]主机读地址。
ARLEN[3:0]主机突发式读长度。
ARSIZE[2:0]主机突发式读大小。
ARBURST[1:0]主机突发式读类型。
ARLOCK[1:0]主机锁类型。
ARCACHE[3:0]主机Cache类型。
ARPROT[2:0]主机保护类型。
ARVALID主机读地址有效。信号一直保持,直到ARREADY为高。1 = 地址和控制信息有效。0 = 地址和控制信息无效
ARREADY设备读地址就绪。指明设备已经准备好接受数据了。1 = 设备就绪.0 = 设备未就绪

6.读数据通道信号

信号描述
RID[3:0]设备读ID tag。RID的数值必须与ARID的数值匹配。
RDATA[31:0]设备读数据。
RRESP[1:0]设备读响应。这个信号指明读传输的状态:OKAY、EXOKAY、SLVERR。DECERR。
RLAST设备读事务传送的最后一个数据
RVALID设备读数据有效。1 = 读数据有效。0 = 读数据无效。
RREADY主机读数据就绪。1 = 主机就绪。0 = 主机未就绪

通道握手

source(请求方)生成 VALID 信号以指示数据或控制信息何时可用。
destination(接受方)生成 READY 信号以指示它接受数据或控制信息。
仅当 VALID 和 READY 信号均为高电平时才会发生传输
在这里插入图片描述

握手依赖关系

在下面的依赖关系图中:单箭头信号表示其指向的信号可以在箭头起始信号置起之前或之后置起;双箭头信号表示其指向的信号必须在箭头起始信号置起之后置起。

一个 AXI 组件的 VALID 信号不得依赖于事务中另一个组件的 READY 信号

READY 信号可以等待 VALID 信号的断言。

(1)读传输事务依赖关系
下图表示,RVALID必须等到ARVALID和ARREADY握手后才可以置位。
在这里插入图片描述

(2)写传输事务依赖关系
slave必须等待master的WLAST信号置位,才能将BVALID置位。
在这里插入图片描述
通道之间的关系

  1. 地址、读、写和写响应通道之间的关系是灵活的。
  2. 必须维护的两个关系是:
    读取数据必须始终遵循与数据相关的地址
    写响应必须始终跟在与写响应相关的写事务中的最后一次写传输之后。

突发传输机制

突发传输的流程:

  1. 主机在读/写地址通道写入起始地址(AxADDR)以及突发传输的长度(AxLEN)、宽度(AxSIZE)、类型(AxBURST)等信息;
  2. 从机将在起始地址开始,依次接收主机传输的写数据,或者读取连续地址上的数据,作为读数据传输给主机。

注意:
地址数值的1代表1个字节,如32bit数据线,AxSIZE没有限制,则每次burst地址增加4

Burst length

  1. AWLEN 或 ARLEN 信号指定每个突发内发生的数据传输次数。
  2. 对于wrapping bursts,突发的长度必须是 2、4、8 或 16 次传输。
  3. 每笔transaction必须有 ARLEN 或 AWLEN 指定的transfers 次数。
  4. 任何组件都不能提前终止突发以减少数据transfers的数量。
  5. 突发不得跨越 4KB 边界,以防止它们跨越从机之间的边界并限制从机内所需的地址的大小。

Burst size

  1. ARSIZE 或 AWSIZE 信号指定突发内每拍或数据传输中要传输的最大数据字节数。(窄传输)
  2. AXI 根据传输地址确定数据总线的哪些字节通道(byte lanes )用于每次传输。
  3. 对于传输大小比数据总线窄的incrementing bursts或wrapping bursts,对于突发的每拍,数据传输都在不同的字节通道上。 fixed burst 的地址保持不变,每次传输都使用相同的字节通道。
  4. 任何传输的大小不得超过transaction中组件的数据总线宽度

Burst type

在这里插入图片描述

  1. 主机通过驱动传输控制信息和传输中第一个byte的地址来开始每个突发。
  2. 从机计算突发中后续传输的地址。
    突发传输有以下几种类型:
  • FIXED,所有数据都使用起始地址。该模式适合对某个固定地址进行多次数据更新,比如读写一个 fifo 时,读写地址就是固定的。
  • INCR,后续数据的地址在初始地址的基础上进行递增,递增幅度与传输宽度相同。适合对于RAM 等通过地址映射(mapped memory)的存储介质进行读写操作。
  • WRAP,首先根据起始地址得到绕回边界地址与最高地址。当前地址小于最高地址时,WRAP 与 INCR 类型完全相同,地址递增。但到递增后的地址到达最高地址后,地址直接回到绕回边界地址,再进行递增,就这样循环往复。最高地址由绕回边界地址计算得到。这种传输类型适用于对缓存行(cache line)的操作。

Basic transactions

Read burst

在这里插入图片描述

Overlapping read burst

在这里插入图片描述

Write burst

在这里插入图片描述

Outstanding、Out-of-Order、Interleaving

Outstanding:master 不必等待命令执行结束就可以发送下一命令。
在这里插入图片描述

Out-of-Order:对于相同ID的指令,必须要顺序完成;对于不同ID的指令,可以乱序完成。
在这里插入图片描述

Interleaving:乱序传输时不同ID之间的数据可以内插,但是要保证每个ID的数据顺序。
在这里插入图片描述

Rule of order

对于master:
来自不同master的交易没有排序限制。 他们可以按任何顺序完成。
在这里插入图片描述
来自同一个master的事务,但具有不同的 ID 值,没有排序限制。 他们可以按任何顺序完成。
在这里插入图片描述
对于transaction:
具有相同 AWID 的写入事务必须按照主机发出地址的相同顺序完成。
在这里插入图片描述
对于slave:
必须返回具有相同 ARID 值的读取事务,以便:
— 同一个从机必须确保读取的数据以与接收地址相同的顺序返回。
在这里插入图片描述
— 不同的从机必须确保读取的数据以与主机发出地址的顺序相同的顺序返回。
在这里插入图片描述

具有相同 AWID 和 ARID 的读写事务之间没有排序限制。

Read ordering

对于master interface:
具有相同 ARID 的读取事务必须按照主机发出地址的相同顺序到达。
在这里插入图片描述

具有不同 ARID 的读取事务可以以任何顺序返回,并且它会交错读取事务的数据。
在这里插入图片描述

对于slave interface:
以接收地址的相同顺序读取具有相同 ARID 的事务。
在这里插入图片描述
具有不同 ARID 的读取事务以不同的顺序返回读取数据。
在这里插入图片描述
对于interconnect:
从不同的从机读取具有相同 ARID 值的事务按顺序完成。
读取数据重新排序深度是从机中可以重新排序的待处理地址的数量。
在这里插入图片描述

Normal write ordering

1.对于一个不支持写数据interleaving的slave:

  • 主机必须按照它发布事务地址的相同顺序发布写事务的数据。
  • 从机必须按照它们接收地址的顺序接收写数据。
  • interconnect 将来自不同主机的写事务组合到一个从机,它必须确保它按地址顺序组合写数据。

2.即使写入事务具有不同的 AWID 值,这些限制也适用

在这里插入图片描述

Write data interleaving

写数据interleaving:

  • slave interface接受具有不同 AWID 值的交错写入数据。

从机接收每个事务的第一个数据项的顺序必须与它接收事务地址的顺序相同
在这里插入图片描述
写入数据interleaving深度:

  • 可以为其提供写数据的从接口中currently pending 的不同地址的数量。

例如,具有写入数据interleaving深度为 2 且具有四个不同地址且都具有不同 AWID 值的从机可以接受前两个pending 地址中的任何一个的数据。
在这里插入图片描述
能够生成仅具有一个 AWID 值的写入数据的master interface会按照其发出地址的相同顺序生成所有写入数据。 但是,如果slave interface的写入数据interleaving深度大于 1,则master interface可以用不同的 WID 值交错写入数据。

Read and write interaction

读写事务之间没有顺序限制,它们可以按任何顺序完成。
在这里插入图片描述
如果master需要读写事务之间的给定关系,那么它必须确保在发出后面的事务之前完成较早的事务。

对于write transaction:
在这里插入图片描述
对于read transaction:
在这里插入图片描述

Data Buses

数据总线分为两种:读数据总线、写数据总线
写选通信号 WSTRB 启用写数据总线上的sparse(稀疏)数据传输。
写数据总线的每 8 位有一个写选通,因此 WSTRB[n] 对应于 WDATA[(8 × n) + 7: (8 × n)]。
在这里插入图片描述

Narrow transfers

当主机生成比其数据总线更窄的传输时,地址和控制信息确定传输使用哪些字节通道。
在这里插入图片描述

Byte invariance

AXI中还有一个问题是大小端问题,之前的AMBA AHB总线总结中有讲过大端和小端。其根本不同就是高字节数据存在低地址位还是高地址位。AXI协议定义了一种字节顺序不变端序(byte-invariant endianness)方案。
1.无论大端或小端模式,每个数据结构存储空间的分配方式是相同的
2.该数据结构按照其大端或小端模式决定字节存储的地址顺序
3.在传输过程中不考虑数据结构的大小端,按照字节原先存储的顺序,原样传输并存放至对端

字节不变字节序:

  • 到给定地址的字节传输将同一数据总线上的八位数据传递到同一地址位置。

大多数 little-endian 组件可以直接连接到字节不变接口。 仅支持大端传输的组件需要字节不变操作的conversion函数。
在这里插入图片描述

Unaligned Transfers

AXI 协议支持地址非对齐的传输,允许突发传输的首字节地址,即起始地址与突发传输位宽不对齐。

  1. 传输时只需要在传输时给出首地址,后续传输地址由首地址、突发大小和突发类型决定。
  2. 在第一个数据的传输过程中,如果第一个地址没有对齐,主设备会在第一个传输中填充数据,直到第一个传输填充到地址对齐,然后用 wstrb 信号将填充的数据标记为无效。
    3 这样,后续的传输地址就对齐了。

主机可以使用低阶地址行表示未对齐的起始地址,然后提供一个对齐的地址,并使用字节通道选通信号通知未对齐的起始地址。下面是协议中给出的例子:

在这里插入图片描述

Response Signaling

在这里插入图片描述

响应规则

对于写事务,整个突发只有一个响应,而不是突发内的每个数据传输。
在这里插入图片描述
在读事务中,从机可以对突发内的不同传输给出不同的响应。
在这里插入图片描述
AXI协议定义必须执行所需数量的数据传输,即使报告了错误。
在这里插入图片描述
AXI对可以发出多个未完成地址并且还必须支持精确错误信号的主站进行了限制。 这样的主机必须能够处理较早传输的错误响应,而后续传输已经在进行中。

在这里插入图片描述

响应类型条件

OKAY 响应表明:

  • 正常访问成功
  • 独占访问失败
  • 对不支持独占访问的从属设备的独占访问。

Exclusive OKAY 表明:

  • 独占访问的成功

Slave error 表明:

  • FIFO/缓冲区溢出或欠载情况
  • 尝试了不支持的传输大小
  • 尝试对只读位置进行写访问
  • 从站中的超时条件
  • 尝试访问不存在寄存器的地址
  • 试图访问已禁用或断电的功能。

Decode error 表明:

  • 在没有完全解码的地址映射的系统中,可能存在没有从设备响应事务的地址。 (当互连无法成功解码从属访问时,它会有效地将访问路由到默认从属,并且默认从属返回 DECERR 响应。)

Additional Control Information

Cache support

ARCACHE[3:0] 或 AWCACHE[3:0] 信号通过提供事务的可缓冲、可缓存和分配属性来支持系统级缓存。

Bufferable (B) 位:
当该位为高时,意味着互连或任何组件可以延迟事务到达其最终目的地任意数量的周期。 这通常只与写入有关。

Cacheable © 位:
当该位为 HIGH 时,表示最终目的地的交易不必与原始交易的特征相匹配。
对于写入,这意味着可以将许多不同的写入合并在一起。
对于读取,这意味着可以预取一个位置,也可以只为多个读取事务读取一次。

Read Allocate (RA) 位:
当 RA 位为 HIGH 时,这意味着如果传输是读取并且它在缓存中未命中,则应该分配它。

Write Allocate (WA) 位:
当 WA 位为 HIGH 时,这意味着如果传输是写入并且它在缓存中未命中,则应该分配它。

Cache support

在这里插入图片描述

Write through:CPU在向缓存写入数据的同时,也向内存写入一份副本(后端存储)
Write back:CPU更新缓存时,只是标记更新的缓存区,不同步更新内存(后端存储)。 只有当缓存区要被新输入的数据替换时,才更新内存(后端存储)。

CPU读Cache时:

若hit,则CPU直接从Cache中读取数据即可。

若miss,有两种处理方式:

  • Read through,即直接从内存中读取数据;

  • Read allocate,先把数据读取到Cache中,再从Cache中读数据。

2.CPU写Cache时:

若hit,有两种处理方式:

  • Write through:把数据同时写到Cache和内存中;

  • Write back:先把数据写到Cache中,再通过flush方式写入到内存中。

若miss,有两种处理方式:

  • Write allocate:先把要写的数据载入到Cache中,写Cache,然后再通过flush方式写入到内存中;

  • No write allocate:直接把要写的数据写入到内存中。

Protection unit support

Normal 或 privileged,ARPROT[0] 和 AWPROT[0]
privileged处理模式通常在系统内具有更高级别的访问权限
Secure 或 non-secure,ARPROT[1] 和 AWPROT[1]
这用于需要更大程度区分处理模式的系统中。
Instruction 或 data,ARPROT[2] 和 AWPROT[2]
该位指示事务是指令还是数据访问。

Atomic Accesses

在这里插入图片描述

Exclusive access

对不支持Exclusive access的从属设备的exclusive write始终会更新内存位置。
对支持Exclusive access的从属设备的exclusive write仅在独占写入成功时才更新内存位置
Exclusive access机制能够实现信号量类型(semaphore type)的操作,而无需总线在操作期间保持锁定到特定的主机。
Exclusive access的优点是信号量类型(semaphore type)的操作不会影响关键总线访问延迟或最大可实现带宽。
AXI 协议提供了一种故障安全机制,以指示主机何时尝试对不支持它的从机进行Exclusive access。

Exclusive access process

Exclusive access的基本过程是:

  1. 主机从地址位置执行exclusive read 。
  2. 稍后,主机尝试通过对同一地址位置执行exclusive write来完成独占操作。
  3. 主机的exclusive write access信号如下:
    如果在读写访问之间没有其他主机写入该位置,则成功。
    如果另一个主机在读写访问之间写入该位置,则失败。 在这种情况下,地址位置不会更新。
    在这里插入图片描述

Exclusive access restrictions

以下限制适用于Exclusive access:

  • 在同一个 ID 下,Exclusive write的大小和长度与之前的Exclusive read取相同。
  • Exclusive access的地址必须与事务中的总字节数对齐。
  • Exclusive read和Exclusive write的地址必须相同。
  • Exclusive access的读取部分的 ARID 字段必须与写入部分的 AWID 匹配。
  • Exclusive access的读取和写入部分的控制信号必须相同。
  • Exclusive access突发传输的字节数必须是 2 的幂,即 1、2、4、8、16、32、64 或 128 字节。
  • Exclusive 突发中可以传输的最大字节数为 128。
  • ARCACHE[3:0] 或 AWCACHE[3:0] 信号的值必须保证监控Exclusive access的从属设备看到事务。

Locked access

  • 锁定传输然后互连必须确保仅允许该主控访问从属区域,直到来自同一主控的解锁传输完成。
  • 当一个主机启动一个读或写事务的锁定序列时,它必须确保它没有其他未完成的事务等待完成。
  • 在完成锁定序列时,主控器必须确保所有先前锁定的事务在发出最终解锁事务之前都已完成。 然后,它必须确保在开始任何进一步的交易之前,最终的解锁交易已经完全完成。
  • 主机必须确保锁定序列中的所有事务都具有相同的 ARID 或 AWID 值。

Low-power Interface

针对两类不同外设的低功耗接口:

  • 需要断电序列的外设,并且只有在进入低功耗状态后才能关闭其时钟。 这些外设需要来自系统时钟控制器的指示,以确定何时启动断电序列。
  • 没有断电序列的外设,可以独立指示何时可以关闭其时钟。

low-power control signals

CSYSREQ:为了请求外设进入低功耗状态,系统时钟控制器将 CSYSREQ 信号驱动为低电平。 在正常操作期间,CSYSREQ 为高电平。
CACTIVE:外设使用此信号指示何时需要启用其时钟。
CSYSACK:外设使用 CSYSACK 信号来确认低功耗状态请求和退出低功耗状态。

接受low-power请求

在这里插入图片描述

拒绝low-power请求

在这里插入图片描述

时钟控制序列总结

在这里插入图片描述

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离离离谱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值