1、AMBA AXI4协议,何宾 2012.02,本章内容,AMBA AXI4协议是由Xilinx公司和ARM公司制定的 用于SOC内IP互联的规范。本章详细介绍了AXI4规范。主要内容包括AXI概 述、AXI4功能、AXI4-Lite功能和AXI4-Stream功能等。其中AXI4功能、AXI4-Lite功能和AXI4-Stream功能 是本章的重点内容,也是构成AXI4协议的主要部分。,AXI概述,Xilinx 同 ARM 密切合作,共同为基于 FPGA 的高性 能系统和设计定义了 AXI4 规范。并且在其新一代可编 程门阵列芯片上采用了高级可扩展接口(Advanced eXtensible
2、Interface, AXI)协议。AXI总线是ARM高级微控制器总线结构(Advanced Microcontroller Bus Architecture, AMBA)的一部分。AXI 总线的第一个版本包含在AMBA3.0(2003年发布)中, AXI总线的第二个版本AXI4包含在AMBA4.0(2010年发 布)中。,AXI概述,最新一代的AMBA接口的目标是:(1)适合于高带宽和低延迟设计;(2)在不使用复杂的桥接方式下,允许更高频率的操作;(3)满足普遍情况下的元件接口要求;(4)适用于高初始访问延迟的存储器控制器;(5)为互联结构的实现提供了灵活性;(6)与已有的AHB和APB接口
3、向下兼容。,AXI概述,AXI协议的关键特性表现在以下几个方面:(1)独立的地址/控制和数据阶段;(2)使用字节选通,支持非对齐的数据传输;(3)只有开始地址的猝发交易;(4)独立的读和写数据通道,可以使能低成本的直接存储器访问DMA传输;(5)能发出多个未解决的地址;(6)完成无序交易;(7)容易添加寄存器切片,满足时序收敛要求;,AXI概述 - AXI协议的优势,1提供了更高的生产率,主要体现在以下几个方 面:(1)将多种不同的接口整合到一个接口(AXI4)中,因此 用户仅需了解单个系列的接口;(2)简化了不同领域 IP 的集成,并使自身或第三方合作伙 伴 IP 的开发工作更简单易行; (
4、3)由于AXI4 IP 已为实现最高性能、最大吞吐量以及最低 时延进行了优化,从而使设计工作进一步获得简化;,AXI概述,2提供了更大的灵活性,主要体现在以下几个 方面:(1)支持嵌入式、DSP 及逻辑版本用户; (2)调节互连机制,满足系统要求:性能、面积及功耗; (3)帮助设计者在目标市场中构建最具号召力的产品;,AXI概述,3提供了广泛的 IP 可用性 (1)第三方 IP 和 EDA 厂商普遍采用开放式 AXI4 标 准,从而使该接口获得了更广泛的应用。 (2)基于 AXI4 的目标设计平台可加速嵌入式处理、 DSP以及连接功能设计开发。,AXI4功能,AXI4协议基于猝发式传输机制。在
5、地址通道上, 每个交易有地址和控制信息,这些信息描述了需要传 输的数据性质。在主设备和从设备之间所传输的数据分别使用到 从设备的写数据通道和到主设备的读数据通道。在从主设备到从设备的写数据交易中,AXI有一个 额外的写响应通道,从设备通过该通道向主设备发出 信号表示完成写交易。,AXI4功能,所有的AXI4包含了5个不同的通道:(1)读地址通道(Read address channel, AR) ;(2)写地址通道(Write address channel, AW);(3)读数据通道(Read data channel, R);(4) 写数据通道(Write data channel, W)
6、;(5) 写响应通道(Write response channel, B);,AXI4功能,每个通道由一个信号集构成,并且使用双向的 VALID和READY握手信号机制。信息源使用VALID信号,表示在通道上存在可用 的有效数据或者控制信息;而信息接收源使用READY 信号,表示可以接收数据。读数据通道和写数据通道也包含LAST信号,该信 号用来表示在一个交易发生时,最后一个传输的数据 项。,AXI4功能,图2.1给出了AXI4使用读地址和读数据通道的读 交易。图2.2给出了AXI4使用写地址和写数据通道的 写交易,AXI4功能,AXI4全局信号,低功耗接口信号,AXI4通道及信号,读和写交易
7、有各自的地址通道。地址通道上给出交易 所要求的地址和控制信息。AXI4读和写地址通道包括下面 的机制:(1)可变长度的猝发操作,每次猝发操作包含1-256数据;(2)提供服务质量(QoS)信号(3)支持多个区域接口;(4)猝发传输不能超过4k边界;(5)包裹、递增和非递增猝发;(6)使用互斥和锁的原子操作;(7)系统级缓存和缓冲控制;(8)安全和特权访问。,AXI4通道及信号 -读和写地址通道 (写地址),AXI4通道及信号 -读和写地址通道 (读地址),AXI4通道及信号 -读数据通道,读数据通道传送所有来自从设备到主设备的读 数据及读相应信息。表2.5给出了读数据通道信号及 其信号定义。读
8、数据通道包括:(1) 数据总线宽度:8、16、32、64、128、256、 512和1024位宽度;(2) 读响应表示读交易完成的状态,AXI4通道及信号 -读数据通道,AXI4通道及信号 -写数据通道,写数据通道传送所有从主设备到从设备的写数据。 表2.6给出了写数据通道信号及信号定义。写数据通道 包括:(1) 数据总线宽度:8、16、32、64、128、256、 512和1024位宽度;(2) 每8位有一个字节通道选通,用来表示数据总线 上的哪个字节是有效的;,AXI4通道及信号 -写数据通道,AXI4通道及信号 -写响应通道,写响应通道提供了一种方法,用于从设备响应写 交易。所有的写信号
9、使用完成信号。每个响应用于一 次猝发的完成,而不是用于每个交易的数据。读交易和写交易可以通过下面的交易例子进行说 明:1)读猝发交易2)重叠猝发交易3)写猝发交易,AXI4通道及信号 -写响应通道,AXI4通道及信号 -写响应通道,图2.3给出了读猝发交易过程中典型信号的交互 过程。,图2.3读猝发交易过程中典型信号的交互过程,AXI4通道及信号 -写响应通道,图2.4给出了写交易过程中典型信号的交互过程。,图2.4写猝发交易过程中典型信号的交互过程,AXI4交易通道的握手信号关系,为了避免死锁条件,必须考虑握手信号之间存在的 依赖关系。在任何交易中:(1) AXI互联中的VALID信号不依赖
10、于交易中其它元件的 READY信号;(2) READY信号能等待VALID信号的确认;,AXI4交易通道的握手信号关系 -AXI4读交易的握手信号关系,图2.5给出了读交易中握手之间的依赖关系。,图2.5 读交易中的握手之间的依赖关系,AXI4交易通道的握手信号关系 -AXI4读交易的握手信号关系,在读交易中: (1) 在确认ARREADY信号前,从设备能等待确认ARVALID信 号;(2)在从设备通过确认RVALID信号开始返回数据前,必须等待 确认所有的ARVALID和ARREADY信号;,AXI4交易通道的握手信号关系 -AXI4写交易的握手信号关系,图2.6给出了写交易中握手之间的依赖
11、关系。,图2.6 写交易中的握手之间的依赖关系,AXI4交易通道的握手信号关系 -AXI4写交易的握手信号关系,在写交易中:(1) 在确认AWVALID和WVALID信号前,主设备不需要等待从 设备确认AWREADY或者WREADY信号;(2) 在确认AWREADY前,从设备能等待AWVALID或WVALID 信号,或者全部这两个信号;(3) 在确认WREADY前,从设备能等待AWVALID或WVALID信 号,或者全部这两个信号;(4) 从设备在确认BVALID前,从设备必须等待确认所有的 AWVALID和AWREADY信号;(5) 在确认BVALID前,从设备不需要等待主设备确认BREAD
12、Y 信号。(6) 在确认BREADY前,主设备能等待BVALID信号;,AXI4猝发类型及地址计算 -AXI4猝发类型,AXI协议中定义了三种猝发类型:(1) 固定猝发(Fixed burst);(2) 递增猝发(Incrementing burst);(3) 包裹猝发(Wrapping burst)表2.8给出了ARBURST和AWBURST信号所选择的 猝发类型:,AXI4猝发类型及地址计算 -AXI4猝发类型,AXI4猝发类型及地址计算 -AXI4猝发类型,对于包裹式的猝发方式,有两个限制:(1) 开始地址必须对齐传输大小;(2) 猝发的长度必须是2,4,8或16。(3) 大于16拍的猝
13、发传输只支持INCR类型。WRAP和 FIXED类型只限于小于16拍的猝发传输。,AXI4猝发类型及地址计算 -AXI4猝发地址,为了说明猝发交易过程中地址的计算方法,首先给出 计算过程中,所需要使用的一些术语:(1) Start_Address: 主设备给出的开始地址;(2) Number_Bytes: 每次数据传输过程中最大的字节个数;(3) Data_Bus_Bytes: 数据总线上的字节通道的个数;(4) Aligned_Address: 开始地址的对齐版本;(5) Burst_Length: 在一个猝发中数据传输的总个数;(6) Address_N: 在一个猝发中传输N个的地址;(7
14、) Wrap_Boundary: 在一个包裹猝发方式的低地址;(8) Lower_Byte_Lane: 一个传输最低寻址字节的字节通道;(9) Upper_Byte_Lane: 一个传输中最高寻址字节的字节通道;(10) INT(x): x取整操作;,AXI4猝发类型及地址计算 -AXI4猝发地址,给上面的术语进行如下的赋值操作:(1) Start_Address=ADDR;(2) Number_Bytes=2SIZE;(3) Burst_Length=LEN+1;(4)Aligned_Address=(INT(Start_Address/Number_Byte)x Number_Bytes;
15、,AXI4猝发类型及地址计算 -AXI4猝发地址,在一个猝发中,第一个传输的地址表示为:Address_1=Start_Address; 在一个猝发中,传输N个数据后的地址表示为:Address_N=Aligned_Address+(N-1)x Number_Bytes; 对于WARP的猝发方式,其边界由下式确定为:Wrap_Boundary=(Int(Start_Address/(Number_Bytes x Burst_Length) x (Number_Bytes x Burst_Length);如果Address_N=Wrap_Boundary+(Number_Bytes x Burs
16、t_Length). 则使用这个等式:Address_N=Wrap_Address在边界后,使用这个等式: Address_N = Start_Address + (N 1) x Number_Bytes) (Number_Bytes x Burst_Length);,AXI4猝发类型及地址计算 -AXI4猝发地址,使用下面的等式确定第一个传输中使用哪个字 节通道:Lower_Byte_Lane = Start_Address - (INT(Start_Address / Data_Bus_Bytes)x Data_Bus_BytesUpper_Byte_Lane = Aligned_Addr
17、ess + (Number_Bytes 1) -(INT(Start_Address / Data_Bus_Bytes) x Data_Bus_Bytes;,AXI4猝发类型及地址计算 -AXI4猝发地址,使用下面的等式确定在一个猝发中第一个传输 后用于所有传输中使用哪个字节通道: Lower_Byte_Lane = Address_N (INT(Address_N / Data_Bus_Bytes) x Data_Bus_Bytes; Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes 1; 传输数据的范围在: DATA(8xUpper_Byte
18、_Lane) + 7 : (8 x Lower_Byte_Lane);,AWCACHE和ARCACHE属性 AWCACHE3:2和ARCACHE3:2,AWCACHE2和ARCACHE2为读分配位。 AWCACHE3和ARCACHE3为写分配位。对于读交易,写分配位表示:(1) 由于一个写交易,位置能预先在高速缓存Cache中进行分 配;(2) 由于其它主设备的行为,位置能预先在高速缓存Cache中 进行分配;(3) 对于写交易,读分配位表示:(4) 由于一个读交易,位置能预先在高速缓存Cache中进行分 配;(5) 由于其它主设备的行为,位置能预先在高速缓存Cache中 进行分配;,AWCA
19、CHE和ARCACHE属性AWCACHE1和ARCACHE1,AWCACHE1和ARCACHE1在AXI4中表示可修改 位。该位为1时,表示交易是可修改的,否则交易时不可 修改的。1不可修改的交易不可修改交易不能分割成多个交易或者与其它交易合 并。交易不可修改时,下面的参数是不可修改的:传输地 址(AWADDR, ARADDR, AWREGION, ARREGION)、 猝发大小(AWSIZE, ARSIZE)、猝发长度(AWLEN, ARLEN)、猝发类型(AWBURST. ARBURST)、锁类 型(AWLOCK, ARLOCK)、保护类型(AWPROT, ARPROT)。,AWCACHE
20、和ARCACHE属性AWCACHE1和ARCACHE1,不可修改交易中,交易ID和QoS值是可修改的。对 于猝发长度大于16的不可修改的交易,允许分割成多 个交易。每个产生的交易都满足上面的要求,但减少 猝发长度,所产生的猝发地址也相应的修改。,AWCACHE和ARCACHE属性AWCACHE1和ARCACHE1,2可修改的交易可修改的交易可以通过下面的方法进行操作:(1) 交易能分割成多个交易;(2) 多个交易能合并成一个交易;(3) 读交易能取出比要求多的数据;(4) 写交易能访问比要求更大的地址范围,使用写选通信号来保证只更新合理的位置;(5) 可以修改每个产生交易的传输地址(AWADD
21、R, ARADDR)、猝发大小(AWSIZE, ARSIZE)、猝发长度 (AWLEN, ARLEN)、猝发类型(AWBURST. ARBURST) 但是不能修改锁类型(AWLOCK, ARLOCK)、保护类型 (AWPROT,ARPROT)。可修改交易中,交易ID和QoS值是 可修改的。,AWCACHE和ARCACHE属性AWCACHE0和ARCACHE0,AWCACHE0和ARCACHE0表示可缓冲,当为 低,AWCACHE0表示写响应由终端设备发出,否则 可以有中间设备发出。ARCACHE0表示读数据由终 端设备发出或者由写的是最终目的地发出。,AXI互联结构模型,其互联结构模型包括:
22、直通模式; 只转换模式; N-1互联模式; 1-N互联模式; N-M互联模式。 下面对这几种互联结构模型进行介绍:,AXI互联结构模型 -直通模式,如图2.7所示,当只有一个主设备和一个从设备和 AXI互联时,AXI互联不执行任何转换或流水线功能, AXI互联结构退化成直接的线连接。在这种模式下,没 有延迟存在,同时不消耗逻辑资源。,AXI互联结构模型 -只转换模式,如图2.8所示,当连接一个主设备和一个从设备时, AXI互联能执行不同的转换和流水线功能。这些功能主 要包括:数据宽度转换; 时钟速率转化; AXI4-Lite从适应; AXI-3从适应; 流水线(例如一个寄存器Slice或者数据
23、通道FIFO)。在只转换模式下,AXI互联不包含仲裁、解码或布线 逻辑,但是可能产生延迟。,AXI互联结构模型 -只转换模式,AXI互联结构模型 -N-1互联模式,如图2.9所示,AXI互联的一个普通的退化配置模 式是,多个主设备访问一个从设备。典型的情况是,一个存储器控制器,很显然需要仲 裁逻辑。这种情况下,AXI互联不需要地址译码逻辑 (除非需要确认地址的有效范围)。在这个配置中, 也执行数据宽度和时钟速率的转换。,AXI互联结构模型 -N-1互联模式,AXI互联结构模型 -1-N互联模式,如图2.10所示,另一个AXI互联退化的结构是,一 个主设备,典型的处理器,访问多个存储器映射的从
24、外设。在这种模式下,AXI互联不执行仲裁(在地址和 写数据通道)。,AXI互联结构模型 -N-M互联模式,AXI互联提供了一种共享地址多数据流(SAMD) 拓扑结构,这种结构中包含稀疏的数据交叉开关连 接,单线程写和读地址仲裁。如图2.11所示,给出了一 种共享写和读地址仲裁的N-M的AXI互联结构。,AXI互联结构模型 -N-M互联模式,用户信号,通常情况下,不推荐使用用户信号,因为在AXI4协 议中没有定义它们的功能,这样两个元件在不兼容行 为下使用相同的用户信号,可能导致互操作性问题。 下面给出每个AXI4通道的用户信号名字: AWUSER:写地址通道用户信号; ARUSER:读地址通道
25、用户信号; WUSER:写数据通道用户信号; RUSER:读数据通道用户信号; BUSER:写响应通道用户信号;,用户信号,当实现用户信号时,并不要求所有通道支持用户 信号。此外,不希望在一个通用的主设备和从设备元 件接口支持用户信号。推荐,包含支持用户信号的互联元件允许这些信 号在主设备和从设备之间进行传递。用户信号的宽度 在实现时定义,在每个通道的宽度可以不同。,AXI4-Lite功能,AXI4-Lite接口是AXI4接口的子集专用于和元件内的 控制寄存器进行通信。AXI4-Lite允许构建简单的元件接 口,这个接口是较小的,对设计和验证方面的要求更 少。AXI4-Lite接口的关键特性包
26、含: 所有交易的猝发长度为1; 所有访问数据的大小和数据总线宽度相同; 支持数据总线宽度为32位或64位(要求64位原子访问); 所有的访问相当于AWCACHE和ARCACHE等于b0000(非缓冲和非缓存的); 不支持互斥性操作;,AXI4-Lite功能,AXI4-Lite功能,支持多个未完成的交易,但是一个从设备的设计 允许通过合理的使用握手信号,对这种交易进行限制。在AXI-Lite中不支持AXI IDs。这个定义规定了所 有的交易必须是顺序的,所有的交易必须使用一个单 独固定的ID值。从设备可选择支持AXI ID信号,这样允许使用的从 设备是全AXI接口,而不需要对接口进行修改。,AX
27、I4-Lite功能,AXI4-Lite支持写选通。这样允许实现多个不同大 小的寄存器,也允许实现可以使用字节和半字访问进 行写操作的存储器结构。所有的主接口和互联必须提 供正确的写选通信号。所有的从设备元件可以选择是 否使用写选通信号。对于提供类似存储器行为的从设 备元件必须充分的支持写选通。,AXI4-Lite功能,表2.10给出了AXI和AXI4-Lite的互通性。只有主设 备是AXI和从设备是AXI-Lite的情况需要特殊的考虑,这 种情况要求反映ID,使用和地址交易相关的AXI ID,然 后随读数据或者写响应返回相同的ID号,这是因为主设 备需要返回的ID来正确识别交易的响应。,AXI
28、4-Lite功能,AXI4-Stream功能,AXI4-Stream协议作为一个标准的接口,这个接口 用于连接希望交换数据的元件。接口用于将产生数据 的一个主设备和接收数据的一个从设备连接。当很多 元件和从元件连接时,也能使用这个协议。协议支持 使用具有相同设置共享总线的多个数据流,允许建立 一个互联结构,这个结构能够执行扩展、压缩和路由 操作。AXI-Stream接口支持很多不同的流类型。流协议在 传输和包之间定义了联系。表2.11给出了AXI-Stream接 口的信号定义。,AXI4-Stream功能,AXI4-Stream功能,TVALID和TREADY握手信号用来确定跨越接口数 据的时
29、间。双向的流控制机制使得主设备和从设备能 控制跨越接口所发送的数据和控制信息的速度。对于 一个发生的传输,必须确认TVALID和TREADY信号。一个主设备不允许在确认TVALID前,等待确认 TREADY。一旦确认TVALID,必须一直保持这个状 态,直到产生握手信号。在确认相应的TREADY信号前,一个从设备允许等 待确认TVALID。如果从设备确认了TREADY,在TVALID信号确认 前,允许不确认(释放)TREADY。,AXI4-Stream功能,1. TVALID在TREADY前的握手信号图2.13给出了TVALID在TREADY前的握手信号。 从图中可以看出,主设备给出数据和控制
30、信号,并且确 认TVALID信号为高。一旦主设备确认了VALID,来自主 设备的数据或者控制信息保持不变,这种状态一直保持 到从设备驱动TREADY信号为高,用来表示从设备可以 接收数据和控制信号。在这种情况下,一旦从设备确认 TREADY为高,则进行传输。箭头标记的地方表示传输 开始。,AXI4-Stream功能,图2.13 TVALID在TREADY前握手,AXI4-Stream功能,2. TREADY在TVALID前的握手信号图2.14给出了TREADY在TVALID前的握手信号 图。图中可以看出,从设备在数据和控制信息有效 前,驱动TREADY信号为高。这表示,目的设备能在 一个ACLK周期内接收数据和控制信息。在这种情况 下,一旦主机确认TVALID信号为高,则开始传输。箭 头标记的地方表示传输开始。,AXI4-Stream功能,图2.14 TREADY在TVALID前握手,AXI4-Stream功能,3TVALID和TREDAY握手图2.15给出了TVALID和TREADY握手的图。在一 个ACLK周期内,主设备确认TVALID为高,从设备确 认TREADY为高。在箭头标记的地方产生传输。,AXI4-Stream功能,图2.15 TREADY和TVALID握手,