730 likes | 1.46k Views
AMBA AXI4 协议. 何宾 2012.02. 本章内容. AMBA AXI4 协议是由 Xilinx 公司和 ARM 公司制定的 用于 SOC 内 IP 互联的规范。 本章详细介绍了 AXI4 规范。主要内容包括 AXI 概 述、 AXI4 功能、 AXI4-Lite 功能和 AXI4-Stream 功能等。 其中 AXI4 功能、 AXI4-Lite 功能和 AXI4-Stream 功能 是本章的重点内容,也是构成 AXI4 协议的主要部分。. AXI 概述.
E N D
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 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接口向下兼容。
AXI概述 AXI协议的关键特性表现在以下几个方面: (1)独立的地址/控制和数据阶段; (2)使用字节选通,支持非对齐的数据传输; (3)只有开始地址的猝发交易; (4)独立的读和写数据通道,可以使能低成本的直接存 储器访问DMA传输; (5)能发出多个未解决的地址; (6)完成无序交易; (7)容易添加寄存器切片,满足时序收敛要求;
AXI概述-- AXI协议的优势 1.提供了更高的生产率,主要体现在以下几个方 面: (1)将多种不同的接口整合到一个接口(AXI4)中,因此 用户仅需了解单个系列的接口; (2)简化了不同领域 IP 的集成,并使自身或第三方合作伙 伴 IP 的开发工作更简单易行; (3)由于AXI4 IP 已为实现最高性能、最大吞吐量以及最低 时延进行了优化,从而使设计工作进一步获得简化;
AXI概述 2.提供了更大的灵活性,主要体现在以下几个 方面: (1)支持嵌入式、DSP 及逻辑版本用户; (2)调节互连机制,满足系统要求:性能、面积及功耗; (3)帮助设计者在目标市场中构建最具号召力的产品;
AXI概述 3.提供了广泛的 IP 可用性 (1)第三方 IP 和 EDA 厂商普遍采用开放式 AXI4 标 准,从而使该接口获得了更广泛的应用。 (2)基于 AXI4 的目标设计平台可加速嵌入式处理、 DSP以及连接功能设计开发。
AXI4功能 AXI4协议基于猝发式传输机制。在地址通道上, 每个交易有地址和控制信息,这些信息描述了需要传 输的数据性质。 在主设备和从设备之间所传输的数据分别使用到 从设备的写数据通道和到主设备的读数据通道。 在从主设备到从设备的写数据交易中,AXI有一个 额外的写响应通道,从设备通过该通道向主设备发出 信号表示完成写交易。
AXI4功能 所有的AXI4包含了5个不同的通道: (1)读地址通道(Read address channel, AR) ; (2)写地址通道(Write address channel, AW); (3)读数据通道(Read data channel, R); (4) 写数据通道(Write data channel, W); (5) 写响应通道(Write response channel, B);
AXI4功能 每个通道由一个信号集构成,并且使用双向的 VALID和READY握手信号机制。 信息源使用VALID信号,表示在通道上存在可用 的有效数据或者控制信息;而信息接收源使用READY 信号,表示可以接收数据。 读数据通道和写数据通道也包含LAST信号,该信 号用来表示在一个交易发生时,最后一个传输的数据 项。
读地址通道 从 接 口 主 接 口 地址和控制 读数据通道 读数据 读数据 读数据 读数据 图2.1 读通道结构 AXI4功能 图2.1给出了AXI4使用读地址和读数据通道的读 交易。图2.2给出了AXI4使用写地址和写数据通道的 写交易
写地址通道 从 接 口 主 接 口 地址和控制 写数据通道 写数据 写数据 写数据 写数据 写响应通道 写响应 图2.2 写通道结构 AXI4功能
AXI4通道及信号 读和写交易有各自的地址通道。地址通道上给出交易 所要求的地址和控制信息。AXI4读和写地址通道包括下面 的机制: (1)可变长度的猝发操作,每次猝发操作包含1-256数据; (2)提供服务质量(QoS)信号 (3)支持多个区域接口; (4)猝发传输不能超过4k边界; (5)包裹、递增和非递增猝发; (6)使用互斥和锁的原子操作; (7)系统级缓存和缓冲控制; (8)安全和特权访问。
AXI4通道及信号--读数据通道 读数据通道传送所有来自从设备到主设备的读 数据及读相应信息。表2.5给出了读数据通道信号及 其信号定义。 读数据通道包括: (1) 数据总线宽度:8、16、32、64、128、256、 512和1024位宽度; (2) 读响应表示读交易完成的状态
AXI4通道及信号--写数据通道 写数据通道传送所有从主设备到从设备的写数据。 表2.6给出了写数据通道信号及信号定义。写数据通道 包括: (1) 数据总线宽度:8、16、32、64、128、256、 512和1024位宽度; (2) 每8位有一个字节通道选通,用来表示数据总线 上的哪个字节是有效的;
AXI4通道及信号--写响应通道 写响应通道提供了一种方法,用于从设备响应写 交易。所有的写信号使用完成信号。每个响应用于一 次猝发的完成,而不是用于每个交易的数据。 读交易和写交易可以通过下面的交易例子进行说 明: 1)读猝发交易 2)重叠猝发交易 3)写猝发交易
图2.3读猝发交易过程中典型信号的交互过程 AXI4通道及信号--写响应通道 图2.3给出了读猝发交易过程中典型信号的交互 过程。
图2.4写猝发交易过程中典型信号的交互过程 AXI4通道及信号--写响应通道 图2.4给出了写交易过程中典型信号的交互过程。
AXI4交易通道的握手信号关系 为了避免死锁条件,必须考虑握手信号之间存在的 依赖关系。在任何交易中: (1) AXI互联中的VALID信号不依赖于交易中其它元件的 READY信号; (2) READY信号能等待VALID信号的确认;
图2.5 读交易中的握手之间的依赖关系 AXI4交易通道的握手信号关系--AXI4读交易的握手信号关系 • 图2.5给出了读交易中握手之间的依赖关系。
AXI4交易通道的握手信号关系--AXI4读交易的握手信号关系AXI4交易通道的握手信号关系--AXI4读交易的握手信号关系 在读交易中: (1) 在确认ARREADY信号前,从设备能等待确认ARVALID信 号; (2)在从设备通过确认RVALID信号开始返回数据前,必须等待 确认所有的ARVALID和ARREADY信号;
图2.6 写交易中的握手之间的依赖关系 AXI4交易通道的握手信号关系--AXI4写交易的握手信号关系 • 图2.6给出了写交易中握手之间的依赖关系。
AXI4交易通道的握手信号关系--AXI4写交易的握手信号关系AXI4交易通道的握手信号关系--AXI4写交易的握手信号关系 在写交易中: (1) 在确认AWVALID和WVALID信号前,主设备不需要等待从 设备确认AWREADY或者WREADY信号; (2) 在确认AWREADY前,从设备能等待AWVALID或WVALID 信号,或者全部这两个信号; (3) 在确认WREADY前,从设备能等待AWVALID或WVALID信 号,或者全部这两个信号; (4) 从设备在确认BVALID前,从设备必须等待确认所有的 AWVALID和AWREADY信号; (5) 在确认BVALID前,从设备不需要等待主设备确认BREADY 信号。 (6) 在确认BREADY前,主设备能等待BVALID信号;
AXI4猝发类型及地址计算 --AXI4猝发类型 AXI协议中定义了三种猝发类型: (1) 固定猝发(Fixed burst); (2) 递增猝发(Incrementing burst); (3) 包裹猝发(Wrapping burst) 表2.8给出了ARBURST和AWBURST信号所选择的 猝发类型:
AXI4猝发类型及地址计算 --AXI4猝发类型 对于包裹式的猝发方式,有两个限制: (1) 开始地址必须对齐传输大小; (2) 猝发的长度必须是2,4,8或16。 (3) 大于16拍的猝发传输只支持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) 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;
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 Burst_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_Bytes Upper_Byte_Lane = Aligned_Address + (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_Lane) + 7 : (8 x Lower_Byte_Lane)];
AWCACHE和ARCACHE属性 AWCACHE[3:2]和ARCACHE[3:2] AWCACHE[2]和ARCACHE[2]为读分配位。 AWCACHE[3]和ARCACHE[3]为写分配位。 对于读交易,写分配位表示: (1) 由于一个写交易,位置能预先在高速缓存Cache中进行分 配; (2) 由于其它主设备的行为,位置能预先在高速缓存Cache中 进行分配; (3) 对于写交易,读分配位表示: (4) 由于一个读交易,位置能预先在高速缓存Cache中进行分 配; (5) 由于其它主设备的行为,位置能预先在高速缓存Cache中 进行分配;
AWCACHE和ARCACHE属性AWCACHE[1]和ARCACHE[1] AWCACHE[1]和ARCACHE[1]在AXI4中表示可修改 位。该位为1时,表示交易是可修改的,否则交易时不可 修改的。 1.不可修改的交易 不可修改交易不能分割成多个交易或者与其它交易合 并。交易不可修改时,下面的参数是不可修改的:传输地 址(AWADDR, ARADDR, AWREGION, ARREGION)、 猝发大小(AWSIZE, ARSIZE)、猝发长度(AWLEN, ARLEN)、猝发类型(AWBURST. ARBURST)、锁类 型(AWLOCK, ARLOCK)、保护类型(AWPROT, ARPROT)。
AWCACHE和ARCACHE属性AWCACHE[1]和ARCACHE[1] 不可修改交易中,交易ID和QoS值是可修改的。对 于猝发长度大于16的不可修改的交易,允许分割成多 个交易。每个产生的交易都满足上面的要求,但减少 猝发长度,所产生的猝发地址也相应的修改。
AWCACHE和ARCACHE属性AWCACHE[1]和ARCACHE[1] 2.可修改的交易 可修改的交易可以通过下面的方法进行操作: (1) 交易能分割成多个交易; (2) 多个交易能合并成一个交易; (3) 读交易能取出比要求多的数据; (4) 写交易能访问比要求更大的地址范围,使用写选通信号 来保证只更新合理的位置; (5) 可以修改每个产生交易的传输地址(AWADDR, ARADDR)、猝发大小(AWSIZE, ARSIZE)、猝发长度 (AWLEN, ARLEN)、猝发类型(AWBURST. ARBURST) 但是不能修改锁类型(AWLOCK, ARLOCK)、保护类型 (AWPROT,ARPROT)。可修改交易中,交易ID和QoS值是 可修改的。
AWCACHE和ARCACHE属性AWCACHE[0]和ARCACHE[0] AWCACHE[0]和ARCACHE[0]表示可缓冲,当为 低,AWCACHE[0]表示写响应由终端设备发出,否则 可以有中间设备发出。ARCACHE[0]表示读数据由终 端设备发出或者由写的是最终目的地发出。
AXI互联结构模型 其互联结构模型包括: • 直通模式; • 只转换模式; • N-1互联模式; • 1-N互联模式; • N-M互联模式。 下面对这几种互联结构模型进行介绍:
互联 主设备0 从设备0 图2.7 直通模式 AXI互联结构模型--直通模式 如图2.7所示,当只有一个主设备和一个从设备和 AXI互联时,AXI互联不执行任何转换或流水线功能, AXI互联结构退化成直接的线连接。在这种模式下,没 有延迟存在,同时不消耗逻辑资源。
AXI互联结构模型--只转换模式 如图2.8所示,当连接一个主设备和一个从设备时, AXI互联能执行不同的转换和流水线功能。这些功能主 要包括: • 数据宽度转换; • 时钟速率转化; • AXI4-Lite从适应; • AXI-3从适应; • 流水线(例如一个寄存器Slice或者数据通道FIFO)。 在只转换模式下,AXI互联不包含仲裁、解码或布线 逻辑,但是可能产生延迟。
互联 主设备0 从设备0 转换/流水 图2.8转换模式 AXI互联结构模型--只转换模式
AXI互联结构模型--N-1互联模式 如图2.9所示,AXI互联的一个普通的退化配置模 式是,多个主设备访问一个从设备。 典型的情况是,一个存储器控制器,很显然需要仲 裁逻辑。这种情况下,AXI互联不需要地址译码逻辑 (除非需要确认地址的有效范围)。在这个配置中, 也执行数据宽度和时钟速率的转换。
互联 主设备0 从设备0 仲 裁 器 主设备1 图2.9 N-1互联模式 AXI互联结构模型--N-1互联模式