分类: Delphi
2012-05-08 10:48:52
一:背景介绍
ARM公司定义了AMBA(Advanced Microcontroller Bus Architecture)总线规范,它是一组针对基于ARM核的、片上系统之间通信而设计的标准协议。因为ARM处理器的广泛使用而拥有众多第三方支持,被ARM公司90%以上的合作伙伴采用。
在AMBA总线规范中,定义了AHB ,APB ,ASB这3种总线。最初的AMBA总线是ASB和APB。在它的第二个版本中,ARM引入了AHB。
(l)AHB:Advanced High Performace Bus,用于高性能系统模块的连接,支持突发模式数据传输和事务分割;
(2)ASB:Advanced System Bus,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由AHB总线替代;
(3)APB:Advanced PeriPheral Bus,用于较低性能外设的简单连接,一般是接在AHB或ASB系统总线上的第二级总线。
图1 典型的基于AMBA总线的系统[1]
一个以AMBA 为架构的SOC,图1是个典型的系统架构,一般来说包含了high-performance 的system bus – AHB以及low speed, low power 的peripheral bus - APB 。System bus 是负责连接例如ARM 之类的embedded processor 以及DMA controller,on-chip memory 和其他 interface,或其他需要high bandwidth的模块。而peripheral bus 则是用来连接系统的外围慢速模块,其协议规则相对AHB来说较为简单,它以AHB之间则通过Bridge 相连,期望能減少system bus 的loading。
二:结构以及仲裁原理
1 .AHB Bus
AHB System是由Master,Slave,Infrastructure 三部分所组成。整个AHB bus上的传输都是由master 所发出,由slave 负责回应。而infrastructure 则由arbiter ,master to slave multiplexor,slave to master multiplexor,decoder,dummy slave,dummy master 所组成。
AHB总线互联结构图【2】
AHB支持多主设备,所以需要仲裁器。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。
AHB Arbitration的机制简述如下:
当master 想要access bus 时候,master 将HBUSREQ signal(bus request) 给drive high(每个master 都有自己的HBUSREQ 信号),同一个时间可能有多个master 都想要access bus,因此arbiter 在HCLK 的rising edge 去sample 各个master 的HBUSREQ 信号后,需要决定哪个发出request 的master 有最高的priority(虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由设计工程师自行决定,AHB 并没有规定priority algorithm,其中两个最常用的算法是固定优先级算法和循环制算法),然后将此master 的HGRANT(bus grant signal由arbiter给出) 信号drive high,表示他可以access bus 了。若原本已有master 在access bus,arbiter会把原本master 的HGRANT 信号给drive LOW, 表示他已经丧失access 的权利。
当master 正在进行fixed-length burst transfer (固定长度的突发连续传输)时候,如果有更高priority 的master 发出了request,arbiter 可以等待burst 完成后再將bus grant 给新的master,也可以在burst进行中就中断原来 master 的bus 拥有权(ownership),让更高priority 的master 去access bus。而被中断的master就需要重新发出request,等待下一次Grant bus时候继续完成burst了。
若master想要进行的连续 transfer是不可以中断的 (比如在access shared memory 时候),则master 可以在request 时候,同时将HLOCK 给drive high,告诉arbiter我要进行的是不可被中断的transfer,则当master 获得access bus权力后 ,arbiter将不会把bus release给其它master,直到master自行将HLOCK 给drive LOW,arbiter才会进行arbitration 的动作【2】。
2.APB Bus
APB 协议什么简单,APB 主要是用在连接low-bandwidth外围设备上,例如UART等。它的bus架构不像AHB为Multi-Master,在APB里面唯一的的master就是APB Bridge(与AHB Bus 相接),因此不需要arbiter以及request/grant信号。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。
3 APB 桥
APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。
三;参考文献:
1 AMBA™ Specification (Rev 2.0)
2 Introfuction to AMBA Bus System 吴欣龙 工程院/系统晶片技术中心工程师
3 http://blog.163.com/meteora_wzh/blog/static/369626752007102752315710/