AMBA总线协议之一【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数据不再有效。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_43629962/article/details/123184114