APB发展

  • APB2

该规范定义了接口信号,基本的读写传输以及APB的两个组件APB bridge和APB slave

  • APB3

定义了下面两个附件功能

  1. 等待状态,参见Transfer
  2. 错误报告,参见Error response

对应增加的信号如下

PREADY:准备就绪信号,表示APB传输完成

PSLVERR:传输失败的错误信号

  • APB4

定义了以下附加功能:

  • 事务的保护,参见Protection unit support
  • 稀疏数据传输,参见Write stobes

对应的信号如下

PPROT:一种保护信号,用于支持非安全事务和安全事务

PSTRB:一种写掩码信号,用于在写数据总线上实现稀疏数据传输

  • APB5

定义了以下附加功能

  • PWAKEUP信号
  • User信号
  • Parity protection and check信号
  • Reaml Management Extension(RME)支持

APB信号

image-20251017155405898

数据总线

  • APB协议有两个独立的数据总线,一个用于读取数据,一个用于写入数据
  • 总线可以达到32位宽
  • 由于总线没有各自的握手信号,因此数据传输不可能同时发生在两个总线上

APB时序

APB写传输

写传输的类型:可以分为没有等待状态和具有等待状态

  • 没有等待状态

下图展示的是没有等待的基本写传输

image-20251017204600083

在T1时,写传输开始于地址PADDR、写数据PWDATA、写信号PWRITE、选择信号PSE,寄存器在PCLK上升沿,这称为写传输的起始阶段

T2时,使能信号PENABLE和准备信号PREADY寄存器在PCLK上升沿

当断言时,PENABLE表示传输的访问阶段开始

当断言时,PREDY表示Slave可以在PCLK的下一个上升边沿完成传输

地址PADDR、写数据PWDATA和控制信号都保持有效,直到传输在访问阶段的T3完成结束。

使能信号PENABLE在传输结束时被撤销。

选择信号PSEL也被去断言,除非在此传输之后立即有另一个传输到同一Slave。

对于burst的写如下所示:

image-20251017210043196

  • 具有等待状态
    下图显示的是如何在访问阶段使用PREADY信号扩展传输,当PENABLE为高,而Slave驱动PREADY为低时扩展传输。其他信号保持不变,而PREADY保持低

image-20251017210315516

当PENABLE为低时,PREADY可以取任何值,这确保了具有两个周期访问的外围设备可以让PREDY保持为1

建议地址和写信号在传输后不要立即改变,而是保持稳定,直到发生另一次访问,这能降低功耗

写掩码

写掩码信号PSTRB在写数据总线上实现稀疏数据传输
每个写掩码信号对应写数据的一个字节。当断言为高时,写掩码指示写数据总线的相应字节通道包含在32位数据总线上,这种关系如下图所示:

image-20251017210752575

读传输时,Master必须驱动PSTRB的所有位为低

读传输

  • 没有等待状态的读传输
    image-20251017211000061

对于burst读的例子:

image-20251017211048579

  • 具有等待状态的读传输

下图显示了PREADY信号如何扩展传输。如果PREADY在访问阶段都为低,则传输被扩展

该协议确保其他信号在额外的周期内保持不变

下图使用了PREADY信号添加了两个周期,然后,可以添加在0开始的任何数量的额外周期。

image-20251017211304492

错误响应

可以使用PSLVERR指示APB传输上的错误条件,读和写事务都可能错误

当PSEL、PENABLE和PREADY均为高、PSLVERR仅在APB传输的最后一个周期被认为有效

建议(但非强制)在当PSEL、PENABLE或PREADY中的任何一个为低时,即未进行采样时驱动PSLVERR为低。

接收到错误事务可能(也可能没有)改变了Slave的状态,这是特定于外围设备的,两者都是可以接受的。当写事务收到一个错误时,这并不意味着外围设备中的寄存器没有更新。接收到错误读事务可能返回无效数据,但没有要求Slave要驱动data总线为全0。

APB外设不需要支持PSLVERR引脚,现有的和新的APB外围设计都是如此。如果外设没有这个引脚,那么Slave的合适输入为固定0。

图3-6给出了一个写传输失败并报错的例子

image-20251017214021133

读传输也可以在错误响应后完成,这表明没有有效的读数据可用。如图3-7所示,读传输完成后出现错误响应。

image-20251017214052172

PSLAVERR映射

当桥接时:

从AXI到APB,PSLVERR被映射回RRESP/BRESP = SLVERR。这是通过将PSLVERR映射到用于读取的AXI信号的RRESP(对于读)和BRESP(对于写)来实现的

对AHB到APB,PSLVERR被映射回 HRESP = ERROR(对于读和写)。这是通过将PSLVERR映射到AHB信号的HRESP[0]来实现的。

保护单元支持

为了支持复杂的系统设计,通常需要系统中的互连和其他设备提供防止非法交易的保护。对于APB接口,这种保护由PPROT[2:0]信号提供。访问保护的三个级别分别是:

(1) Normal或Privileged,PPROT[0]

  • 0表示正常访问
  • 1表示特权访问

这被一些Master用来表示它们的处理模式。Privileged处理模式通常在系统中具有更高级别的访问权限。

(2) Secure或non-Secure,PPROT[1]

  • 0表示安全访问
  • 1表示非安全访问

这用于需要在处理模式之间进行更大程序区分的系统

这个位的配置是这样的:当它为1时,事务被认为是非安全的;当它为0时,事务被认为是安全的。

(3) Data or Instruction,PPROT[2]

  • 0表示数据访问
  • 1表示指令访问

该位表示该事务时数据访问还是指令访问

此指示只是作为提示,并非在所有情况下都是准确的。例如里面事务包含指令和数据项的混合。默认情况下,建议将访问标记为数据访问,除非明确知道它是指令访问。

image-20251017220801408