AMBA 总线是ARM推出的高级微控制器总线架构
1. APB总线协议概述
APB协议是低成本接口,为低功耗优化,降低了接口复杂性。APB协议不支持流水线,它是一个简单的同步总线协议。每次数据传输至少需要两个时钟周期。
APB协议的设计是用来访问外围设备的可编程控制寄存器,
2. AMBA APB Signals
部分APB的信号接口位宽是可变的,部分信号接口可以使用不同的位宽,当位宽不可变时,就是要使用某种特性。如果特征接口的值为0,意味着信号不会出现在接口上。
下表描述了APB协议的接口信号
Signal | Source | Width | Description |
---|---|---|---|
PCLK | Clock | 1 | 时钟信号,所有的APB信号接口均在PCLK的上升沿有效 |
PRESETn | 系统总线复位 | 1 | 低电平有效的复位信号,正常情况下直接连接系统总线复位信号 |
PADDR | 请求者 | 地址宽度 | 地址总线,位宽最高可达32bits |
PPROT | 请求者 | 3 | 保护类型 |
PSELx | 请求者 | 1 | |
PENABLE | 请求者 | 1 | 使能信号,描述第二个和随后APB传输时钟 |
PWRITE | 请求者 | 1 | 方向,拉高时写使能,拉低时读使能 |
PWDATA | 请求者 | 数据位宽 | 写数据,写数据总线总过APB桥驱动,可以为8,16,32位宽 |
PSTRB | 请求者 | 数据位宽/8 | |
PREADY | Completer | 1 | 握手信号 |
PRDATA | Completer | DATA_WIDTH | 读数据,数据位宽可以为:8,16,32 |
PSLAVERR | Completer | 1 | 传输错误信号,可选的信号,高电平触发,表示传输过程中发生一次错误 |
PWAKEUP | 请求者 | 1 | 唤醒 |
PAUSER | 请求者 | 用户定义宽度 | 用户请求属性 |
PWUSER | 请求者 | 用户数据宽度 | 用户写数据属性 |
PRUSER | Completer | 用户数据宽度 | 用户读数据属性 |
PBUSER | Completer | 用户定义宽度 | 用户相应属性(最大推荐位宽16bit) |
2.1 地址总线
2.2 数据总线
APB协议有两个独立的数据总线:
- 读数据总线
- 写数据总线
数据总线可以配置位8,16,32位宽,读数据总线与写数据总线的位宽必须保持一致。
由于读、写数据总线没有独立的握手信号,所以读数据和写数据不能同时进行。
3. 数据传输
3.1 写数据传输
本节讨论两种类型的写数据传输:
- 无等待状态传输
- 有等待状态传输
所有的信号均是在PCLK的上升沿采样!
####3.1.1 无等待状态
无等待状态传输的时序图如下:
1 |