AMBA AHB总线协议
23 Dec 2025 2077字 7分 次 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。 |