AMBA AHB介绍
AHB是为提出高性能可综合设计的要求而产生的新一代AMBA总线。它是一种支持多总线主机和提供高带宽操作的高性能总线。
AMBA AHB实现了高性能,高时钟频率系统的以下特征要求:
- 突发传输
- 分块处理
- 单周期总线主机移交
- 非三态执行
- 更宽的数据总线架构(64位或者128位)
这条高级总线和当今的APB能够有效的桥接确保了能够方便集成任何现有的设计。
AMBA AHB的设计可能包含一个或者多个主机,一个典型的系统将至少包含处理器和测试接口。然而,将直接数据存取(DMA)或者数字信号处理器(DSP)包含作总线主机也很普通。
外部储存器接口,APB桥和任何内部储存器是最常见的AHB从机。然而,低带宽的外设通常都是连接到APB上。
典型的AMBA AHB系统设计包含以下的成分:
- AHB主机 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。
- AHB从机 总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
- AHB仲裁器 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。
AHB必须包含一个仲裁器,尽管在单总线主机系统中这显得并不重要。 - AHB译码器 用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。
所有AHB执行都必须仅要求一个中央译码器。
信号名称
信号名称中用一个小写的n表示该信号低电平有效,否则信号的名称总是用大写字母来表示。
测试信号有一个前缀T而与总线类型无光。
H 表示一个AHB信号。
例如:HREADY是用来指示AHB部分数据传输完毕的信号。该信号高电平有效。
P 表示一个APB信号
例如:PCLK是APB使用的主时钟。
AMBA AHB信号列表
AMBA AHB也有许多信号请求支持多主机操作。许多这些仲裁信号用于点对点连接,表中后缀x用来表示信号来自模块x。
基于AMBA AHB的典型微控制器
基于AMBA的微控制器典型得由一个高性能系统中枢总线组成,能够支持外部储存带宽,包括CPU,片上储存器和其他直接数据存取(DMA)设备,加上一个桥接器连接到较窄的挂接这较低带宽外设的APB总线。
总线互连
AMBA AHB总线协议设计使用一个中央多路选择器互连方案。使用该方案所有总线主机设备输出地址和控制信号来指示它们想执行的传输同时仲裁器决定哪一个主机能够将它的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选中来自传输中所包含从机的适当信号。
AMBA AHB操作概括
在一次AMBA AHB传输开始之前总线主机必须被授予访问总线。这个过程开始于总线主机向仲裁器断言一个请求信号。仲裁器指示主机何时能够被授予使用总线。被授予的总线主机通过驱动地址和控制信号来发起一次AMBA AHB传输。这些信号提供关于地址、方向和传输宽度的信息,以及表示传输类型是否为一次突发传输的部分。允许有两种不同类型的突发传输:
- 增量突发,在地址边界处不回环
- 回环突发,在特定的地址边界上回环
写数据总线用来将数据从主机传输到从机上,而读数据总线用来将数据从从机传输到主机上。
每次传输包含:
- 一个地址和控制周期
- 一个或多个数据周期
地址不长期有效,所以所有从机必须在这个时段(传输地址时)采样地址。然而,通过HREADY信号可以延长数据。当该信号为低时导致在传输中插入等到状态同时允许从机有额外的时间提供或者采样数据。
在传输中从机通过使用响应信号表示状态,HRESP[1:0]:
- OKAY响应用来表示传输进展正常并且当HREADY变高时表示传输成功完成。
- ERROR响应表示发生了一个传输错误并且传输失败。
- RETRY和SPLIT两个传输响应都表示传输不能立刻完成,但是总线主机应该继续尝试传输。
在常规操作中主机被允许在仲裁器授予另一个主机访问总线之前完成一个特定突发的所有传输。然而,为了避免过多的仲裁延时可能允许仲裁器打断一个突发并且这种情况下主机必须(申请)重新仲裁总线以完成剩下的突发传输。
基本传输
AHB传输包含两个截然不同的部分:
- 地址相位,只持续单个周期
- 数据相位,可能需要多个周期。这通过使用HREADY信号实现。
在这个没有等待状态的简单传输中:
- 主机在HCLK是上升沿之后将地址和控制信号驱动到总线上
- 然后在时钟的下一个上升沿从机采样地址和控制信息
- 在从机采用了地址和控制信号后能够开始驱动适当的响应并且该响应被总线主机在第三个时钟的上升沿采样。
这个简单的例子演示了在不同的时钟阶段传输的地址和数据相位是如何产生的。事实上任何传输的地址相位在前一次传输的数据相位期间出现。这种地址和数据的交叠是总线传输通道的基本性质同时允许高性能的操作。同时仍然给从机提供足够的时间来产生传输响应。
从机也可能插入等待周期到任意传输中,这样扩展了传输完成允许的附加时间。
- 注意:
- 对写操作而言总线主机必须保持数据在整个扩展周期中稳定
- 对读传输从机没有必要提供有效数据直到传输将要结束
当传输以这种方式扩展时随后的传输将会在有地址相位扩展的副作用。表示了三次传输到无关的地址A、B和C
- 到地址A和C的传输都是零等待状态
- 到地址B的传输是一个等待状态
- 传输到地址B的扩展数据相位对传输到地址C的扩展地址相位有影响
传输类型
每个传输都可以被分类为四个不同类型之一,如HTRANS[1:0]信号所表示的状态
- 第一个传输是一次突发的开始,所以传输类型为非连续
- 主机不能立刻执行突发的第二次传输,所以主机使用了忙传输来延时下一次传输的开始。在这个例子中主机在它准备还突发的下一次传输之前仅请求了一个忙周期,下一次传输的完成没有等状态。
- 主机立刻执行突发的第三次传输,但是这时从机不能完成(传输)并用HREADY来插入一个等待状态
- 突发的最后一个传输以无等待状态完成
突发操作
AMBA AHB协议定义了4、8和16拍突发,也有未定长度的突发和信号传输。协议对增量和回环都支持:
- 增量突发访问连续地址并且突发中的每次传输地址仅是前一次地址的一个增量
- 对于回环突发,如果传输的起始地址并未和突发(x拍)中字节总数对齐那么突发传输地址将在达到边界处回环。例如,一个四拍回环突发的字(4字节)访问将在16字节边界回环。因此,如果传输的起始地址是0x34,那么它将包含四个到地址0x34、0x38、0x3c和0x30
突发信息通过使用HBURST[2:0]并且8中可能的类型在中定义如下:
突发禁止超过1KB的地址边界。因此重要的是主机不要尝试发起一个将要超过这个边界的定长增量突发。