APB总线协议
1、AMBA总线介绍
AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度低功耗等特点。
Soc系统芯片的各个模块需要接口来连接,而AMBA总线作为子系统之间共享数据通路,AMBA总线主要包括以下三种总线:
- ASB: Advanced System Bus 用于高性能系统模块。
- APB: Advanced Peripheral Bus, 用于慢速外设模块。
- AHB: Advanced High-performance Bus, 用于高性能、高时钟工作频率模块。
- AXI: A High Performance Protocol, 新一代高性能总线,目前已经发表AMBA AXI-4协议。
2、APB总线概述与特点
APB里面唯一的主模块就是APB桥,主要应用于慢速外设Uart, 键盘等。主要特性包括:
- 两个时钟周期传输,无需等待周期和回应信号;
- 控制逻辑简单;只有四个控制信号。
- 低速总线,低功耗。
- 上升沿触发
- 适用于多种外设
2.1 信号说明
2.2 微控制器典型应用
基于AMBA的微控制器通常由高性能系统组成,能够维持外部内存带宽,在APB总线上CPU和直接内存访问(DMA)设备挂载,加上一个桥接到更窄的APB低带宽外围设备所在的总线。如图1为典型的AMBA系统中的APB。
- 可以锁存所有的地址、数据和控制信号
- 进行二级译码来产生APB从设备选择信号
- APB总线上所有其他模块都是APB从设备
3、APB总线传输
3.1 状态机
- IDLE: 系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。
- SETUP:当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP 状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE 状态。
- ENABLE: 系统进入ENABLE状态时,维持之前在SETUP 状态的PADDR、PSEL、PWRITE不变,并 将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。
之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。
3.2 写操作时序
- 在 T1 时,有限状态机进入预设的 IDLE 状态;
- T2 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP;
- T3 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
- T4 时刻检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低。为了减少功率的消耗,APB 的数据地址和读写控制信号在下一笔数据传递前,将不会作任何改变。
3.3 读操作时序
- 在 T1 时,有限状态机进入预设的 IDLE 状态;
- 在T2 时刻 ,APB 将地址信息 PADDR 准备好,拉低 PWRITE 表示进入读,同时拉高 PSEL,从 IDLE 进入 SETUP;
- T3 时刻,也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
- T4 时刻检测到 PREADY 被拉高,也就是说 Slave 已经完成收据发送,PRDATA 上就是来自 Slave 的数据,传输完成;PENABLE 拉低,PSEL 拉低。
3.4 Error Respond
在读和写的过程,可能出现错误,错误通过 PSLVERR 信号来指明;
APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低
写失败后时序
下面这个是写失败后的时序:
读失败后的操作时序如下图,读失败后,PRDATA数据不再有效。