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
和
Test Methodology
。
AHB
的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。
AMBA
已不仅是一种总线,更是一种带有接口模块的互连体系。下面将简要介绍比较重要的
AHB
和
APB
总线。
基于
AMBA
的片上系统
一个典型的基于
AMBA
总线的系统框图如图3所示。
大多数挂在总线上的模块
(
包括处理器
)
只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如
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)3
部分组成,整个
AHB
总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器
(arbiter)
、主模块到从模块的多路器、从模块到主模块的多路器、译码器
(decoder)
、虚拟从模块
(dummy Slave)
、虚拟主模块
(dummy Master)
所组成。其互连结构如图
1
所示。
=================================================================
=================================================================
APB
简介
APB
主要用于低带宽的周边外设之间的连接,例如
UART
、
1284
等,它的总线架构不像
AHB
支持多个主模块,在
APB
里面唯一的主模块就是
APB
桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。
APB
上的传输可以用如图2所示的状态图来说明。
1)
系统初始化为
IDLE
状态,此时没有传输操作,也没有选中任何从模块。
2)
当有传输要进行时,
PSELx
=
1
,
PENABLE
=
0
,系统进入
SETUP
状态,并只会在
SETUP
状态停留一个周期。当
PCLK
的下一个上升沿时到来时,系统进入
ENABLE
状态。
3)
系统进入
ENABLE
状态时,维持之前在
SETUP
状态的
PADDR
、
PSEL
、
PWRITE
不变,并将
PENABLE
置为
1
。传输也只会在
ENABLE
状态维持一个周期,在经过
SETUP
与
ENABLE
状态之后就已完成。之后如果没有传输要进行,就进入
IDLE
状态等待;如果有连续的传输,则进入
SETUP
状态。
|