AXI、AHB、APB 有什么区别?
更新时间:2026-09-21。问题驱动短答页。选型见 AMBA 总线选型指南,入门见 AMBA 入门,AXI 基础见 AXI4 基础。
一句话回答
三者都是 ARM AMBA 片上总线标准,但带宽和复杂度分三档:AXI 最高,用五个独立通道、读写分离,支持突发、多笔 outstanding 和乱序返回,挂 CPU、DDR、DMA 等高带宽主从;AHB 是上一代高性能共享总线,单一时钟沿、地址/数据相位流水,能突发但一笔必须按序、效率不如 AXI;APB 最简单,低速低功耗、无突发、通常两拍完成一次访问,专门挂 UART、I2C、配置寄存器这类慢速外设。
核心对照
| 维度 | AXI | AHB | APB |
|---|---|---|---|
| 定位 | 高性能 | 中高性能(早期) | 低速外设/配置 |
| 通道结构 | 读/写各地址+数据+响应共 5 通道,独立 | 共享总线,地址/数据相位流水 | 单一、无相位流水 |
| 突发 burst | 支持,长突发 | 支持 | 不支持,单次 |
| outstanding/乱序 | 多笔在途、ID 可乱序 | 基本按序 | 无 |
| 时钟/协议 | 边沿、valid/ready 握手 | 沿驱动 | 简单使能,通常 2 周期 |
| 典型挂载 | CPU、DDR 控制器、DMA、PCIe | 老款 MCU 主干、桥 | UART/I2C/SPI/定时器/寄存器 |
| 复杂度/功耗 | 高 | 中 | 低 |
典型系统怎么搭
现代 SoC 常用分层结构:高速主设备(多核 CPU、GPU、DMA、NPU)经 AXI 互连接到 DDR 和高速外设;中速或存量 IP 经 AXI/AHB 桥接入;大量慢速控制寄存器外设统一挂在 APB 上,由一个 AXI/APB 或 AHB/APB 桥驱动,见 AHB-APB 桥。
- AXI4-Lite:AXI 的精简版,只允许单次、32/64 位,用于寄存器配置(比 APB 快、但比全 AXI 简单),见 AXI4-Lite 从机。
- AXI4-Stream:没有地址、只有数据流,专门做连续数据流(视频包、网络、DMA),见 AXI-Stream 与 DMA。
- 国产/开源生态还有 TileLink、CHI 等,见 TileLink 与 AXI。
常见坑
- 给一堆只配寄存器的外设上全功能 AXI:面积和验证成本白白增加,用 APB 或 AXI-Lite 即可。
- 忽略 AXI 的 valid/ready 握手死锁:valid 不能等 ready、ready 不能等 valid 形成组合环,见 valid/ready。
- 假设 AXI 返回一定按序:乱序由 ID 决定,scoreboard 要按 ID 处理,见 outstanding 与 ID 排序。
- 把 AHB 的流水线相位当单周期传输,或 APB 桥时序没留够等待周期。
总结
AXI、AHB、APB 是 AMBA 里按性能与复杂度分档的三种总线:AXI 五通道、读写分离、支持突发 outstanding 与乱序,服务 CPU/DDR/DMA 等高带宽节点;AHB 是共享、地址数据相位流水、按序突发的上一代高性能总线;APB 是无突发、两周期访问的低速低功耗总线,专挂外设与配置寄存器,实际 SoC 用桥把三层缝合,并以 AXI4-Lite 做轻量寄存器口、AXI4-Stream 做无地址数据流。