VERDVANA'S BLOG Verdvana

AMBA AHB总线协议

AMBA


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

        它的总线架构如下图所示:

img1

        版本:


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

目录

    1. AHB 家族定位与关键特性
    1. 硬件架构与互连
    1. 接口与信号(含版本差异 HTML 表格)
    1. 统一时序模型:地址相位/数据相位、流水与等待
    1. 传输类型 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

共同的核心特性(跨版本):

  • 两阶段流水:地址/控制相位 + 数据相位(数据相位可延长)。23
  • 突发传输(Burst):固定长度与不定长、递增与回卷。21
  • 非三态实现:依赖解码器与多路复用器实现路由。213

版本差异一眼看懂:

  • 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”]} ]}