AMBA协议深度技术系列 · 2/6AHB-Lite流水线传输 · APB两相位 · 三协议横向对比AHB-LiteHTRANS四类型APB两相位AXI-to-APB桥
AXI是绝对主流,但AHB-Lite在低成本SoC和外设子系统里依然大量使用,APB更是每个SoC都离不开。面试官爱拿它们跟AXI做对比——答不上来就显得"只知其一不知其二"。
这篇讲清AHB/AHB-Lite和APB的核心机制,最后给一张三协议对比表。资料来源:ARM AMBA2 AHB规范(226页)、AMBA3 AHB-Lite规范(72页)、AMBA3/4/5 APB规范。
一、AHB与AHB-Lite:流水线系统总线
定位与演进
AHB(Advanced High-performance Bus)是AMBA2时代的高性能系统总线,后来在AMBA3里简化成AHB-Lite,AMBA5又增强成AHB5。一句话理解:AHB-Lite是"单主控、无仲裁"的简化版AHB,因为大多数子系统一个Master就够用了,没必要搞复杂的仲裁逻辑。
流水线传输:地址和数据差一拍
AHB-Lite最核心的特点是流水线——地址相位和数据相位重叠(差1拍)。也就是说,当前拍发下一个事务的地址,同时传上一个事务的数据。
这样设计的好处是总线不会在地址和数据之间空闲,吞吐量接近1拍1笔事务。代价是控制逻辑稍复杂——从设备要同时处理当前数据相位和下一地址相位。
HTRANS:四种传输类型
| HTRANS | 名称 | 含义 |
|---|---|---|
| 00 | IDLE | 主设备空闲,不需要传输 |
| 01 | BUSY | 主设备忙,插入等待拍(突发中间歇一下) |
| 10 | NONSEQ | 非连续传输,突发的第一拍(地址与前一笔无关) |
| 11 | SEQ | 连续传输,突发的后续拍(地址=上一拍+SIZE) |
面试怎么答HTRANS
记住一句话:NONSEQ是突发的头,SEQ是突发的身,BUSY是中间喘口气,IDLE是啥也不干。面试官让你画突发时序,第一拍画NONSEQ,后面全画SEQ就对了。
突发类型编码
| HBURST | 类型 | 说明 |
|---|---|---|
| 000 | SINGLE | 单次传输 |
| 001 | INCR | 不定长递增 |
| 010 | INCR4 | 4拍递增 |
| 011 | INCR8 | 8拍递增 |
| 100 | WRAP4 | 4拍回绕 |
| 101 | WRAP8 | 8拍回绕 |
| 110 | INCR16 | 16拍递增 |
| 111 | WRAP16 | 16拍回绕 |
从设备响应:HREADY + HRESP
HREADY:从设备就绪信号。拉低 = 插入等待周期(从设备慢,需要更多时间)
HRESP:4种响应——OKAY(正常)/ ERROR(错误)/ RETRY(重试,放弃总线再重来)/ SPLIT(拆分,让出总线等通知)
注意:RETRY和SPLIT只有AHB有
AHB-Lite是单主控,没有仲裁,所以不支持RETRY和SPLIT——这两个响应本质上是"让出总线给别的Master",单主控没这个需求。AHB5又加回了多主控和Exclusive访问支持。
Multi-layer AHB:并行互连
AMBA3引入的并行互连方案:每个Master有自己的AHB层(Layer),通过互连矩阵连到各Slave。好处是不同Master可以并行访问不同Slave,带宽成倍提升。每个Slave端口独立仲裁,可以用AHB-Lite协议(单主控视角,无需仲裁逻辑)。
二、APB:低功耗外设总线
定位
APB(Advanced Peripheral Bus)是低功耗、低复杂度、低引脚数的外设总线,专门挂UART、SPI、I2C、GPIO这些慢设备。每个SoC都离不开它——再快的CPU也得跟外设打交道。
两相位传输
APB的传输最简单,就两个相位,最少2个时钟周期完成一次传输:
Setup相位(1拍):PSEL=1, PENABLE=0,主设备发地址和控制信号
Access相位:PSEL=1, PENABLE=1,等PREADY=1完成传输。从设备慢就拉低PREADY插入等待
核心信号清单
| 信号 | 说明 | 引入版本 |
|---|---|---|
| PCLK / PRESETn | 时钟 / 复位(低有效) | 所有 |
| PSEL / PENABLE | 选择 / 使能(区分两相位) | 所有 |
| PWRITE / PADDR | 读写控制 / 地址 | 所有 |
| PWDATA / PRDATA | 写数据 / 读数据 | 所有 |
| PREADY | 就绪信号(插入等待) | AMBA3+ |
| PSLVERR | 错误响应(访问不存在地址、只读写) | AMBA3+ |
| PPROT | 保护控制(TrustZone隔离) | AMBA4+ |
| PSTRB | 写选通(字节级写) | AMBA4+ |
| PWAKEUP | 唤醒信号(低功耗) | AMBA5 |
为什么APB不做突发?
设计权衡
外设慢、数据量小,突发带来的吞吐量提升<复杂度代价。APB的卖点是简单——信号少、逻辑简单、功耗低。加突发就得加地址计数器、突发控制状态机,得不偿失。AMBA5 APB虽然支持了突发,但主流设计依然不用。
三、AXI vs AHB vs APB:一张表讲清
| 维度 | AXI4 | AHB-Lite | APB |
|---|---|---|---|
| 通道数 | 5个独立通道 | 单通道(地址+数据复用) | 单通道 |
| 握手 | VALID/READY(每通道独立) | HREADY(从设备控制) | PREADY |
| 突发 | 支持(最长256拍) | 支持(4/8/16拍) | 不支持(AMBA5可选) |
| 乱序 | 支持(事务ID) | 不支持 | 不支持 |
| 流水线 | 地址数据完全分离 | 地址数据重叠1拍 | 无流水线 |
| 最小周期 | 多拍(含握手) | 1拍(流水线满载) | 2拍 |
| 复杂度 | 高 | 中 | 低 |
| 典型场景 | CPU↔内存主干 | 子系统互连 | 低速外设 |
SoC里的典型用法
CPU核──AXI4──→ 互连──AXI4──→ DDR内存控制器
│
──AHB──→ 子系统(DMA/GPU)
│
──AXI-to-APB Bridge──→ APB外设
│
UART/SPI/I2C/GPIO
AXI-to-APB桥是面试常考的设计点:高速AXI事务进来,桥把它"翻译"成APB的两相位传输。桥内部需要处理时钟域转换(APB可能跑在不同时钟)、握手协议转换、等待周期插入等。
面试题预告(完整题库见文末资料包)
- AHB-Lite和AHB的区别?为什么用AHB-Lite?APB传输需要几个时钟周期?两个相位分别做什么?APB为什么不支持突发传输?AXI-to-APB桥的作用是什么?需要处理哪些问题?
下一篇预告 · 3/6
多核Cache一致性与ACE协议
单核时代Cache是CPU的私事。多核时代,同一块内存数据可能在多个Cache里有副本——一个核改了,另一个核还读旧值。ACE就是AMBA给出的硬件解法。
181