AXI接口学习
amba总线的发展
axi协议是两个接口之间的点对点的协议,主要是有5个通道。
主机在写地址(AW)通道上发送地址,并在写数据(W)通道上将数据传输到从机。
从机将接收到的数据写入指定地址空间。从机完成写操作,它将在写响应(B)通道上向主机发送信号。
主机在读地址(AR)通道上发送它想要读取的地址。
从机通过读取数据(R)通道将数据从请求的地址发送到主机。
从机还可以在读数据(R)通道上返回错误消息。例如,如果地址无效,或数据损坏,或访问没有正确的安全权限,则会发生错误。
每个通道都是单向的,因此需要一个单独的写响应通道将响应传递回主机。然而,不需要读响应通道,因为读响应作为读数据通道的一部分被传递。
使用单独的地址和数据通道进行读写传输有助于最大限度地提高接口带宽。在读取和写入通道的群组之间不存在时序关系。这意味着读取序列可以与写入序列同时发生。这五个通道中的每一个都包含若干信号,并且每个通道中的所有这些信号具有如下前缀:
axi协议的主要特点
1.独立的读写通道
2.多个数据项
3.地址和数据之间没有严格的时序关系
4.支持非对齐数据传输
5.无序事务完成
6.基于起始店址的突发事务。
传输是一次信息交换,包括一次VALID和READY握手。下图显示了一个传输:
一个事务是一个完整的突发传输,包含一个地址传输、一个或多个数据传输,以及一个响应传输(对于写序列)。下图显示了一个事务:
读写握手必须遵守以下规则:
在断言VALID之前,源不能等待READY被断言。发送放不能等待READY信号发送方必须无条件先(或同时)表明数据有效性(VALID),而接收方可以自由决定何时准备好(READY)。这种设计确保了协议的确定性和无死锁,同时支持高性能的并行数据传输。理解这一点对正确实现AXI接口至关重要。
目的地可以在断言READY之前等待VALID被断言。axi协议赋予接收方对READY信号的完全控制权:
这些规则意味着READY可以在VALID之前或之后断言,甚至可以同时断言。
主机将地址置于AWADDR上,并在时钟周期2中置位AWVALID。2.从机在时钟周期3中置位AWREADY,以指示其接收地址值的能力。3.握手在时钟周期4的上升沿完成。
数据传输具有以下事件序列:1.从机在时钟周期n内等待WREADY设为高电平的数据。2.主机将数据放在WDATA总线上,并在时钟周期n+2中置位WVALID。3.握手在时钟周期n+3的上升沿完成。
写入响应具有以下事件序列:1.主程序断言BREADY。2.从设备驱动BRESP以指示写事务的成功或失败,并断言BVALID。握手在时钟周期n+3的上升沿完成。、
多个数据项
在这种情况下,AW通道表示三次传输的序列,在W通道上,我们看到三次数据传输。主机将WLAST驱动为高电平,以指示最终的WDATA。这意味着从设备可以对数据传输进行计数,也可以只监视WLAST。一旦接收到所有WDATA传输,从机在B通道上给出单个BRESP值。单个BRESP覆盖整个突发。如果从设备确定任何传输包含错误,则它必须等到整个突发完成后才能通知主设备发生错误。
读取单个项
握手具有以下事件序列:1.在时钟周期2中,主机在ARADDR上向从机传送读取地址,并置位ARVALID。2.在时钟周期3中,从机置位ARREADY,以指示它已准备好接收地址值。握手在时钟周期4的上升沿完成。接下来,在Read(R)通道上,从机将数据传输到主机。下图显示了数据传输过程:
数据传输握手具有以下事件序列:1.在时钟周期n中,主机通过置位RREADY来指示其正在等待接收数据。2.从机在时钟周期n+2内检索数据并将其置于RDATA上。在这种情况下,因为这是单个数据事务,所以从机还将RLAST信号设置为高。与此同时,从机使用RRESP向主机指示读取事务的成功或失败,并置位RVALID。3.由于主机已置位RREADY,因此握手在时钟周期n+3的上升沿完成。
读取多个数据项
在本例中,我们在AR通道上传输单个地址,以传输多个数据项,以及相关的突发宽度和长度信息。这里,AR通道表示三次传输的序列,因此在R通道上,我们看到从机到主机的三次数据传输。在R通道上,从机将数据传输到主机。在本例中,主机正在等待数据,如RREADY设置为高电平所示。从机驱动有效的RDATA并为每次传输置位RVALID。读事务和写事务之间的一个区别是,对于读事务,对于事务中的每个传输都有RRESP响应。这是因为,在写事务中,从机必须在B通道上将响应作为单独的传输发送。在读事务中,从机使用相同的通道将数据发送回主机,并指示读操作的状态。如果在传输过程中个存在错误,必须将完成该完整的指示长度,不存在提前结束突发的情况。
写通道信号
每个通道中的所有信号都具有相同的前缀:
AW表示写地址通道
W表示写数据通道
B表示写响应通道
对于写通道,AXI3协议和AXI4协议之间存在一些差异:
对于写地址通道,AXI4协议中AWLEN信号更宽。因此,AXI4能够产生比AXI3突发更长的。
AXI4将AWLOCK信号减少到单个位,以仅适应独占传输,因为不支持锁定传输。
AXI4将AWQOS信号添加到AW通道。该信号支持AXI4协议中的服务质量(QoS)概念。
AXI4将AWREGION信号添加到AW通道。该信号支持从区域,从区域允许来自单个物理从接口的多个逻辑接口。
AXI4从W通道中移除WID信号。这是因为不再允许写入数据重新排序。
AXI4将WUSER用户定义的信号添加到每个通道。
读通道信号
每个通道中的所有信号都有相同的前缀:
AR表示读地址通道
R表示读数据通道对于读通道
AXI3协议和AXI4协议之间存在一些差异:
对于AXI4协议,读地址长度信号ARLEN更宽。因此,AXI4能够生成比AXI3更长的读取突发。
AXI4将ARRECT信号减少到单个位,以仅适应独占传输,因为不支持锁定传输。
与写通道信号一样,服务质量和从区域的概念适用于读事务。它们在AR通道中使用ARQOS和ARREGION信号。
AXI4将用户定义的信号添加到两个读取通道。
数据大小、长度以及突发类型
AxLEN描述的是单次突发的数据长度(数据有效的时钟周期)。
对于axi3而言,AxLEN只有4位[3:0],因此只能突发1-16的数据长度。
对于axi4而言,AxLEN有8位[7:0],因此能突发1-256的数据长度。
AxSIZE[2:0],描述的是单个周期传输的数据最大字节宽度:1/2/4/8/16/32/64/128
AxBURST[1:0],描述的是突发类型,主要有三种类型:fixed 、incrementing、wrapping
0x00 FIXED 重复读某个相同的地址数据。例如fifo。
0x01 INCR 从机从前一次传输的地址中增加突发中每次传输的地址。增量值取决于传输的大小, 由AxSIZE属性定义。对块传输有用。
0x10 WRAP 与INCR突发类似,如果达到较高的地址限度,那么回到低地址。(类似循环)
保护级别支持
axi提供了AWPROT/ARPROT信号,它可以防止系统下游的非法的事务。例如,如果没有一个正确的保护级别,内存控制器可以用过这些信号拒绝读写。
AxpROT定义了三个级别保护:
AxPROT[0]表示该事务是特权还是非特权。1:特权 0:非特权
AxPROT[1]表示该事务是安全还是非安全。1:非安全事务 0:安全事务
AxPROT[0]表示该事务是指令访问还是数据访问。1:指令访问 0:数据访问
缓存支持
为了支持使用不同caching策略的系统,AxCACHE(AWCACHE OR ARCACHE)信号如何在系统中运行。
AxCACHE[0] (B)
响应信号
axi提供了读写的响应信号。
对于读事务,这个响应信号来自从机读数据通道的RRESP。
对于写事务,这个应答信号是使用写应答信道中的BRESP。
RRESP与BRESP都是由2 bit组成,对这两个新型号编码可以传递四种响应。
00 -OKAY:
01-EXOKAY:
10-SLVERR:
11-DECERR:
写数据频闪
写数据有效信号是主机用来告诉从机数据总线哪个字节的数据是需要的。写数据有效信号对于缓存访问是非常有用,可以有效地移动稀疏数据。
写通道在数据总线上每字节有一个频闪位,这些bit 构成WSTRB信号。主机必须确保频闪支队包含有效数据的字节通道设置为1。1:该字节数据有效 0;该字节数据无效。
带锁信号的原子访问
AxLOCK信号用于指示何时执行原子访问。
锁定访问是AXI3协议中用于实现原子操作的机制,通过强制互连(Interconnect)阻塞其他主设备(Master)的访问,确保当前主设备对从设备(Slave)的独占控制(axi4不支持锁定访问)。
独占访问:AXI4保留独占访问作为原子操作的核心机制,通过地址级监控而非设备级锁定,显著提升系统并发性。独占性访问是比锁定访问更有效,允许多个主机在同一时间访问从机。
独占访问机制允许实现信号量类型的操作,而不要求总线在操作期间一直锁定在一个特定的主节点上。因为锁定访问的效率不如独占访问,而且大多数组件都没有需要锁定事务,所以它们已经从AXI4协议中删除了。
axi3中,AxLOCK由 2bit组成
0b00- Normal
0b01- Exclusive
0b10- Locked
0b11- Reserved
axi4中,AxLOCK有 1bit组成
0b0- Normal
0b1- Exclusive
服务质量
axi4中引入了额外支持服务质量的信号。
服务质量允许对事务进行优先级排序,从而通过确保更重要的事务得到更高的优先级来提高系统性能。
服务质量信号有两种:
AWQOS在每次写事务的Write Address通道上发送。
ARQOS在每次读事务的读地址通道上发送。
两个信号都是4位宽,其中0x0表示最低优先级,0xF表示最高优先级。
默认的系统级服务质量实现是,任何具有多个事务选择的组件首先处理QoS值较高的事务。
下图展示了一个带有直接内存控制器(Direct Memory Controller, DMC)的示例系统,具体来说是DMC-400。这个控制器管理到DRAM的事务:
区域信号
区域信号是axi4中新的功能。区域信令是AX14的一个新的可选特性。当使用区域标识符时,意味着从机上的单个物理接口可以提供多个逻辑接口。每个逻辑接口在系统地址映射中可以有不同的位置。当使用区域标识符时,从机不必支持不同逻辑接口之间的地址解码。区域信令使用两个4位的区域标识,AWREGION和ARREGION。这些区域标识符最多可以唯一标识16个不同的区域。
用户接口
用户信号AXI4接口信号集可以选择包含一组用户自定义信号,称为User信号。用户信号可以在每个通道上使用,在主从组件之间传递额外的自定义控制信息。这些信号是可选的,不必在所有通道上都支持。如果使用它们,则User信号的宽度由实现定义,并且可以在每个通道上不同。
由于AXI协议没有定义这些User信号的功能,如果两个组件以不兼容的方式使用相同的User信号,就会出现互操作性问题。
axi通道依赖
AXI通道依赖AXI协议定义了不同通道之间的依赖关系。
三个主要的依赖关系如下:
WLAST传输必须在BVALID被断言之前完成。主服务器必须在写响应被主服务器看到之前发送所有的写数据。此依赖项在AXI3中不存在,但在AXI4中引入:
在AXI3中,在发送写响应之前不必看到地址。在AXI4中,所有的数据和地址都必须在主服务器看到写响应之前传输完毕。
在ARADDR被传输之前,RVALID不能被断言。
如果从服务器没有首先看到地址,它就不能传输任何读数据。这是因为如果从服务器不知道读取数据的地址,它就不能将数据发送回主机。WALID可以在AWVALID之前断言。主站可以使用写数据通道向从机发送数据,然后再通信从机应该写这些数据的地址。
原子访问
原子访问是对内存区域的一系列访问的术语。当主机想要对一个特定的内存区域执行一系列访问时,它们会使用原子访问,同时要确保该区域中的原始数据不会被其他主机的写操作破坏。这个序列通常是读、修改和写序列。
原子访问有两种类型:
锁:当一个主机执行一个带有锁定访问的事务序列时,任何其他主机对同一从机的访问都会被拒绝。
独占:当一个主机成功执行一个具有独占访问的事务序列时,其他主机可以访问从机,但不能访问正在被访问的内存区域。
锁定访问
在主机启动一个锁定事务序列之前。它必须确保没有其他事务等待完成。
带有AxLOCK信号集的事务表示一个被锁定的事务。被锁定的事务序列强制互连拒绝任何其他主机对从机的访问。
锁定序列必须始终以没有设置AxLOcK信号的最终事务完成。这个最终事务仍然包含在锁定序列中,但有效地移除锁以允许其他主站访问从站。由于锁定访问要求互连防止在锁定序列进行时发生任何其他事务,因此它们对互连性能有重要影响。
下图以两个主节点MO和M1为例展示了AXI锁定访问操作:
独占访问
在AXI 4中,独占访问比锁定访问更有效地执行原子操作。这是因为独占访问更有效地利用互连带宽。
在独占访问序列中,其他主机可以同时访问从机,但只有一个主机会被授予对同一内存范围的访问权限。
用于独占访问的机制可以提供信号量类型的操作,而不要求总线在操作期间保持专用于特定的主服务器。这意味着总线访问延迟和最大可实现带宽不受影响。排他性访问可以由多个数据传输组成,但所有的事务必须具有相同的地址通道属性。从机需要一个硬件独占访问监视器来记录独占序列的事务信息,以便它知道正在被访问的内存范围和执行访问的主机的身份。
如果在独占序列完成之前没有其他主站访问被监视的范围,则该访问是原子性的。
从服务器对来自其他主服务器的访问是开放的,这使得系统在带宽利用方面的公平性总体上得到了提高。
传输行为和事务顺序
本节将分析一些读写事务的示例序列,以帮助您理解不同AXI通道之间的关系。本节还解释了一些管理事务的规则,以及传输id如何支持乱序事务。
我们还会看到:
未对齐传输,以及它们如何帮助优化带宽利用率
大端和小端编码的区别,举几个简单的例子
与AXI接口相关的主要参数。这些参数在实现互连时很有用