APB(Advance Peripheral Bus)是AMBA总线的一部分,用在低带宽和不需要高性能总线的外围设备上。 APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB外围设备的设计流程,每个传输至少耗用两个周期。
1.APB协议的特点:
- 低成本
- 低功耗
- 低带宽
- 无流水线
- 所有信号都是时钟上升沿有效
- 进行一次数据传输至少需要两个周期
2.端口定义:
signal | description |
PCLK | 时钟(APB协议里所有的数据传输都在PCLK上升沿进行) |
PRESET_n | 复位信号 |
PADDR | 总线地址,最大宽度32位 |
PSELx | 选通信号 |
PENABLE | 使能信号 |
PWRITE | 1表示写,0表示读 |
PWDATA | 写数据,最大32位 |
PRDATA | 读数据,最大32位 |
PREADY (APB3) | 一个对于slave的准备信号,用于扩展APB的传输 |
PSLVERR (APB3) | 错误反馈信号,表示当前传输的数据有误(仅在APB传输的最后一个周期内有效) 高为发生故障 |
3.状态机:
4.写操作:
(a)T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP
(b) T2 时刻也就是下一个时钟周期拉高 PENABLE,进入 ACCESS
(c) T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低
4.读操作:
(a) T1 时刻 APB 将地址信息 PADDR 准备好,拉低 PWRITE 表示进入读,同时拉高 PSEL,从 IDLE 进入 SETUP
(b) T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS
(c) T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经完成收据发送,PRDATA 上就是来自 Slave 的数据,传输完成;PENABLE 拉低,PSEL 拉低