声明:本文章是本人学习AMBA APB协议的一些个人理解,仅用于学习交流之用。本人学习APB协议时参考的是ARM公司官方的APB协议技术规范文档(编号:IHI0024D)。受限于本人的知识水平,本文章可能缺漏和错误之处,欢迎大家批评指正。
1. APB 协议介绍
APB协议属于AMBA总线协议的一种,是一种低成本,低功耗,结构简单的低速通信总线,通常通过APB桥与AHB总线或者AXI总线连接构成芯片的通信总线系统。APB总线通信有主从设备之分,APB主设备通常是APB桥,从设备通常是一些低速的外设,例如:RTC,TIMER,WDT等。
APB总线是一种低速的,同步总线,不支持流水线操作,每次传输都至少要花费两个时钟周期,第一个周期为设置周期,第二个或者之后几个周期为数据周期。在设置周期当中,APB总线进行地址的传输操作;在数据周期当中,APB总线执行数据的读写操作。
2. APB总线的端口信号描述
在介绍APB端口信号之前,先来看一下图1所示的端口信号连接图以便更好地理解APB的端口信号。按照参考文档中的描述,我把APB主设备称为“Requester”,把从设备称为“Completer”。除了PCLK和PRESETn信号是由系统提供的时钟复位信号,其余信号都用于APB主从设备之间的通信。
下面表1罗列了各种信号及其功能描述。没有标颜色的是APB3.0支持的端口信号,标蓝的是APB4.0新增的端口信号,标黄的是APB5.0新增的端口信号:
在APB4.0协议中,新增了PSTRB信号和PPROT信号。PSTRB信号是写数据有效位指示信号,用于指示哪些数据位有效,通常用在数据位宽与总线位宽不对齐的情况。PPROT信号用来指示数据传输的优先级和安全传输。一般在公司当中只用到APB4.0协议。
在APB5.0协议当中新增了一系列的用户自定义数据信号,但是即使是在ARM公司官方的技术文档当中也并不建议大家使用这些信号因为没有相应的功能函数支持这些信号。
信号名称 | 信号源 | 信号位宽 | 描述 |
PCLK | Clock | 1 | APB总线的时钟信号 |
PRESETn | System bus reset | 1 | APB总线的复位信号,低电平有效,通常与系统总线的reset信号连接在一起。 |
PADDR | Requester | ADDR_WIDTH | APB的地址总线,位宽可以自定义,最大为32比特 |
PSEL |
Requester |
1 |
APB从设备片选信号,用于使能相应的从设备 |
PENABLE |
Requester |
1 |
APB的使能信号,用于指示第二个或者之后几个周期的信号传输 |
PWRITE |
Requester |
1 |
APB读写信号,用于指示一次传输的类型,高写低读 |
PWDATA |
Requester |
DATA_WIDTH |
APB写数据总线,用于写入数据,位宽可选,最大为32比特 |
PR |