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位分配指定以下属性:
AxPROT[0]表示该事务是特权还是非特权。
1:特权 0:非特权
AxPROT[1]表示该事务是安全还是非安全。
1:非安全事务 0:安全事务
AxPROT[2]表示该事务是指令访问还是数据访问。
1:指令访问 0:数据访问
缓存支持
为了支持使用不同caching策略的系统,AxCACHE(AWCACHE OR ARCACHE)信号如何在系统中运行。
下图显示AxCACHE位分配:
AxCACHE位分配指定以下属性:
AxCACHE [0](B)是可缓冲位。
当此位设置为1时,互连或任何组件可以将事务延迟到达其最终目的地任意数量的周期。可缓冲位指示响应是否可以来自中间点,或者响应是否必须来自目的地从机。
AxCACHE [1]是AXI3中的可缓存位,或AXI4中的可修改位。
此位表示最终目的地的事务属性不必与原始事务的属性匹配。对于写入,设置可修改位意味着可以合并多个不同的写入,或者可以将单个写入分为多个事务。对于读取,设置可修改位意味着可以预取位置的内容,或者可以将单个读取的值用于多个读取事务。
AxCACHE [2]是RA位。
RA位指示在读取时,建议但不强制分配事务。如果断言AxCACHE [2]或AxCACHE [3],则必须在缓存中查找事务,因为它可能已被另一个主设备分配在该缓存中。
AxCACHE [3]是WA位。
WA位指示在写入时,建议但不强制分配事务。如果断言AxCACHE [2]或AxCACHE [3],则必须在缓存中查找事务,因为它可能已被另一个主设备分配在该缓存中。
如果可缓存位AxCACHE [1]未被断言,则AxCACHE [2]和AxCACHE [3]不能被断言。
响应信号
axi提供了读写的响应信号。
对于读事务,这个响应信号来自从机读数据通道的RRESP。
对于写事务,这个应答信号是使用写应答信道中的BRESP。
RRESP与BRESP都是由2 bit组成,这些信号的编码可以传递四个响应,如下表所示:
00 -OKAY:正常访问成功或独占访问失败。OKAY是用于大多数事务的响应。OKAY表示正常访问成功。此响应还可以指示独占访问失败。独占访问是指多个主机可以同时访问一个从机,但这些主机不能访问相同的内存范围。
01-EXOKAY:独家访问成功。EXOKAY表示独占访问的读或写部分已经成功。
10-SLVERR:从机错误。当访问成功到达从机,但从机希望向发起主机返回错误条件时,使用SLVERR。这表示交易不成功。例如,当尝试的传输大小不受支持,或尝试对只读位置进行写访问时。
11-DECERR:解码错误。DECERR通常由互连组件生成,以指示在事务地址处不存在从机。
写数据选通
写数据选通信号由主设备用来告知从设备需要数据总线的哪些字节。写数据选通对于用于稀疏数据阵列的高效移动的高速缓存访问是有用的。除了使用写数据选通之外,还可以使用未对齐的起始地址来优化数据传输。
写通道在数据总线上每字节有一个选通位。这些位构成WSTRB信号。主机必须确保仅对包含有效数据的字节通道将写选通设置为1。1:该字节数据有效 0;该字节数据无效。
例如,考虑64位写入数据总线。WSTRB信号有8位,每个字节一位。下图显示示例WSTRB值如何指定哪些字节通道有效:
假设有效数据仅在数据总线的前六个有效字节中,从字节7到字节2。这意味着主机必须用十六进制值0xFC控制WSTRB信号。
类似地,其余示例如下指定有效数据总线字节通道:
仅在数据总线的字节2、3、4和5中的有效数据要求WSTRB信号值为0x3C。
仅在数据总线的字节0和7中的有效数据要求WSTRB信号值为0x81。
仅在数据总线的字节3、5、6和7中的有效数据要求WSTRB信号值为0xE8。
字节通道选通提供稀疏数据阵列的有效移动。使用此方法,可以通过将剩余的传输字节通道选通设置为0来提前终止写事务,但仍必须完成剩余的传输。WSTRB信号也可以在事务中的传输之间改变。读取通道没有等效信号。这是因为主设备指示所需的传输,并且可以屏蔽从设备接收到的任何不需要的字节。
带锁信号的原子访问
AxLOCK信号用于指示何时执行原子访问。
AXI协议提供了两种支持原子性的机制:
锁定访问:锁定的传输会锁定通道,该通道将保持锁定状态,直到生成未锁定的传输。锁定访问类似于AHB协议支持的机制。当主设备使用AxLOCK信号来显示事务是锁定事务时,互连必须确保只有主设备可以访问目标从区域,直到来自同一主设备的解锁事务完成。互连内的仲裁器必须强制执行此限制。由于锁定访问要求互连防止在锁定序列进行时发生任何其他事务,因此它们可能对互连性能产生重要影响。锁定的事务应仅用于旧设备。仅AXI3支持锁定访问。AXI4不支持锁定的访问。
独占访问:独占访问比锁定事务更有效,它们允许多个主服务器同时访问一个从服务器。独占访问机制使信号量类型操作的实现成为可能,而不需要总线在操作期间保持锁定到特定的主机。
锁定访问是AXI3协议中用于实现原子操作的机制,通过强制互连(Interconnect)阻塞其他主设备(Master)的访问,确保当前主设备对从设备(Slave)的独占控制(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的事务:
在实际中,一些部分,如CPU,需要比其他组件(如GPU或VPU)更重要的内存访问。当适当的QoS值被分配给事务时,互连可以在较低优先级事务之前仲裁较高优先级事务,并且DMC重新排序事务以确保给出正确的优先级。
区域信号
区域信号是AXI4中的一个新的可选功能。当当您使用区域标识符时,这意味着从属设备上的单个物理接口可以提供多个逻辑接口。每个逻辑接口在系统地址映射中可以有不同的位置。当使用区域标识符时,从机不必支持不同逻辑接口之间的地址解码。区域信令使用两个4位区域标识符AWREGION和ARREGION。这些区域标识符可以唯一标识多达16个不同的区域。
用户接口
用户信号AXI4接口信号集可以选择包含一组用户自定义信号,称为User信号。用户信号可以在每个通道上使用,在主从组件之间传递额外的自定义控制信息。这些信号是可选的,不必在所有通道上都支持。如果使用它们,则User信号的宽度由实现定义,并且可以在每个通道上不同。
由于AXI协议没有定义这些用户信号的功能,因此如果两个组件以不兼容的方式使用相同的用户信号,则可能会出现互操作性问题。
axi通道依赖性
AXI通道依赖AXI协议定义了不同通道之间的依赖关系。
三个主要的依赖关系如下:
WLAST传输必须在BVALID被断言之前完成。主机必须发送所有写入数据,然后主机才能看到写入响应。这种依赖性在AXI3中不存在,但在AXI4中引入:在AXI3中,在发送写响应之前不必看到地址。在AXI4中,所有数据和地址必须在主机可以看到写响应之前传输。
在ARADDR被传输之前,RVALID不能被断言。从机在没有首先看到地址的情况下无法传输任何读取数据。这是因为如果从设备不知道数据将被读取的地址,则从设备无法将数据发送回主设备。
WVALID可以在AWVALID之前断言。主机可以使用写数据通道将数据发送到从机,然后再传送从机应写入这些数据的地址。
原子访问
原子访问是对存储器区域的一系列访问的术语。原子访问由主机在它们想要执行对特定存储器区域的访问序列时使用,同时确保该区域中的原始数据不会被来自其他主机的写入损坏。这个序列通常是读、修改和写序列。
原子访问有两种类型:
锁:当主设备正在执行具有锁定访问的事务序列时,拒绝任何其他主设备对同一从设备的访问。
独占:当主设备成功地执行具有独占访问的事务序列时,其他主设备可以访问从设备,但不能访问正被访问的存储器区域。
锁定访问
锁定的事务应仅用于旧设备。AXI4不支持锁定事务,但AXI3实现必须支持锁定事务。在主服务器可以启动一个锁定的事务序列之前,它必须确保没有其他事务等待完成。设置了AxLOCK信号的事务指示锁定的事务。事务的锁定序列迫使互连拒绝任何其他主设备对从设备的访问。锁定序列必须始终以未设置AxLOCK信号的最终事务完成。这个最后的事务仍然包括在锁定序列中,但是有效地移除锁定以允许其他主设备访问从设备。由于锁定访问要求互连防止在锁定序列进行时发生任何其他事务,因此它们对互连性能有重要影响。
下图显示了AXI锁定访问操作,并以两个主机M0和M1为例:
在主服务器可以启动锁定的事务序列之前,主服务器必须确保它没有其他等待完成的事务。当M0使用事务的锁定信号来指示它是锁定事务时,则互连使用仲裁器来确保只有M0可以访问目标从设备。互连阻止来自M1的任何访问,直到来自M0的解锁事务完成。
下图显示了锁定访问如何与事务序列一起工作:
本示例中的步骤如下:
1.主机M0启动一个读取、修改和写入序列。第一个事务READ具有断言的RESET信号,指示它开始锁定事务。
2.互连锁定任何其他事务。从这一点开始,主设备M1不能访问从设备。
3.序列中的最后一个事务WRITE不具有断言的LOCK信号。此事务指示锁定序列的结束。互连移除锁定,并且其他主设备现在可以访问从设备。
独占访问
使用AXI 4,独占访问比锁定访问更有效地执行原子操作。这是因为独占访问更有效地使用互连带宽。在独占访问序列中,其他主设备可以同时访问从设备,但只有一个主设备将被授予访问同一内存范围的权限。用于独占访问的机制可以提供信号量类型的操作,而不需要总线在操作期间保持专用于特定的主机。这意味着总线访问延迟和最大可实现带宽不受影响。独占访问可以由多个数据传输组成,但所有事务必须具有相同的地址通道属性。从设备需要硬件独占访问监视器来记录独占序列的事务信息,以便它知道正在访问的存储器范围和执行访问的主设备的身份。如果在独占序列完成之前没有其他主机访问被监视的范围,则访问是原子的。从设备对来自其他主设备的访问开放,导致系统带宽利用的总体公平性增加。
独占访问硬件监视器操作
独占访问的基本机制由设计者必须实现的独占访问监视器控制。下图显示了主机M0从地址执行排他读取的示例:
来自独占访问监视器硬件的响应是以下之一:·
EXOKAY:读取该值,并且将事务的ID存储在独占访问监视器硬件中。
OKAY:该值被读取,但不支持独占访问,主服务器应将此响应视为独占操作的错误。
在独占访问序列中,其他主机可以同时访问从机,但只有一个主机会被授予对同一内存范围的访问权限。
在稍后的某个时间,如果在独占读取期间接收到 EXOKAY,则M0尝试通过对相同地址执行独占写入来完成独占序列。独占写入使用与独占读取相同的事务ID。
来自独占访问监视器硬件的响应是以下之一:
EXOKAY:自独占读取访问以来,没有其他主机写入该位置,因此写入成功。在这种情况下,独占写入更新内存。
OKAY:另一个主设备(例如M1)在独占读访问后已写入该位置,因此写入失败。在这种情况下,不更新存储器位置。
有些从机需要额外的逻辑来支持独占访问。独占访问监视硬件只监视每个事务ID的一个地址。应该实现它,以便它可以监视可以看到的每个可能的独占ID。
独占交易对:通过
在稍后的某个时间,如果在排他读取期间接收到EXOKAY,则M0尝试通过对相同地址执行排他写入来完成排他序列。独占写入使用与独占读取相同的事务ID。
用于独占访问的机制可以提供信号量类型的操作,而不要求总线在操作期间保持专用于特定的主服务器。这意味着总线访问延迟和最大可实现带宽不受影响。排他性访问可以由多个数据传输组成,但所有的事务必须具有相同的地址通道属性。从机需要一个硬件独占访问监视器来记录独占序列的事务信息,以便它知道正在被访问的内存范围和执行访问的主机的身份。
如果在独占序列完成之前没有其他主站访问被监视的范围,则该访问是原子性的。
从服务器对来自其他主服务器的访问是开放的,这使得系统在带宽利用方面的公平性总体上得到了提高。
传输行为和事务顺序
本节将分析一些读写事务的示例序列,以帮助您理解不同AXI通道之间的关系。本节还解释了一些管理事务的规则,以及传输id如何支持乱序事务。
我们还会看到:
未对齐传输,以及它们如何帮助优化带宽利用率
大端和小端编码的区别,举几个简单的例子
与AXI接口相关的主要参数。这些参数在实现互连时很有用