AHB/APB 与桥接:低速外设总线、APB bridge 怎么设计
更新时间:2026-09-06。本文是「集成电路大类 · 芯片设计」进阶层(intermediate)第七篇新正文(#09)。前两篇写了 AXI4-Lite 从机 和 AXI4 完整协议,但一个 SoC 里 90% 的外设(UART/SPI/I2C/Timer/GPIO)根本不需要五通道——它们挂在极简的 APB 上,靠一座桥接器接入骨干。入门铺垫:AMBA 入门、片上总线 AMBA 枢纽页。
本文要回答的问题
- AHB 和 APB 各是什么?为什么慢外设有自己的总线?
- APB 的 SETUP/ACCESS 两拍时序怎么走?PSEL/PENABLE 怎么配合?
- 一座 AXI-to-APB / AHB-to-APB bridge 内部做什么?
- 现代 SoC 的总线拓扑长什么样?
一、AHB:上一代高速骨干
AHB(Advanced High-performance Bus,AMBA 2.0)是 AXI 之前的高速总线:地址/数据/控制信号共用一组线、中央仲裁器选 master、靠 HREADY 信号握手(从机没准备好就拉低插入等待拍)、支持 burst 和流水线(地址相位与数据相位重叠)。它的局限是单通道共享——同一时刻只一对主从通信、无 outstanding、数据靠 mux 而非点到点。今天新设计的骨干几乎全用 AXI(见 AXI4 完整协议),但 AHB 仍常见于:老 IP 复用、低功耗 MCU、以及 AHB-to-APB bridge 的上游侧。写新 RTL 不必再学深 AHB,看懂波形、能对接 bridge 即可。
二、APB:为慢外设量身定的极简总线
APB(Advanced Peripheral Bus)的设计哲学是接口信号越少越好——外设开发者写从机最省事:
| 信号 | 含义 |
|---|---|
| PADDR / PWDATA / PRDATA | 地址、写数据、读数据(通常 32 位) |
| PWRITE | 1=写 0=读 |
| PSEL | 本从机被选中(decoder 译码产生) |
| PENABLE | 使能拍标志(见状态机) |
| PREADY(APB3 起) | 慢外设可拉低插入等待 |
| PSLVERR(APB3 起) | 从机错误响应 |
| PPROT / PSTRB(APB4 起) | 保护位、写字节使能 |
每笔传输固定两拍:SETUP 拍(PSEL 拉高、地址/控制/写数据就位,PENABLE=0)→ ACCESS 拍(PENABLE 拉高,从机在拍尾采样)。无 burst、无 outstanding、无多 master——一笔一笔来,每笔 ≥2 个 PCLK。对配置寄存器这种「软件偶尔写一下」的场景,这个简单到极致:APB 从机几乎就是「PSEL & PENABLE & PWRITE 时按地址写寄存器」。

三、Bridge:把高速事务翻译成 APB 两拍
AXI/AHB-to-APB bridge 是 SoC 集成里最常用的 IP 之一,内部做四件事:
- 协议转换:接收上游 AXI-Lite 五通道(或 AHB 地址相位),内部跑 APB SETUP→ACCESS 状态机;APB 每笔 ≥2 拍且无 outstanding,所以 bridge 要能反压上游——没完成就不拉起上游 ready(呼应 valid/ready 反压);
- 地址解码:bridge 管一段地址窗口(如 0x4000_0000–0x4FFF_FFFF),内部 APB decoder 再按高位产生各从机的 PSEL;
- 数据/响应回传:ACCESS 拍末尾采样 PRDATA(读)/PSLVERR,转成 AXI 的 RDATA/RRESP 或 BRESP(OKAY/SLVERR);
- 时钟处理:APB 外设常跑更低频率(如 25–100MHz PCLK vs 数百 MHz AXI),bridge 内做 CDC(或要求同频;跨频则内含同步 FIFO/握手同步器,原理见进阶 #10/#11)。
读写控制信号映射:PWRITE=AW/AR 方向,PSTRB←WSTRB(APB4),PPROT←AxPROT(TrustZone 安全位透传,安全外设只接受 secure 访问,呼应 硬件安全概念)。
四、现代 SoC 的总线拓扑
数据面(CPU↔DDR、DMA、NPU)走完整 AXI4(#08);配置面收窄成 AXI-Lite(#07)过 bridge 到 APB 外设岛。这样慢外设的接口面积最小、验证最简单、还能整体跑低频省电。UART/SPI/I2C 这些外设本身怎么写,是进阶 #29 常见外设 RTL 的内容。
五、APB 从机有多简单:几行 RTL 就是一个外设
对照进阶 #07 的 AXI-Lite 从机(五通道、两个暂存、响应状态机),APB 从机的全部接口逻辑就这几行:
// 写使能:选中 + ACCESS 拍 + 写传输
wire apb_wr = psel & penable & pwrite & pready;
always_ff @(posedge pclk or negedge presetn) begin
if (!presetn) begin
ctrl <= 32'h0; baud <= 32'h0;
end else if (apb_wr) begin
case (paddr[7:0])
8'h00: ctrl <= pwdata; // 控制寄存器
8'h04: baud <= pwdata; // 波特率配置
default: ; // 未实现地址可拉 pslverr
endcase
end
end
// 读:组合或寄存读出
assign prdata = (paddr[7:0] == 8'h00) ? ctrl
: (paddr[7:0] == 8'h04) ? baud : 32'h0;没有 valid/ready、没有 burst、没有 outstanding——外设设计者把精力全留给功能本身(UART 移位、SPI 时序),总线接口半页纸写完。集成 checklist:① PCLK/PRESETn 接入 bridge 侧(同频直连或跨频走 CDC);② decoder 地址窗口不与其他从机重叠;③ 安全属性 PPROT 与 安全岛 策略一致;④ 复位用桥接侧复位,保证 bridge 看到的从机状态确定;⑤ 多寄存器外设按 4KB 对齐划块,给地址映射留余量。
相关与延伸
上一篇:AXI4 完整协议。总线三连至此完成,下一批进入时序/CDC 线:跨时钟域 CDC 基础(#10)。入门铺垫:AMBA 入门、片上总线 AMBA;握手机制见 valid/ready 握手;寄存器设计见 寄存器表与地址解码 与 AXI4-Lite 从机;外设实例见进阶 #29。
总结
APB 是慢外设的极简总线(PSEL/PENABLE 两拍 SETUP→ACCESS、无 burst 无 outstanding),AXI/AHB-to-APB bridge 负责协议翻译、地址解码、响应回传和反压——现代 SoC 是「AXI 骨干扛数据 + bridge 挂 APB 外设岛管配置」的两层拓扑。