深度解读AMBA、AHB、APB、AXI总线介绍及对比

什么是amba?
现如今,集成电路芯片的规模越来越大。数字ic从基于时序驱动的设计方法,发展到基于ip复用的设计方法,并在soc设计中得到了广泛应用。在基于ip复用的soc设计中,片上总线设计是最关键的问题。
因而,业界出现了很多片上总线标准,amba是其中之一。
amba(advanced microcontroller bus architecture),是一种开放的协议,主要用于soc内部和asic,用于连接各种功能模块。简称amba总线,最早由arm设计推出。amba是相对使用比较广的片内总线技术,已成为一种流行的工业标准片上结构,如今不单单是arm专有的。
amba总线可以将risc处理器集成在其他ip芯核和外设中,它是有效连接ip核的“数字胶”,并且是arm复用策略的重要组件。它不是芯片与外设之间的接口,而是内核与芯片上其他元件进行通信的接口。
首先,让我们按照它的发布版本来认识一下它。
amba版本1规范定义:asb( advanced system bus)与 apb(advanced peripheral bus);
amba版本2规范定义:ahb(advanced high-performance bus)、asb( advanced system bus)与 apb(advanced peripheral bus);
amba版本3规范定义:axi v1.0(advanced extensible interface)、ahb-lite v1.0(advanced high-performance bus lite)、 apb v1.0(advanced peripheral bus)与atb v1.0(advanced trace bus);
amba版本4规范定义:ace(axi coherency extensions)、ace-lite(axi coherency extensions lite)、axi4(advanced extensible interface 4) 、axi4-lite(advanced extensible interface 4 lite)、axi4-stream v1.0(advanced extensible interface 4 stream)、apb v2.0(advanced peripheral bus)与atb v1.1(advanced trace bus);
它们之间的区别在哪里呢?让我们来依次介绍它们。
ahb (advanced high-performance bus) 高级高性能总线
apb (advanced peripheral bus) 高级外设总线
asb (advanced system bus) 高级系统总线
axi (advanced extensible interface) 高级可拓展接口
其中axi是在amba3.0的协议中增加的,可以用于arm和fpga的高速数据交互,剩下的三种是在amba2.0协议中定义的总线标准。
ahb介绍
ahb主要用于高性能模块(如cpu、dma和dsp等)之间的连接,作为soc的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位~128位总线宽度;支持字节、半字节和字的传输。
ahb 系统由主模块、从模块和基础结构(infrastructure)3部分组成,整个ahb总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器(arbiter)、主模块到从模块的多路器、从模块到主模块的多路器、译码器(decoder)、虚拟从模块(dummy slave)、虚拟主模块(dummy master)所组成。其互连结构如下图所示。
ahb的组成
master(主控制器):能够发起读写操作,提供地址和控制信号,同一时间只有1个master会被激活。
slave(从设备):在给定的地址范围内对读写操作作响应,并对master返回成功、失败或者等待等状态。
arbiter(仲裁器):负责保证总线上一次只有1个master在工作。仲裁协议是规定的,但是仲裁算法可以根据应用决定。
decoder(译码器):负责对地址进行解码,并提供片选信号到各slave。
ahb基本信号
haddr:32位系统地址总线;
htrans:m指示传输状态,nonseq、seq、idle、busy;
hwrite:传输方向1-写,0-读;
hsize:传输单位;
hburst:传输的burst类型;
hwdata:写数据总线,从m写到s;
hready:s应答m是否读写操作传输完成,1-传输完成,0-需延长传输周期。需要注意的是hready作为总线上的信号,它是m和s的输入;同时每个s需要输出自hready。所以对于s会有两个hready信号,一个来自总线的输入,一个自己给到多路器的输出;
hresp:s应答当前传输状态,okay、error、retry、split;
hrdata:读数据总线,从s读到m;
ahb基本传输
两个阶段
地址周期(ap),只有一个cycle
数据周期(dp),由hready信号决定需要几个cycle
流水线传送
先是地址周期,然后是数据周期
ahb突发传输与axi突发传输的特点
ahb协议需要一次突发传输的所有地址,地址与数据锁定对应关系,后一次突发传输必须在前次传输完成才能进行;
axi只需要一次突发的首地址,可以连续发送多个突发传输首地址而无需等待前次突发传输完成,并且多个数据可以交错传递,此特征大大提高了总线的利用率;
ahb总线与axi总线均适用于高性能、高带宽的soc系统,但axi具有更好的灵活性,而且能够读写通道并行发送,互不影响;更重要的是,axi总线支持乱序传输,能够有效地利用总线的带宽,平衡内部系统。因此soc系统中,均以axi总线为主总线,通过桥连接ahb总线与apb总线,这样能够增加soc系统的灵活性,更加合理地把不同特征ip分配到总线上。
apb介绍
apb主要用于低带宽的周边外设之间的连接,例如uart、1284等,它的总线架构不像ahb支持多个主模块,在apb里面唯一的主模块就是apb 桥。
apb总线协议包含一个apb桥,它用来将ahb,asb总线上的控制信号转化为apb从设备控制器上可用信号。apb总线上所有的外设都是从设备,这些从设备有以下特点:
a 接收有效的地址和控制访问
b 当apb上的外设处于非活动状态时,可以将这些外设处于0功耗状态
c 译码器可以通过选通信号,提供输出时序(非锁定接口)
d 访问时可执行数据写入
其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。apb上的传输可以用下图所示的状态图来说明。
1、系统初始化为idle状态,此时没有传输操作,也没有选中任何从模块。
2、当有传输要进行时,pselx=1,,penable=0,系统进入setup状态,并只会在setup状态停留一个周期。当pclk的下一个上升沿到来时,系统进入enable状态。
3、系统进入enable状态时,维持之前在setup状态的paddr、psel、pwrite不变,并将penable置为1。传输也只会在enable状态维持一个周期,在经过setup与enable状态之后就已完成。之后如果没有传输要进行,就进入idle状态等待;如果有连续的传输,则进入setup状态。
apb读写传输
一次传输过程中,psel保持两个周期不变,且在此期间,paddr、pwrite也保持不变,penable在psel有效的第2个周期有效。为了降低功耗,地址信号和写信号将在传输后不再改变,直到发生下一次传输。协议仅要求使能信号有个规则的跳变,背靠背传输情况下,选择和写信号可能有小跳变。
读传输时各信号的时序和写时一样,在读传输中,从机必须在enable周期提供数据,数据在enable末尾的时钟上升沿被采样。
asb介绍
amba2.0 规范中的asb总线适用于连接高性能的系统模块。它的读/写数据总线采用的是同一条双向数据总线,可以在某些高速且不必要使用ahb 总线的场合作为系统总线,可以支持处理器、片上存储器和片外处理器接口及与低功耗外部宏单元之间的连接。
asb支持高性能处理器,片上内存,片外内存提供接口和慢速外设。高性能,数据传输,多总线主控制器,突发连续传输。asb总线是位于apb总线架构之上的用于高性能的总线协议,它有如下特点:
a 突发连续传输
b 单管道数据传输
c 多总线主控制器
axi介绍
axi是一种总线协议,该协议是arm公司提出的amba3.0中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。amba4.0将其修改升级为axi4.0。
amba4.0 包括axi4.0、axi4.0-lite、ace4.0、axi4.0-stream。
axi4.0-lite是axi的简化版本,ace4.0 是axi缓存一致性扩展接口,axi4.0-stream是arm公司和xilinx公司一起提出,主要用在fpga进行以数据为主导的大量数据的传输应用。
axi协议是基于burst的传输,并且定义了5个独立的传输通道:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。
地址通道携带控制消息,用于描述被传输的数据属性;数据传输使用写通道来实现master到slave的传输,slave使用写响应通道来完成一次写传输;读通道用来实现数据从slave到master的传输。
由若干master设备和slave设备通过一些形式的interconnect组成的典型的系统如下图所示,axi总线即可作为其中的interface,实现数据通信。
axi的性能
axi总线是一种多通道传输总线,将地址、读数据、写数据、握手信号在不同的通道中发送,不同的访问之间顺序可以打乱,用busid来表示各个访问的归属。主设备在没有得到返回数据的情况下可发出多个读写操作。读回的数据顺序可以被打乱,同时还支持非对齐数据访问。
axi总线还定义了在进出低功耗节电模式前后的握手协议。规定如何通知进入低功耗模式,何时关断时钟,何时开启时钟,如何退出低功耗模式。这使得所有ip在进行功耗控制的设计时,有据可依,容易集成在统一的系统中。
axi的特点
单向通道体系结构-信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。
支持多项数据交换-通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
独立的地址和数据通道-地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
增强的灵活性-axi技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用axi技术。
axi读写数据
写入数据
1、master通过写地址通道发出写入请求;
2、master通过写数据通道发送写入的数据;
3、slave在完成写入动作后(写数据通道last),通过写响应通道发回确认信息。
读取数据
1、master通过读地址通道发出读取请求;
2、slave通过读数据通道将读取的数据传给master。
握手过程
5个传输通道均使用valid/ready信号对传输过程的地址、数据、控制信号进行握手。使用双向握手机制,传输仅仅发生在valid、ready同时有效的时候。
通道顺序
axi协议要求通道间满足如下关系:
-写响应必须跟随最后一次burst的的写传输
-读数据必须跟随数据对应的地址
-通道握手信号需要确认一些依赖关系
通道握手信号的依赖关系
为防止死锁,通道握手信号需要遵循一定的依赖关系。
1、valid信号不能依赖ready信号。
2、axi接口可以等到检测到valid才断言对应的ready,也可以检测到valid之前就断言ready。
单箭头指向的信号能在箭头起点信号之前或之后断言;双箭头指向的信号必须在箭头起点信号断言之后断言。
突发传输机制
突发传输,一般也称为数据突发,其在通信领域中一般指在短时间内进行相对高带宽的数据传输。
axi 总线中的突发传输(burst transaction)是指,在地址总线上进行一次地址传输后,进行多次数据传输。第一次地址传输中的地址作为起始地址,根据突发传输类型的不同,后续数据的存储地址在起始地址的基础上递增(incr 模式);或者首先递增,到达上限地址后回到起始地址,继续递增(wrap 模式);又或者后续数据都将不断写入起始地址,刷新起始地址上的数据。(fixed 模式)
突发传输的流程
a.主机在读/写地址通道写入起始地址(axaddr)以及突发传输的长度(axlen)、宽度(axsize)、类型(axburst)等信息;
b.从机将在起始地址开始,依次接收主机传输的写数据,或者读取连续地址上的数据,作为读数据传输给主机。
突发传输长度
突发传输长度(burst length),指一次突发传输中包含的数据传输(transfer)数量,在协议中使用axlen信号控制(awlen和arlen)。
突发传输长度在不同的模式下有一些限制,包括:
a.对于wrap模式,突发传输长度仅能为2,4,8,16
b.在一次突发传输中,地址不能跨越4kb地址边界
c.一次突发传输不能在完成所有数据传输前提前结束
突发传输宽度
突发传输宽度(burst size),指传输中的数据位宽,具体地,是每周期传输数据的字节数量,在协议中使用axsize信号控制(awsize和arsize)。
突发传输数据宽度不能超过数据总线本身的位宽。而当数据总线位宽大于突发传输宽度时,将根据协议的相关规定,将数据在部分数据线上传输。
突发传输类型
突发传输类型(burst type),类型共有 3 种,分别为 fixed,incr 以及 wrap。使用 2 位二进制表示,在协议中使用 axburst信号控制(awburst和arburst)。
fixed:突发传输过程中地址固定,用于fifo访问。
incr:增量突发,传输过程中,地址递增。增加量取决axsize的值。
wrap:回环突发,和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是2,4,8,16次传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐。回环边界等于(axsize*axlen)。
ahb、axi、apb的区别与联系
ahb:主要是针对高效率、高频宽及快速系统模块所设计的总线,它可以连接如微处理器、芯片上或芯片外的内存模块和dma等高效率模块。
apb:主要用在低速且低功率的外围,可针对外围设备作功率消耗及复杂接口的最佳化。apb在ahb和低带宽的外围设备之间提供了通信的桥梁,所以apb是ahb或asb的二级拓展总线。
axi:高速度、高带宽,管道化互联,单向通道,只需要首地址,读写并行,支持乱序,支持非对齐操作,有效支持初始延迟较高的外设,连线非常多。
amba的应用
大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如cpu,dsp等;从模块是接受命令并做出反应的模块,如片上的ram,ahb/apb 桥等。
另外,还有一些模块同时具有两种属性,例如直接存储器存取(dma)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。
虽然仲裁规范是amba总线规范中的一部分,但具体使用的算法由rtl设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。ahb总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅arm公司推出的multi-layer ahb规范)。apb 桥既是apb总线上唯一的主模块,也是ahb系统总线上的从模块。其主要功能是锁存来自ahb系统总线的地址、数据和控制信号,并提供二级译码以产生apb外围设备的选择信号,从而实现ahb协议到apb协议的转换。
amba ahb循环级建模标准是完全公开和免费的。
amba总线的仲裁
如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。
而对于amba总线仲裁的相关应用,我们来看一个实例,有关于对应的优先顺序的设置:
即,对应的arb寄存器,可以设置,ahb总线上面的数据的优先级
armi:arm的指令
armd:arm的数据
dmac:dma控制器
bridge:ahb/apb 桥(bridge)
可以通过配置,决定他们的优先级顺序。


2019年即将引领汽车座舱电子发展的三大主流趋势
小米6什么时候发布?小米6最新消息:后天发布!小米6真机谍照再曝,原来是这样!
广州市黄埔区正式发布了5G产业化10条发展办法
如何解决破碎机轴承跑内圈问题
FPC柔性线路板最主要的特性有哪些
深度解读AMBA、AHB、APB、AXI总线介绍及对比
华为mate10什么时候上市?华为mate10最新消息:华为Mate10将让iphone8无处售卖!再见,苹果
abb变频器故障复位怎么办
家用游戏机的控制器接口类型
美国从EDA下绊子,3nm工艺关键技术GAA将与中国无缘?
人工智能地缘政治和数字主权的崛起
通俗解释嵌入式的系统概念
瑞德磁电多点发力 助力新能源降本增效
八类网线和其他网线的区别
最新一代凯美瑞颜值如此高,颇有雷克萨斯LC跑车的神韵!
全面屏机型:三星Galaxy S9未正式面世前,苹果iPhoneX将能长舒一口气
ip核设计电路特点
凌华科技四轴与八轴运动控制卡PCI-8254/8258 具备高性能的运动控制表现
物联网世界中的可穿戴设备开发
台积电将释放更多产能为支持索尼提高PS5的产能