AXI规范的关键特性表现在以下7方面。
(1)独立的地址/控制和数据阶段。
(2)使用字节选通,支持非对齐的数据传输。
(3)只有开始地址的猝发交易。
(4)独立的读和写数据通道,使能低成本的直接存储器访问DMA传输。
(5)能发出多个未解析的地址。
(6)完成无序交易。
(7)容易添加寄存器切片,满足时序收敛要求。
AXI规范较其他协议具有下面的优势。
(1)提供了更高的生产率,主要体现在以下3方面。
①将不同的接口整合到一个接口(AXI4)中,因此用户仅需了解单个系列的接口即可。
②简化了不同领域IP的集成,并使自身或第三方IP的开发工作更简单易行。
③由于AXI4 IP已为实现最高性能、最高吞吐量及最低时延进行了优化,从而进一步简化了设计工作。
(2)提供了更高的灵活性,主要体现在以下3方面。
①支持嵌入式、DSP及逻辑版本用户。
②调节互联机制,满足系统要求,即性能、面积和功耗。
③帮助设计人员在目标市场构建最具号召力的产品。
(3)提供了广泛的IP可用性。
①第三方IP和EDA厂商普遍采用AXI4规范,从而使该接口获得更广泛的应用。
②基于AXI4的目标设计平台可加速嵌入式处理、DSP及连接功能的设计开发。
AXI4规范基于猝发式传输机制。在地址通道上,每个交易都有地址和控制信息,这些信息描述了需要传输的数据的性质。在主设备和从设备之间传输数据,分别使用连接到从设备的写数据通道和连接到主设备的读数据通道。在从主设备到从设备的写交易中,AXI提供了一个额外的写响应通道。通过写响应通道,从设备向主设备发出信号,表示写交易完成。
所有的AXI4都包含以下5个不同的通道。
(1)读地址通道(AR)。
(2)写地址通道(AW)。
(3)读数据通道(R)。
(4)写数据通道(W)。
(5)写响应通道(B)。
每个通道都由一个信号集构成,并且使用双向的VALID和READY握手信号机制。信息源使用VALID信号,表示在通道上存在可用的有效数据或控制信息;而信息接收方则使用READY信号,表示可以接收数据。读数据通道和写数据通道也包含LAST信号,该信号用来表示在发生一个交易时,最后一个传输的数据项。
图2.33给出了AXI4使用读地址通道和读数据通道的读交易过程,图2.34给出了AXI4使用写地址通道、写数据通道和写响应通道的写交易过程。
图2.33 读交易过程
图2.34 写交易过程
1.AXI4全局信号
表2.11给出了AXI4的全局信号。
表2.11 AXI4的全局信号
2.低功耗接口信号
表2.12给出了AXI4的低功耗接口信号。
表2.12 AXI4的低功耗接口信号
3.AXI4通道及信号
读交易和写交易都有各自的地址通道。在地址通道上,给出交易所要求的地址和控制信息。AXI4读地址通道和写地址通道包括以下机制。
(1)可变长度的猝发操作,每个猝发操作包含1~256个数据。
(2)提供服务质量(QoS)信号。
(3)支持多个区域接口。
(4)猝发传输不能超过4KB边界。
(5)回卷、递增和非递增猝发。
(6)使用互斥和锁的原子操作。
(7)系统级缓存和缓冲控制。
(8)安全和特权访问。
1)读地址通道和写地址通道
表2.13给出了写地址通道信号及其描述,表2.14给出了读地址通道信号及其描述。
表2.13 写地址通道信号及其描述
表2.14 读地址通道信号及其描述
2)读数据通道
读数据通道传送所有来自从设备到主设备的读数据及读响应信息。表2.15给出了读数据通道信号及其描述。读数据通道包括以下信息。
(1)数据总线宽度,如8、16、32、64、128、256、512和1024位。
(2)读响应信息,表示读交易完成的状态。
表2.15 读数据通道信号及其描述
3)写数据通道
写数据通道传送所有从主设备到从设备的写数据。表2.16给出了写数据通道信号及其描述。写数据通道包括以下信息。
(1)数据总线宽度,如8、16、32、64、128、256、512和1024位。
(2)每8位有一个字节通道选通,用来表示数据总线上的有效字节。
表2.16 写数据通道信号及其描述
4)写响应通道
写响应通道提供了一种方法,用于从设备响应写交易。所有写信号都使用完成信号。每个响应用于一个猝发的完成,而不用于每个交易的数据。
读交易和写交易可以通过下面的交易例子进行说明。
(1)读猝发交易。
(2)重叠猝发交易。
(3)写猝发交易。
表2.17给出了写响应通道信号及其描述。
表2.17 写响应通道信号及其描述
续表
图2.35给出了读猝发交易过程中典型信号的交互过程,图2.36给出了写猝发交易过程中典型信号的交互过程。
图2.35 读猝发交易过程中典型信号的交互过程
图2.36 写猝发交易过程中典型信号的交互过程
4.AXI4交易通道的握手信号之间存在的依赖关系
为了避免死锁条件得到满足,必须考虑握手信号之间存在的依赖关系。在任何交易中,都有以下情况。
(1)在AXI互联中,VALID信号不依赖交易中其他芯片的READY信号。
(2)READY信号能够等待确认VALID信号。
1)AXI4读交易的握手信号之间存在的依赖关系
图2.37给出了读交易中握手信号之间的依赖关系。
(1)在确认ARREADY信号前,从设备能够等待确认ARVALID信号。
(2)在从设备通过确认RVALID信号开始返回数据前,必须等待确认所有ARVALID和ARREADY信号。
2)AXI4写交易的握手信号关系
图2.38给出了写交易中握手信号之间的依赖关系。
图2.37 读交易中握手信号之间的依赖关系
图2.38 写交易中握手信号之间的依赖关系
(1)在确认AWVALID和WVALID信号前,主设备不需要等待从设备确认AWREADY或WREADY信号。
(2)在确认AWREADY信号前,从设备能够等待AWVALID或WVALID信号,或者等待这两个信号。
(3)在确认WREADY信号前,从设备能够等待AWVALID或WVALID信号,或者等待这两个信号。
(4)在确认BVALID信号前,从设备必须等待确认所有AWVALID和AWREADY信号。
(5)在确认BVALID信号前,从设备不需要等待主设备确认BREADY信号。
(6)在确认BREADY信号前,主设备能够等待BVALID信号。
5.AXI4猝发类型及地址计算
1)AXI4猝发类型
AXI规范中定义了以下3种猝发类型。
(1)固定猝发。
(2)递增猝发。
(3)回卷猝发。
表2.18给出了ARBURST和AWBURST信号所选择的猝发类型。
表2.18 ARBURST和AWBURST信号所选择的猝发类型
对于回卷猝发,有以下两个限制。
(1)起始地址必须对齐传输大小。
(2)猝发的长度必须是2、4、8或16拍。
大于16拍的猝发传输只支持递增类型。回卷和固定类型只限于小于16拍的猝发传输。
2)AXI4猝发地址
为了说明猝发交易过程中地址的计算方法,下面首先给出计算过程中需要使用的一些术语。
(1)Start_Address:主设备给出的开始地址。
(2)Number_Bytes:每次数据传输过程中的最大字节数。
(3)Data_Bus_Bytes:数据总线上字节通道的个数。
(4)Aligned_Address:起始地址的对齐版本。
(5)Burst_Length:在一个猝发中,数据传输的总个数。
(6)Address_ N :在一个猝发中传输 N 个地址。
(7)Wrap_Boundary:一个回卷猝发中的低地址。
(8)Lower_Byte_Lane:一个传输中最低寻址字节的字节通道。
(9)Upper_Byte_Lane:一个传输中最高寻址字节的字节通道。
(10)INT( x ): x 取整操作。
对上面的术语进行如下赋值操作。
(1)Start_Address=ADDR.
(2)Number_Bytes=2SIZE.
(3)Burst_Length=LEN+1.
(4)Aligned_Address=(INT(Start_Address/Number_Bytes))×Number_Bytes.
在一个猝发中,第一个传输的地址表示为
Address_1=Start_Address
在一个猝发中,传输 N 个数据后的地址表示为
Address_ N =Aligned_Address+( N -1)×Number_Bytes
对于WARP的猝发方式,其边界由下式确定:
Wrap_Boundary=(Int(Start_Address/(Number_Bytes×Burst_Length)))×
(Number_Bytes×Burst_Length)
如果Address_ N =Wrap_Boundary+(Number_Bytes×Burst_Length),则使用以下等式:
Address_ N =Wrap_Address
在边界后,使用以下等式:
Address_ N =Start_Address+(( N -1)×Number_Bytes)-(Number_Bytes×Burst_Length)
使用下面的等式确定第一个传输中使用哪个字节通道。
(1)Lower_Byte_Lane=Start_Address-(INT(Start_Address/Data_Bus_Bytes))×Data_Bus_Bytes.
(2)Upper_Byte_Lane=Aligned_Address+(Number_Bytes-1)-(INT(Start_Address/Data_Bus_Bytes))×Data_Bus_Bytes.
使用下面的等式确定在一个猝发中的第一个传输后,用于确定所有传输中使用的字节通道。
(1)Lower_Byte_Lane=Address_ N -(INT(Address_ N /Data_Bus_Bytes)) Data_Bus_Bytes.
(2)Upper_Byte_Lane=Lower_Byte_Lane+Number_Bytes-1.
传输数据的范围为DATA[(8×Upper_Byte_Lane)+7:(8×Lower_Byte_Lane)]。
6.AWCACHE和ARCACHE信号的属性
下面详细介绍AXI4中的AWCACHE和ARCACHE信号的属性。
1)AWCACHE[3:2]和ARCACHE[3:2]
AWCACHE[2]和ARCACHE[2]为读分配位,AWCACHE[3]和ARCACHE[3]为写分配位。
(1)对于读交易,写分配位表示以下含义。
①由于一个写交易,能预先在高速缓存中分配位置。
②由于其他主设备的行为,能预先在高速缓存中分配位置。
(2)对于写交易,读分配位表示以下含义。
①由于一个读交易,能预先在高速缓存中分配位置。
②由于其他主设备的行为,能预先在高速缓存中分配位置。
2)AWCACHE[1]和ARCACHE[1]
在AXI中,AWCACHE[1]和ARCACHE[1]表示可修改位。当该位为1时,表示交易是可修改的;否则,表示交易是不可修改的。
(1)不可修改的交易。
对不可修改的交易来说,不能将其分割成多个交易或与其他交易合并。当交易为不可修改的交易时,传输地址(AWADDR、ARADDR、AWREGION、ARREGION)、猝发大小(AWSIZE、ARSIZE)、猝发长度(AWLEN、ARLEN)、猝发类型(AWBURST、ARBURST)、锁类型(AWLOCK、ARLOCK)和保护类型(AWPROT、ARPROT)是不可修改的。
在不可修改的交易中,交易ID和QoS值是可以修改的。对猝发长度大于16拍的不可修改的交易来说,允许将其分割成多个交易。每个产生的交易都满足上面的要求,但对由减小猝发长度产生的猝发地址也要相应地进行修改。
(2)可修改的交易。
可修改的交易可以通过下面的方法进行操作。
①交易可以分割成多个交易。
②多个交易可以合并成一个交易。
③读交易能够取出比要求多的数据。
④写交易能够访问比要求更大的地址范围,使用写选通信号保证只更新正确的地址空间。
⑤可以修改每个产生交易的传输地址(AWADDR、ARADDR)、猝发大小(AWSIZE、ARSIZE)、猝发长度(AWLEN、ARLEN)、猝发类型(AWBURST、ARBURST);但是,不能修改锁类型(AWLOCK、ARLOCK)和保护类型(AWPROT、ARPROT)。
在可修改的交易中,交易ID和QoS值也是可以修改的。
3)AWCACHE[0]和ARCACHE[0]
AWCACHE[0]和ARCACHE[0]表示可缓冲。当该位为0时,AWCACHE[0]表示写响应由终端设备发出;否则,表示写响应可以由中间设备发出。ARCACHE[0]表示读数据由终端设备发出或由所写的目的设备发出。
7.AMBA用户信号
通常情况下,不推荐使用用户信号,因为在AXI4规范中没有定义其功能,两个元件在不兼容行为下使用相同的用户信号可能导致互操作性问题。下面给出每个AXI4通道的用户信号的名字。
(1)AWUSER:写地址通道用户信号。
(2)ARUSER:读地址通道用户信号。
(3)WUSER:写数据通道用户信号。
(4)RUSER:读数据通道用户信号。
(5)BUSER:写响应通道用户信号。
当实现用户信号时,并不要求所有通道都支持用户信号。此外,不希望在一个通用的主设备和从设备元件接口上支持用户信号。
推荐:包含支持用户信号的互联元件允许这些信号在主设备和从设备之间进行传递。用户信号的宽度在实现时定义,在每个通道中的宽度可以不同。
AMBA AXI4的互联结构模型包括直通模式、只转换模式、 N -1互联模式、1 -N 互联模式、 N -M互联模式。下面对这几种互联结构模型进行介绍。
1.直通模式
如图2.39所示,当只有一个主设备和一个从设备与AXI互联时,AXI互联不执行任何转换或流水线功能,AXI互联结构退化成直接的线连接。在这种模式下,没有延迟存在,同时不消耗逻辑资源。
2.只转换模式
如图2.40所示,当连接一个主设备和一个从设备时,AXI互联能够执行不同的转换和流水线功能。这些功能主要包括数据宽度转换、时钟速率转换、AXI4-Lite从适应、AXI-3从适应、流水线(如一个寄存器Slice或数据通道FIFO)。在只转换模式下,AXI互联不包含仲裁、解码或布线逻辑,但是可能产生延迟。
图2.39 直通模式
图2.40 只转换模式
3. N -1互联模式
如图2.41所示,AXI互联的一个普通的退化配置模式是多个主设备访问一个从设备,如一个存储器控制器很显然需要仲裁逻辑。在这种情况下,AXI互联不需要地址译码逻辑(除非需要确认地址的有效范围)。在这种模式下,也执行数据宽度转换和时钟速率转换。
4.1 -N 互联模式
如图2.42所示,另一个AXI互联退化的结构是一个主设备(如处理器)访问多个存储器映射的从设备。在这种模式下,AXI互联不执行仲裁(在地址和写数据通道中)。
5. N -M互联模式
AXI互联提供了一种共享地址多数据流(SAMD)拓扑结构,这种结构中包含稀疏的数据交叉开关连接、单线程写和读地址仲裁。图2.43给出了一种共享写和读地址仲裁的 N -M的AXI互联结构,图2.44给出了一种稀疏互联开关写和读数据通路。
图2.41 N -1互联模式
图2.42 1 -N 互联模式
图2.43 共享写和读地址仲裁的 N -M的AXI互联结构
图2.44 稀疏互联开关写和读数据通路
AXI4-Lite接口是AXI4接口的子集,专用于与芯片内的控制寄存器进行通信。AXI4-Lite允许构建简单的芯片接口。这个接口规模较小,对设计和验证方面的要求更少。AXI4-Lite接口的关键特性如下。
(1)所有交易的猝发长度均为1拍。
(2)所有访问数据的宽度和数据总线的宽度均相同。
(3)支持数据总线宽度为32位或64位(要求64位原子访问)。
(4)所有访问均相当于AWCACHE和ARCACHE等于b0000(非缓冲和非缓存的)。
(5)不支持互斥性操作。
表2.19给出了AXI4-Lite接口使用的信号线。
表2.19 AXI4-Lite接口使用的信号线
AXI4-Lite支持多个未完成的交易。但是,通过合理地使用握手信号,一个所涉及的从设备允许对这种交易进行限制。
在AXI4-Lite中,不支持AXI ID。该定义规定了所有交易必须是按顺序的,且所有交易必须使用一个单独固定的ID。
从设备可选择支持AXI ID信号。这样,允许使用的从设备为全AXI接口,而不需要对接口进行修改。
AXI4-Lite支持写选通。这样,允许实现多个不同大小的寄存器,也允许实现可以使用字节和半字访问进行写操作的存储器结构。所有主接口和互联都必须提供正确的写选通信号,所有从设备都可以选择是否使用写选通信号。对于提供类似存储器行为的从设备,其必须完全支持写选通。
表2.20给出了AXI和AXI4-Lite的互通性。只有主设备是AXI和从设备是AXI4-Lite的情况需要特殊考虑。这种情况要求反映AXI ID,使用和地址交易相关的AXI ID,随读数据或写响应返回相同的ID。这是因为主设备需要通过返回的ID来正确识别交易的响应。
表2.20 AXI和AXI4-Lite的互通性
AXI4-Stream协议作为一个标准的接口,用于连接希望交换数据的设备。该接口将产生数据的一个主设备和接收数据的一个从设备连接起来。当很多主设备和从设备连接时,也能使用该协议。该协议支持使用具有相同设置的共享总线的多个数据流。该协议允许建立一个互联结构。该结构能够执行扩展、压缩和路由操作。
AXI4-Stream接口支持很多不同的流类型。流协议在传输和包之间定义了联系。表2.21给出了AXI4-Stream接口的信号描述。
表2.21 AXI4-Stream接口的信号描述
TVALID和TREADY握手信号用来确定跨越接口数据的时间。双向的流控制机制使得主设备与从设备能控制跨越接口所发送的数据和控制信息的速度。对于一个发生的传输,必须确认TVALID和TREADY信号。
一个主设备不允许在确认TVALID信号前等待确认TREADY信号。一旦确认TVALID信号,就必须一直保持这个状态,直到产生握手信号。
在确认相应的TREADY信号前,一个从设备允许等待确认TVALID信号。如果从设备确认了TREADY信号,则在确认TVALID信号前,允许不确认(释放)TREADY信号。
1.TVALID信号在TREADY信号前的握手信号
图2.45给出了TVALID信号在TREADY信号前的握手信号。可以看出,主设备给出数据和控制信号,并且确认TVALID信号为高电平。一旦主设备确认了TVALID信号,来自主设备的数据和控制信号就保持不变。这种状态一直保持到从设备驱动TREADY信号为高电平,表示从设备可以接收数据和控制信号。在这种情况下,一旦从设备确认TREADY信号为高电平,就开始传输。在图2.45中,箭头标记的地方表示传输开始。
图2.45 TVALID信号在TREADY信号前的握手信号
2.TREADY信号在TVALID信号前的握手信号
图2.46给出了TREADY信号在TVALID信号前的握手信号。可以看出,在数据和控制信号有效前,从设备驱动TREADY信号为高电平,表示目的设备能在一个ACLK周期内接收数据和控制信号。在这种情况下,一旦主机确认TVALID信号为高电平,就开始传输。在图2.46中,箭头标记的地方表示传输开始。
图2.46 TREADY信号在TVALID信号前的握手信号
3.TVALID和TREDAY信号握手
图2.47给出了TVALID和TREADY信号握手。在一个ACLK周期内,主设备确认TVALID信号为高电平,从设备确认TREADY信号为高电平。在图2.47中,在箭头标记的地方产生传输。
图2.47 TVALID和TREADY信号握手