AMBA、AHB、APB、AXI总线

 

AMBA、AHB、APB总线

* AMBA (Advanced Microcontroller Bus Architecture) 高级微处理器总线架构
* AHB (Advanced High-performance Bus) 高级高性能总线
* ASB (Advanced System Bus) 高级系统总线
* APB (Advanced Peripheral Bus) 高级外围总线
* AXI (Advanced eXtensible Interface) 高级可拓展接口

AMBA简介
随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。

AMBA片上总线
AMBA 2.0规范包括四个部分:AHB、ASB、APB、AXI。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。一个典型的基于AMBA总线的系统框图如图3所示:

http://www.52rd.com/User/Upload/2010012584388497.jpg

大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL 设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生 APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。

AHB简介
AHB主要用于高性能、高时钟跑频率模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位~128位总线宽度;支持字节、半字节和字的传输。AHB 系统由主模块、从模块和基础结构(Infrastructure)三部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器(arbiter)、主模块到从模块的多路器、从模块到主模块的多路器、译码器(decoder)、虚拟从模块(dummy Slave)、虚拟主模块(dummyMaster)所组成。Master:能够发起读写操作,提供地址和控制信号,同一时间只有1个Master会被激活。
【Master】:能够发起读写操作,提供地址和控制信号,同一时间只有1个Master会被激活。Slave:在给定的地址范围内对读写操作作响应,并对Master返回成功、失败或等待等状态。
Arbiter】:负责保证总线上一次只有1个Master在工作。仲裁协议是规定的,但是仲裁算法可以根据应用决定。
Decoder】:负责对地址进行解码,并提供片选信号到各Slave。
其互连结构如图1所示:

http://www.elecfans.com/uploads/allimg/171115/122F1F39_0.png

它主要支持的特性是:
  * 数据突发传输(burst transfer )
  * 数据分割传输(split transaction )
  * 流水线方式
  * 一个周期内完成总线主设备(master )对总线控制权的交接
  * 单时钟沿操作
  * 内部无三态实现
  * 更宽的数据总线宽度(最低32位,最高可达1024位,但推荐不要超过256位)

APB简介
APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。APB上的传输可以用如图2所示的状态图来说明。

http://www.52rd.com/User/Upload/2010012584516857.jpg

1) 系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。
2) 当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE 状态。
3) 系统进入ENABLE状态时,维持之前在SETUP 状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE 状态之后就已完成。之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。

ASB简介
ASB 总线适用于连接高性能的系统模块。它的读/写数据总线采用的是同一条双向数据总线,可以在某些高速且不必要使用AHB 总线的场合作为系统总线,可以支持处理器、片上存储器和片外处理器接口及与低功耗外部宏单元之间的连接。同AHB相比,它数据宽度要小一些,它支持的典型数据宽度为8位、16位、32位。它的主要特征如下:
  * 流水线方式
  * 数据突发传送
  * 多总线主设备
  * 内部有三态实现

AXI简介
AXI是高级扩展接口,在AMBA 3.0中提出,AMBA 4.0将其修改升级为AXI 4.0。AMBA 4.0包括AXI 4.0、AXI 4.0-lite、ACE 4.0、AXI 4.0-stream。AXI 4.0-lite是AXI的简化版本,ACE 4.0是AXI缓存一致性扩展接口,AXI 4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA进行以数据为主导的大量数据的传输应用。

关于AXI协议
  * AMBA AXI协议支持支持高性能、高频率系统设计。
  * 适合高带宽低延时设计
  * 无需复杂的桥就能实现高频操作
       * 能满足大部分器件的接口要求
       * 适合高初始延时的存储控制器
       * 提供互联架构的灵活性与独立性
       * 向下兼容已有的AHB和APB接口

       关键特点:
       * 分离的地址/控制、数据相位
       * 使用字节线来支持非对齐的数据传输
       * 使用基于burst的传输,只需传输首地址
       * 分离的读、写数据通道,能提供低功耗DMA
       * 支持多种寻址方式
       * 支持乱序传输
       * 允许容易的添加寄存器级来进行时序收敛

2 AXI架构
AXI协议是基于突发burst的传输,并且定义了以下5个独立的传输通道:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。地址通道携带控制消息用于描述被传输的数据属性,数据传输使用写通道来实现“主”到“从”的传输,“从”使用写响应通道来完成一次写传输;读通道用来实现数据从“从”到“主”的传输。
图 1-1 读架构

https://images2015.cnblogs.com/blog/513041/201508/513041-20150831111649372-566223981.png

图 1-2 写架构

https://images2015.cnblogs.com/blog/513041/201508/513041-20150831111720310-1232629813.png

AXI是基于VALID/READY的握手机制数据传输协议,传输源端使用VALID表明地址/控制信号、数据是有效的,目的端使用READY表明自己能够接受信息。
       * 读/写地址通道:读、写传输每个都有自己的地址通道,对应的地址通道承载着对应传输的地址控制信息。
       * 读数据通道:读数据通道承载着读数据和读响应信号包括数据总线和指示读传输完成的读响应信号。
       * 写数据通道:写数据通道的数据信息被认为是缓冲(buffered)了的,“主”无需等待“从”对上次写传输的确认即可发起一次新的写传输。写通道包括数据总线(8/16...1024bit)和字节线(用于指示8bit 数据信号的有效性)。
       * 写响应通道:“从”使用写响应通道对写传输进行响应。所有的写传输需要写响应通道的完成信号。

图 1-3 接口与互联

https://images2015.cnblogs.com/blog/513041/201508/513041-20150831150907622-248256385.png

AXI协议提供单一的接口定义,能用在下述三种接口之间:master/interconnect、slave/interconnect、master/slave。可以使用以下几种典型的系统拓扑架构:
       * 共享地址与数据总线
       * 共享地址总线,多数据总线
       * multilayer多层,多地址总线,多数据总线
在大多数系统中,地址通道的带宽要求没有数据通道高,因此可以使用共享地址总线,多数据总线结构来对系统性能和互联复杂度进行平衡。

寄存器片(Register Slices):每个AXI通道使用单一方向传输信息,并且各个通道直接没有任何固定关系。因此可以可以在任何通道任何点插入寄存器片,当然这会导致额外的周期延迟。使用寄存器片可以实现周期延迟(cycles of latency)和最大操作频率的折中;使用寄存器片可以分割低速外设的长路径

总结:

参见:
https://blog.csdn.net/ivy_reny/article/details/56274412
http://www.cnblogs.com/lkiller/p/4773235.html