1. 关于AHB协议
AMBA AHB是一种适用于高性能可综合设计的总线接口。它定义了组件之间的接口,例如master、互连和slave。
AMBA AHB实现了高性能、高时钟频率系统所需的特性,包括:
- 突发传输(Burst transfers)。
- 单时钟边沿操作(Single clock-edge operation)。
- 非三态实现(Non-tristate implementation)。
- 宽数据总线配置,64、128、256、512和1024位。
最常见的AHB slave包括内部存储设备、外部存储器接口和高带宽外设。尽管低带宽外设也可以作为AHB slave,但由于系统性能原因,它们通常位于AMBA高级外设总线(APB)上。使用一个称为APB_bridge的AHB slave,在性能更高的AHB和APB之间进行桥接。
图1-1显示了一个具有单个master的AHB系统设计,其中包括AHB master和三个AHB slave。总线互连逻辑由一个地址解码器和一个slave到master的多路复用器组成。解码器监控来自master的地址,以便选择适当的slave,并将相应的slave输出数据路由回master。
AHB还通过使用一个提供仲裁和路由信号的互连组件来支持多master设计,这些信号来自不同的master到适当的slave。
注意:图1-1仅显示了主要的地址和数据总线以及典型的数据路由。并非所有信号都显示。
1.1 master
一个master提供地址和控制信息以启动读写操作。
图1-2显示了一个master接口。
注意 图1-2中的图未包括在AHB5中定义的额外信号。
1.2 slave
slave响应系统中master发起的传输。slave使用解码器提供的HSELx选择信号来控制它何时响应总线传输。
slave向master反馈以下信号:
- 总线传输的完成或传输时间的扩展。
- 总线传输的成功或失败。
图1-3 显示了一个slave接口。
注意 图1-3中的图表未包括在AHB5中定义的额外信号。
1.3 互连
互连组件在系统中提供master和slave之间的连接。
单个master系统只需要使用解码器和多路复用器,如下所述。
多master系统需要使用互连,该互连提供仲裁以及将来自不同master的信号路由到适当的slave。这种路由对于地址、控制和写数据信号是必需的。
1.3.1 解码器
该组件对每个传输的地址进行解码,并为参与传输的slave提供选择信号。它还为多路复用器提供控制信号。 在所有使用两个或更多slave的实现中,都需要一个集中的解码器。
1.3.2 多路复用器
需要一个slave到master的多路复用器来多路复用从slave到master的读数据总线和响应信号。解码器控制多路复用器。 在所有使用两个或更多slave的实现中,都需要一个集中的多路复用器。
2. AHB修订
本规范的上一版被称为Issue A,描述的版本称为AHB-Lite。 本文档的这一版是Issue B,描述了:
- AHB-Lite 这个版本与Issue A中定义的版本相同。
- AHB5 这个版本提供了额外的能力,使用属性来声明新的能力。如果一个属性没有被声明,它被认为是False(假)。
新属性包括:
- Extended_Memory_Types(扩展内存类型)。
- Secure_Transfers(安全传输)。
- Endian(字节序)。
- Stable_Between_Clock(时钟之间稳定)。
- Exclusive_Transfers(独占传输)。
- Multi_Copy_Atomicity(多副本原子性)。
本次规范修订还包含了以下主题的额外信息:
- Locked transfers(锁定传输)。
- Multiple slave select(多个从设备选择)。
- Single-copy atomicity size(单副本原子性大小)。
- User signaling(用户信号)。
在本规范中,术语AHB用于指代AHB-Lite和AHB5。 除非另有说明,信号对于AHB-Lite和AHB5都是通用的。
3. 操作
master通过驱动地址和控制信号来启动一次传输。这些信号提供了关于地址、方向、传输宽度以及传输是否是突发传输的一部分的信息。传输可以是:
- 单个传输(Single)。
- 不在地址边界处回环的增量突发(Incrementing bursts that do not wrap at address boundaries)。
- 在特定地址边界处回环的突发(Wrapping bursts that wrap at particular address boundaries)。
写数据总线将数据从master传输到slave,而读数据总线则将数据从slave传输到master。
每次传输包括:
- 地址阶段(Address phase) 一个地址和控制周期。
- 数据阶段(Data phase) 数据的一个或多个周期。
slave不能要求延长地址阶段,因此所有slave都必须能够在这段时间内采样地址。然而,slave可以通过使用HREADY信号来请求master延长数据阶段。 当HREADY信号为低(LOW)时,会在传输中插入等待状态,并允许slave有额外的时间来提供或采样数据。
slave使用HRESP信号来指示传输的成功或失败。