APB协议翻译

AMBA APB 协议

1、介绍

1.1关于APB协议

​ 高速外围设备总线APB(Advanced Peripheral Bus)是高速微控制器总线架构AMBA(Advanced Microcontroller Bus Architecture)协议的一元。它描述了一个low-cost接口,主要适用于低功耗和接口简单的场景。

​ APB协议不支持流水线,主要用在不需要高性能的低带宽外设上,若需要高性能,则需要AXI协议。

​ APB协议状态转换同时钟上升沿对其,每一笔操作需要至少两个周期。

​ APB可以连接

  • AMBA Advanced High-performance Bus(AHB)
  • AMBA Advanced High-performance Bus Lite (AHB-Lite)
  • AMBA Advanced Extensible Interface (AXI)
  • AMBA Advanced Extensible Interface Lite (AXI-Lite)

​ 可以通过APB协议来访问外围设备的可编程寄存器。

1.2APB版本修正

​ APB规范最开始在1998年发布,现在已经由以下三个版本取代

  • AMBA 2 APB Specification
  • AMBA 3 APB Protocol Specification v1.0
  • AMBA APB Protocol Specification v2.0

1.2.1 AMBA 2 APB Specification

​ AMBA 2 APB Specification来自于AMBA spec REV2。此版本规定了接口信号、基本读写传输以及APB bridge和APB Slave。

这个版本称为APB2。

1.2.2 AMBA 3 APB Protocol Specification v1.0

​ 此版本定义了以下附加功能

  • 传输等待,详见第三章
  • 错误报告,详见3.4

添加以下接口信号支持以上功能

  • PREADY :指示传输就绪的信号
  • PSLVERR:指示传输失败的信号

这个版本称为APB3。

1.2.2 AMBA APB Protocol Specification v2.0

​ 此版本增加功能

  • 传输保护,详见3.5
  • 选通传输,SParse操作。

增加信号

  • PPROT:使APB支持安全传输和非安全传输
  • PSTRB:写入选通,在写操作时实现稀疏数据传输。

这个版本称为APB4。

2、信号描述

2.1AMBA APB信号

信号 来源 信号描述
PCLK 时钟源 APB协议与时钟上升沿对对齐
PRESETn 全局复位信号 APB采用复位低有效,该信号一般直接连接系统总线复位信号。
PADDR 主机(APB桥) 地址最先,最多32位,由主机发送用来寻址。
PPROT 主机 保护类型。这个信号可以指示当前传输安全级别,和是数据访问还是指令访问。
PSELx 主机 片选信号。每个从机都有一个sel信号,拉高表示当前从机被选中。
PENABLE 主机 使能信号。一般指示APB传输的第二个周期或者后续周期。
PWRITE 主机 1为写,0为读。
PWDATA 主机 写数据,最高32位。
PSTRB 主机 写入选通,。写入数据总线的每个byte都有一个写入选通指示位,一个word需要4个指示位。读操作时写入选通关闭
PREADY 从机 从机ready信号,从机使用此信号扩展APB传输,其实就是等待操作。
PTDATA 从机 从机发给主机要读的数据,最高32位。
PSLVERR 从机 指示传输失败。若选择不支持此功能,则直接连低电平。

APB总线同一时刻只能进行一次握手,因此读写不能同时进行。

3、传输

3.1写传输

写传输分为无等待传输和等待传输

3.1.1无等待传输



在T1时刻,PSEL拉高,通过PADDR选中从机,同时PWRITE拉高指示写传输开始,并给出数据信息PWDATA。此阶段称为setup阶段。

​ 在T2时刻,主机拉高PENABLE,进入enable状态,此时表示主机随时等待从机接收数据。

​ 在T2时刻,从机拉高PREADY,表示从机已经准备好在这个时钟周期内接收数据吗,不用等待,PENABLE和PREADY完成握手,正式传输。在此期间,其他相关信号要一直保持不变,直到传输完成。

​ 传输结束后,PSEL和PENABLE都拉低,下次传输时再拉高。

3.1.2有等待传输

​ 从机通过拉低PREADY信号,来实现传输扩展,在传输等待过程中,其他信号保持不变。

注意比对这张图和上张图。PENABLE拉高后说明主机已经准备好,但此时PREADY拉低,从机没有准备好,握手失败。,此时主机保持在enable状态进行等待直到PREADY拉高与PENABLE握手成功。

3.2写选通

写选通信号用来启用写操作时的字节选择功能,对应选通位置1,该字节才有效。

读传输时PSTRB所有位必须置0.

3.3读传输

3.3.1无等待传输

与写操作类似,注意主机在第二个时钟周期进行数据采采样。从机在第一个周期和第二个周期给出数据都可以。

3.3.2有等待传输

读等待期间,其他相关信号保持不变,数据准备好的同时拉高PREADY,与PENABLE握手。握手成功,则主机进行数据采样。

3.4错误response

​ 读写传输都有可能发生错误,错误情况由PSLVERR指示。

​ PSLVERR指示信息仅在APB传输的最后一个周期认为是有效的,此时PSEL,LENABLE,PREADY均为高电平。

​ 建议在PSEL/PENBALE/PREADY中任意一个为低电平时,将PSLVERR驱动为低电平。即在非采样时刻,将其驱动为低电平。

​ 收到错误的传输,可能会也可能不会改变外围设备的状态。

​ 写传输收到error并不意味着外围设备内部寄存器更新失败,读传输收到error可能会返回无效数据。在发生读传输错误时,没必要将数据总线驱动为全0.

​ APB外设不需要强制支持PSLVERR。

3.4.1写传输错误

3.4.2读传输错误

PSLVERR在数据采样状态时拉高

3.4.3PSLVERR的映射

当存在bridge时

  • fromAXItoAPB:PSLVERR读操作时映射为RRESP[1],写操作时映射为BRESP[1]。
  • fromAHBtoAPB:PSLVERR无论读写都映射为HRESP[0]。

3.5保护单元支持

​ 为了支持复杂的系统设计,系统中的设备互联需要提供对非法传输的保护。对于APB总线,这一操作由PPROT[2:0]来实现。

​ 访问保护分为三个级别

  • 普通或特权,PPROT[0]:低电平代表普通,高电平代表特权。这被一些master用来指示他们的处理模式,特权处理模式通常在系统中具有更高级别的访问权限。
  • 安全或非安全,PPROT[1]:低电平代表安全,高电平代表非安全。这用于需要对处理模式细分的系统中,用来指示当前传输是否安全。
  • 指令或数据,PPROT[2]:低电平代表数据访问,高电平代表指令访问。这一位仅作为提示,并非所有情况都准确。比如这一笔传输时指令和数据项的混合。建议默认情况下将访问标记为数据访问,除非明确知道它是指令访问。

4、操作状态

4.1操作状态

APB状态机如图所示

IDLE:默认状态

SETUP:当需要传输时总线进入SETUP状态,此时给出PSEL和PADDR信号进行从机选通。并无条件跳转到ACCESS状态。

ACCESS:进入ACCESS状态,PENABLE信号拉高,此时若未检测到PREADY拉高,握手失败,则状态保持,等待握手成功。握手成功后,若还有数据,则跳转到SETUP状态,进行下一笔传输,否则进入IDLE状态。

补充

error response

​ 什么时候需要产生error response?

  • 在访问APB外设的寄存器的时候,APB外设在功能设计的时候,认为此时应该产生error,具体情况要取决于外设的设计
  • 对于APB4的外设,如果能支持secure的话,当外设的secure寄存器被non-secure的transfer访问的时候,这时候需要产生error
  • 如果APB对unused(没有分配地址空间)的地址空间访问时候,这时候需要产生error
posted @ 2022-07-28 21:11  骑猪上树的少年  阅读(802)  评论(0编辑  收藏  举报
回到顶部