APB总线
定义
APB总线是AMBA规范中定义的一种片上通信总线,全称先进外围总线(Advanced Peripheral Bus),与先进高性能总线(AHB)、先进系统总线(ASB)并列,是AMBA早期版本就包含的三种总线之一[1]。AMBA本身是面向片上系统(SoC)功能模块互联与管理的开放标准,由ARM公司推出并免费开放[2]。
在AMBA体系中,APB被定位为低功耗外设总线,设计目标是尽可能降低功耗并简化接口电路,因而被归入低速、低带宽的一侧[1]。它访问的对象通常是采用内存映射寄存器方式的外设,这类外设不具备高带宽接口,且多由程序控制读写[1]。
原理
典型APB系统由1个主设备、若干从设备和1个桥组成。APB桥是总线上的唯一主设备,同时又是上层系统总线上的从设备:它锁存来自AHB或ASB的地址、数据和控制信号,再经二级译码产生各外设的片选信号,从而完成协议转换[3]。因为只有单一主设备,APB不需要仲裁器,也不必传递请求与授权信号[3]。
APB的传输由状态机控制,分为IDLE、SETUP和ACCESS(或称ENABLE)3个状态[4]。总线空闲时处于IDLE;发起传输时PSEL拉高、PENABLE保持为0,进入SETUP并停留1个时钟周期;下一拍进入ACCESS,地址与控制信号维持不变而PENABLE置1,完成数据交换后返回IDLE。因此一次读或写固定占用2个时钟周期。
主要信号包括时钟PCLK、低有效复位PRESETn、地址PADDR、片选PSEL、使能PENABLE、读写方向PWRITE、写数据PWDATA与读数据PRDATA,地址与数据宽度最高均为32位[5]。所有信号都在时钟上升沿采样与传递,便于整合进常规设计流程[5]。后续版本又补充了PREADY、PSLVERR、PPROT和PSTRB等信号,以支持等待、错误响应、保护属性与字节选通[5]。
stateDiagram-v2
IDLE --> SETUP: PSEL=1, PENABLE=0
SETUP --> ACCESS: 下一时钟上升沿
ACCESS --> IDLE: 无新传输
ACCESS --> SETUP: 连续传输, PENABLE=0
发展历程
AMBA规范的早期版本发布于1996年,当时定义了ASB与APB两种总线;APB自始即作为连接低速外设的通道存在[6]。1999年发布的AMBA 2规范在引入AHB的同时,也给出了APB的修订版本(APB2),并确立了APB桥与AHB/ASB对接的典型系统结构[7]。
此后的演进主要体现为信号与功能的增补。有资料按版本梳理为:APB2为基础版本,APB3增加PREADY与PSLVERR,APB4再增加PPROT与PSTRB,分别对应2003年与2010年前后的规范更新[5]。在实现层面,有研究表明基于AMBA 3 APB的桥接设计相比基于AMBA 2 APB的设计可节省约6%的功耗和10%的面积[8]。
应用
APB最常见的用途是连接低带宽外设,如UART、定时器、键盘、I2C、SPI以及中断控制器等,这些模块对传输速率要求不高,但对功耗和接口面积敏感[9]。除了数据通路,APB还被广泛用于配置各类IP核的用户寄存器,软件通过内存映射地址写入控制字来完成配置[5]。
在Cortex-M3等处理器中,外部私有外设总线(External PPB)即基于AMBA的APB协议实现,用于挂接调试组件等不应被共享的系统设备;该接口还额外引入PADDR31信号,用于区分访问来自软件还是调试硬件[10]。由于APB外设处于非活动状态时可进入零功耗状态,它也有助于降低整颗芯片的静态功耗[3]。
局限
APB的性能上限很低。每次传输固定需要2个时钟周期,且不支持流水线,前后两笔传输不能重叠,因此单位时间内的吞吐量有限[5]。它也不支持突发传输,与支持突发和流水的AHB、AXI存在明显差距[3]。
结构上,APB属于单主设备总线,主设备只有APB桥,不具备仲裁机制,也无法像AHB那样挂接多个主模块[3]。基础版本的APB还没有独立的数据响应通道,读数据须在规定周期内给出;在时钟频率较高的系统中,桥内可能需要寄存读数据,这会额外增加等待状态,影响整体效率。
此外,PENABLE这类信号带有历史兼容色彩,其两拍时序部分源于早期工艺下难以在一个周期内完成写入的现实约束,这种设计被长期保留下来[5]。
参见
参考资料
- AMBA Specification [引用日期2026-10-29]
- AMBA [引用日期2026-10-29]
- AMBA、AHB、APB、AXI总线介绍及对比 [引用日期2026-10-29]
- AMBA-APB-PROTOCOL [引用日期2026-10-29]
- 深入理解AMBA总线(一)APB总线入门 [引用日期2026-10-29]
- google.com 上的网页 [引用日期2026-10-29]
- Arbiter Grants [引用日期2026-10-29]
- ieee.org 上的网页 [引用日期2026-10-29]
- ieee.org 上的网页 [引用日期2026-10-29]
- Advanced Microcontroller Bus Architecture [引用日期2026-10-29]