• 正文
  • 相关推荐
申请入驻 产业图谱

AHB与APB系统总线与外设总线

8小时前
181
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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)是低功耗、低复杂度、低引脚数的外设总线,专门挂UARTSPII2CGPIO这些慢设备。每个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给出的硬件解法。

相关推荐