AMBA AHB总线协议
23 Dec 2025 6880字 23分 次 Digital IC Design打赏作者 CC BY 4.0 (除特别声明或转载文章外)
1 前言
AHB(Advanced High-performance Bus),高级高性能总线,是一种高性能系统总线,支持多个总线主设备,并提供高带宽的数据传输能力。
特点:
- 突发传输(burst transfers);
- 分离事务(split transactions);
- 单周期总线主设备交接(single-cycle bus master handover);
- 单时钟沿操作(single-clock edge operation);
- 非三态实现(non-tristate implementation);
- 更宽的数据总线配置(64/128 位)。
一个AHB设计可以包含一个或多个总线主设备。通常,一个系统至少会包含处理器和测试接口作为主设备。此外,直接存储器访问(DMA)控制器或数字信号处理器(DSP)也常常作为总线主设备存在。外部存储器接口、APB桥以及任何内部存储器是最常见的AHB从设备。系统中的其他外设也可以作为AHB从设备。不过,低带宽外设通常挂接在APB上。
一个典型的AHB系统设计包含以下组件:
- AHB Master
- AHB Slave
- AHB Arbiter
- AHB Decoder
它的总线架构如下图所示:
版本:
- AMBA2 APB Specification(AHB)
- AMBA3 AHB-Lite Protocol Specification(AHB-Lite v1.0)
- Arm AMBA 5 AHB Protocol Specification(AHB5, AHB-Lite)
2 AHB interface
AHB信号列表:
| Source | Version | Signal | Width | Attribute | Description |
|---|---|---|---|---|---|
| Global | AHB | PCLK | 1 | Clock | APB的所有传输在HCLK的上升沿有效 |
| HRESETn | 1 | Reset | 低电平有效,通常直接连接到系统总线的复位信号 | ||
| Master | AHB | HADDR | 32 | Address | 32bit系统地址总线 |
| HTRANS | 2 | Transfer type | 指示当前传输的类型 2'b00:IDEL 2'b01:BUSY 2'b10:NONSEQ 2'b11:SEQ |
||
| HWRITE | 1 | Transfer direction | 1'b1: 写 1'b0: 读 |
||
| HSIZE | 3 | Transfer size | 指定传输宽度,2^n byte,n=0~7 | ||
| HBURST | 3 | Burst type | 3'b000:SINGLE 3'b001:INCR 3'b010:WRAP4 3'b011:INCR4 3'b100:WRAP8 3'b101:INCR8 3'b110:WRAP16 3'b111:INCR16 |
||
| HPROT | 4 | Protection control | HPROT[3]: 1=有高速缓存; 0=无高速缓存 HPROT[2]: 1=有缓冲; 0=无缓冲 HPROT[1]: 1=Privilleged; 0=User HPROT[0]: 1=Instruction; 0=Data |
||
| HWDATA | 32 | Write data bus | 写数据。建议最小数据总线宽度为32位;为了支持更高带宽的运行,可扩展。 | ||
| Decoder | AHB | HSELx | x | Slave select | 每个AHB Slave都有一个HSELx信号,由Decoder产生 |
| Slave | AHB | HRDATA | 32 | Read data bus | 读数据。建议最小数据总线宽度为32位;为了支持更高带宽的运行,可扩展 |
| HREADY | 1 | Transfer done | 当为高电平(HIGH)时,HREADY 信号表示总线上一次传输已完成。该信号可被驱动为低电平(LOW)以延长传输。 注:总线上的从设备需要将 HREADY 既作为输入信号,也作为输出信号。 | ||
| HRESP | 2 | Transfer response | 传输响应提供了关于传输状态的附加信息。 2'b00:OKAY 2'b01:ERROR 2'b10:RETRY 2'b11:SPLIT |
AHB仲裁器信号列表:
| Source | Version | Signal | Width | Attribute | Description |
|---|---|---|---|---|---|
| Master | AHB | HBUSREQx | 1 | Bus request | Master请求信号,最多支持16个master。 |
| HLOCKx | 1 | Locked transfers | 拉高时表示master锁定总线访问,变低之前不能把总线授予其它master。 | ||
| Arbiter | AHB | HGRANTx | 1 | Bus grant | 表明Master x是当前最高优先级的master;控制权会在一次传输结束、且HREADY为高电平时发生切换。 |
| HMASTER | 4 | Master number | 指示当前正在执行传输的master;支持SPLIT传输的slave借此判断是哪一个master正在尝试访问。HMASTER的时序与地址和控制信号的时序对齐。 | ||
| HMASTLOCK | 1 | Locked sequence | 表示当前master正在执行一段锁定的传输序列。该信号与HMASTER信号具有相同的时序 | ||
| Slave | AHB | HSPLITx | 16 | Split completion request | 用于指示仲裁器应允许哪些master重新尝试一次SPLIT传输。该SPLIT总线的每一位都对应一个单独的master。 |
AMBA AHB 协议中文全介绍(含 AMBA2 AHB、AMBA3 AHB‑Lite、AMBA5 AHB/AHB5)
说明:本文以 Arm 官方文档为主线整理:
- AMBA2:《AMBA Specification (Rev 2.0)》中的 AMBA AHB 章节(包含 arbitration、split transfers 等)。1
- AMBA3:《AMBA 3 AHB‑Lite Protocol Specification》(单主机 AHB‑Lite,含完整 transfers/时序图示)。2
- AMBA5:《AMBA AHB Protocol Specification》(AHB5/AHB‑Lite,新增 write strobe、atomicity、exclusive、user、parity 等章节)。3
- Arm AMBA 规格入口页面(各代规范入口与归类)。4
目录
-
- AHB 家族定位与关键特性
-
- 硬件架构与互连
-
- 接口与信号(含版本差异 HTML 表格)
-
- 统一时序模型:地址相位/数据相位、流水与等待
-
- 传输类型 HTRANS:IDLE/BUSY/NONSEQ/SEQ
- [6. 波形图(WaveDrom):所有典型传输与边界情况](#6-波形图waved)传输:INCR/WRAP/固定与不定长
- [8. 响应与错误:OKAY/ERROR + AHB2 的 RETRY/SPLIT](#8-响应与错误okayerror–ahb 与 HMASTLOCK
- [10. 数据线:宽度、端序、窄/宽互联
- [11. AHB5 扩展能力概览(写选通/全/独占/原子/User/奇偶)
- [12. 设计与验证检查清单(强烈建议)](#12
1. AHB 家族定位与关键特性
AHB(Advanced High‑performance Bus)是 AMBA 的高性能系统主干总线接口,典型系统中 AHB/ASB 作为主干,APB 作为低功耗外设总线,通过桥接器连接。1
AHB‑Lite(AMBA3)将接口简化为单主机模型,同时保留突发与高带宽特性,并提供 multi‑layer 方式构建多主机系统。2
AHB5(AMBA5 AHB)在 AHB‑Lite 基础上加入写选通、原子/独占、用户信号与奇偶保护等能力(见其目录与章节)。3
共同的核心特性(跨版本):
版本差异一眼看懂:
- AHB(AMBA2):协议本身包含多主机仲裁、以及 Split/Retry 等机制(目录包含 Arbitration、Split transfers)。1
- AHB‑Lite(AMBA3):接口上移除仲裁与 split/retry,主机侧为单 master。2
- AHB5(AMBA5):在 Lite 基础上扩展写选通、信号有效性规则、原子/独占、用户信号与奇偶校验保护等。3
2. 硬件架构与互连
2.1 AHB(AMBA2)典型结构(多主机)
AHB2 系统通常由 Master、Slave、Arbiter、Decoder 与 MUX 组成;目录中明确包含 Arbitration、Split transfers、以及 AHB arbiter/decoder 等组件描述。1
这种结构保证同一时刻只有一个 master 驱动地址/控制/写数据,但系统可包含多个 master 竞争总线。1
2.2 AHB‑Lite(AMBA3)典型结构(单主机)
AHB‑Lite 规范给出了单主机 AHB‑Lite 的 block diagram:由一个地址译码器和一个 slave‑to‑master 复用器组成互连逻辑。2
并指出 multi‑layer AHB‑Lite 可用于构建多主机系统(系统层互连扩展)。2
2.3 AHB5(AMBA5)结构视角
AHB5 文档仍包含 Bus interconnection / Decoder / Multiplexor 等章节,同时新增写选通、信号有效性、原子/独占、User、Parity 等章节。3
3. 接口与信号(含版本差异 HTML 表格)
3.1 信号分组(工程视角)
- 全局:HCLK、HRESETn。231
- 地址/控制:HADDR、HTRANS、HWRITE、HSIZE、HBURST、HPROT(以及锁定/安全/独占/属性等扩展)。231
- 写数据:HWDATA(AHB5 可能有 HWSTRB 等扩展)。32
- 读数据:HRDATA。231
- 响应/握手:HREADY/HREADYOUT、HRESP。231
- 译码选择:HSELx(decoder 输出)。231
- 仲裁/分段(AHB2):HBUSREQx/HGRANTx/HLOCKx/HMASTER/HSPLITx 等(见 AHB2 目录与组件章节)。1
3.2 AHB / AHB‑Lite / AHB5 差异(HTML 表格)
| 类别 | 代表信号/机制 | AHB(AMBA2) | AHB‑Lite(AMBA3) | AHB5(AMBA5 AHB) |
|---|---|---|---|---|
| 系统模型 | 主机数/仲裁 | 多主机 ✔(含 Arbitration 章节)[1](https://documentation-service.arm.com/static/5f916403f86e16515cdc3d71) | 单主机 ✔(multi-layer 扩展多主机)[2](http://eecs.umich.edu/courses/eecs373/readings/ARM_IHI0033A_AMBA_AHB-Lite_SPEC.pdf) | 以 Lite 互连模型为基础,强调信号有效性与新增属性[3](https://documentation-service.arm.com/static/6141bf0d674a052ae36ca811) |
| 分段/重试 | RETRY/SPLIT/HSPLITx | ✔(含 Split transfers)[1](https://documentation-service.arm.com/static/5f916403f86e16515cdc3d71) | ✘[2](http://eecs.umich.edu/courses/eecs373/readings/ARM_IHI0033A_AMBA_AHB-Lite_SPEC.pdf) | ✘(扩展集中在 strobe/atomic/exclusive 等)[3](https://documentation-service.arm.com/static/6141bf0d674a052ae36ca811) |
| 握手就绪 | HREADY/HREADYOUT | HREADY(完成/等待)[1](https://documentation-service.arm.com/static/5f916403f86e16515cdc3d71) | HREADY + HREADYOUT(典型实现)[2](http://eecs.umich.edu/courses/eecs373/readings/ARM_IHI0033A_AMBA_AHB-Lite_SPEC.pdf) | 同 Lite 互连形式,并强化 validity rules[3](https://documentation-service.arm.com/static/6141bf0d674a052ae36ca811) |
| 写选通 | HWSTRB | ✘[1](https://documentation-service.arm.com/static/5f916403f86e16515cdc3d71) | ✘[2](http://eecs.umich.edu/courses/eecs373/readings/ARM_IHI0033A_AMBA_AHB-Lite_SPEC.pdf) | △/✔(Write strobes 章节)[3](https://documentation-service.arm.com/static/6141bf0d674a052ae36ca811) |
| 原子/独占 | Atomicity/Exclusive | ✘[1](https://documentation-service.arm.com/static/5f916403f86e16515cdc3d71) | ✘[2](http://eecs.umich.edu/courses/eecs373/readings/ARM_IHI0033A_AMBA_AHB-Lite_SPEC.pdf) | △/✔(Atomicity、Exclusive Transfers 章节)[3](https://documentation-service.arm.com/static/6141bf0d674a052ae36ca811) |
| User/奇偶保护 | User signaling / Parity | ✘[1](https://documentation-service.arm.com/static/5f916403f86e16515cdc3d71) | ✘[2](http://eecs.umich.edu/courses/eecs373/readings/ARM_IHI0033A_AMBA_AHB-Lite_SPEC.pdf) | △/✔(User、Parity 章节)[3](https://documentation-service.arm.com/static/6141bf0d674a052ae36ca811) |
4. 统一时序模型:地址相位/数据相位、流水与等待
AHB‑Lite 明确:每次传输由地址相位(1 个周期)与数据相位(1 个或多个周期)构成,并且从设备不能要求延长地址相位,因此必须在该周期采样地址与控制信号。2
数据相位可由从端通过 HREADY/HREADYOUT 拉低来插入等待,从而延长。23
多笔传输可流水化:当前传输的数据相位与下一传输的地址相位重叠,但若当前传输插入等待,会“拖住”下一传输的地址相位(AHB‑Lite 提供 multiple transfers 与 waited transfers 图示)。2
5. 传输类型 HTRANS:IDLE/BUSY/NONSEQ/SEQ
AHB‑Lite 的 Transfers 章节包含 transfer type encoding 与 transfer type examples。2
AMBA2 AHB 目录也包含 Transfer type 小节。1
- IDLE:无有效传输。2
- BUSY:突发中插入暂停拍(保持 burst 语境)。2
- NONSEQ:单次传输或 burst 首拍。21
- SEQ:burst 后续拍,控制信息一致,地址按 HSIZE 递增或回卷。2
6. 波形图(WaveDrom):所有典型传输与边界情况
渲染提示:以下均为 WaveDrom JSON。许多 Markdown 渲染器支持 ` ```wavedrom ` 代码块直接渲染;若你的平台不支持,可使用 WaveDrom 在线/本地渲染器将 JSON 转 SVG/PNG(常见于 Sphinx、MkDocs、某些 GitBook 插件等)。
6.1 单次读(0 wait)
AHB‑Lite 文档包含 Read transfer 图示;下面用“地址相位 1 周期 + 下一周期数据相位完成”的方式表达。2
```wavedrom { “signal”: [ {“name”:”HCLK”, “wave”:”p…..”}, {“name”:”HRESETn”, “wave”:”1…..”}, {“name”:”HTRANS”, “wave”:”x3….”, “data”:[“NONSEQ”]}, {“name”:”HWRITE”, “wave”:”x0….”, “data”:[“READ”]}, {“name”:”HADDR”, “wave”:”x=….”, “data”:[“A”]}, {“name”:”HREADY”, “wave”:”1…..”}, {“name”:”HRDATA”, “wave”:”x.=…”, “data”:[“D(A)”]}, {“name”:”HRESP”, “wave”:”x0….”, “data”:[“OKAY”]} ]}