计算机基本知识AMBA总线介绍 一:背景介绍ARM 公司定义了 AMBA(Advaneed Microcontroller Bus Architecture) 总线规 范,它是一组针对基于ARM核的、片上系统之间通信而设计的标准协议因为 ARM处理器的广泛使用而拥有众多第三方支持,被 ARM公司90 %以上的合作伙伴采用在AMBA总线规范中,定义了 AHB , APB , ASB这3种总线最初的 AMBA总线是ASB和APB在它的第二个版本中,ARM引入了 AHB1) AHB : Advaneed High Performace Bus ,用于高性能系统模块的连接, 支持突发模式数据传输和事务分割;(2) ASB : Advaneed System Bus,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由 AHB总线替代;(3) APB : Advaneed Peripheral Bus,用于较低性能外设的简单连接,一般 是接在AHB或ASB系统总线上的第二级总线High-performanceARM processorHigh-bandwidthon-chip RAMHigh-bandwidthExternal MemoryInterfaceAHB or ASBUARTAPBUmer10 PIDMAbusmasterAHB to APB BndgeorASB io APB Bridge图1典型的基于AMBA总线的系统⑴一个以AMBA为架构的SOC,图1是个典型的系统架构,一般来说包含了 high-performanee 的 system bus — AHB 以及 low speed, low power 的 peripheral bus - APB。
System bus 是负责连接例如 ARM 之类的 embedded processor 以及 DMA con troller,on-chip memory 和其他 in terface,或其他需 要high bandwidth的模块而peripheral bus 则是用来连接系统的外围慢速模块, 其协议规则相对AHB来说较为简单,它以AHB之间则通过Bridge相连,期望能 減少 system bus 的 loading二:结构以及仲裁原理1 .AHB BusAHB System 是由 Master,Slave, Infrastructure 三部分所组成整个 AHB bus上的传输都是由master所发出,由slave负责回应而infrastructure 则由 arbiter ,master to slave multiplexor ,slave to master multiplexor , decoder, dummy slave,dummy master 所组成AHB总线互联结构图【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 BusAPB 协议什么简单, 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 中的 wishbone 总线仲裁原理一: Wishbone 信号线的说明Wishbone 总线连接线可分为:同步信号线 wb_clk_i ;复位信号线: wb_rst_i地址线 wb_addr_i[31:0] ;数据线:主 IP 核到从 IP 核的数据输出,输入 线 wb_dat_o[31:0] , wb_dat_i[31:0I ;控制线(常用)wb_cyc wb_stb, wb_sel[3:0], wb_we wb_ack , wb_err wb_cyc :总线周期信号,有效代表一个主设备请求总线使用权或者正 在占有使用权,当时不一定进行总线操作wb_stb :选通信号,有效代表主设备发起一次总线操作。
wb_cyc 是最 高层的控制信号,只有 wb_cyc 这个信号有效 wb_stb 才有效wb_sel[3:0] : 有效数据总线选择信号,标识当前操作数据总线上哪些 位是有效的wb_we: 写使能信号wb_ack , wb_err :主从设备间的操作结束方式信号, ack 表示成功, err 表示错误还有一些控制线比如 tgd,tga, tgc 等标签信号 我们的系统没有用上( 1)主设备发出的信号 包括数据,地址信号以及控制信号 wb_cyc wb_stb,wb_sel[3:0], wb_we主设备接收的信号 包括数据以及从设备反馈信号 wb_ack , ,wb_err(2)从设备与主设备正好相反从 设 备 发 出 的 信 号 有 数 据 信 号 以 及 给 主 设 备 的 反 馈 信 号 wb_ack , ,wb_err从设备接收 主设备发送过来的 数据,地址信号以及控制信号 wb_cyc wb_stb, wb_sel[3:0], wb_we二: Wishbone 的互联类型Wishbone 总线提供了四种不同的 IP 核互连方式:(1)点到点( point-to-point ),用于两 IP 核直接互连;(2) 数据流(data flow),用于多个串行IP核之间的数据并发传输;(3) 共享总线( shared bus ) ,多个 IP 核共享一条总线;(4) 交叉开关( crossbar switch ),同时连接多个主从部件,提高系统吞吐量。
点对点连接是最简单的一种连接方式;数据流连接方式主要用于数字信号 处理等应用场合; 共享总线, 它适用于系统中有两台或者多台主设备需要与一台 或则多台从设备通信的场合, 它只允许在任何一时刻最多只允许一对主设备和从 设备通过共享总线进行通信 而交叉开关互联方式中, 最多允许超过一对的主设 备和从设备对同时惊醒通信, 当然在任一时刻, 一台从设备只能与一台主设备进 行通信,两台主设备不能同时访问同一从设备为了实现共享总线及十字交叉方式的互联, Wishbone 总线用户必须自己实 现仲裁( Arbitrator) 逻辑模块系统中采用的是共享总线和交叉开关互联 2 者兼 有的连接方式,其总裁机制采用固定优先级,具体实现体现在源程序代码中。