APB信号

发布于:2024-04-25 ⋅ 阅读:(18) ⋅ 点赞:(0)

关于APB协议

高级外设总线(APB)是高级微控制器总线架构(AMBA)协议家族的一部分。它定义了一个低成本的接口,该接口针对最小功耗和降低接口复杂性进行了优化。

APB协议不是流水线化的,用于连接不需要AXI协议高性能的低带宽外设。

APB协议将信号转换与时钟的上升沿相关联,以简化APB外设集成到任何设计流程中。每次传输至少需要两个周期。

APB可以连接到以下接口:

  • AMBA高级高性能总线(AHB)
  • AMBA高级高性能总线Lite(AHB-Lite)
  • AMBA高级可扩展接口(AXI)
  • AMBA高级可扩展接口Lite(AXI4-Lite)

可以使用APB来访问外设设备的可编程控制寄存器。

1. APB信号

APB最大地址位宽是32位,PADDR 

APB最大数据位宽是32位,PRDATA/PWDATA

2. 数据总线

APB协议有两条独立的数据总线,一条用于读取数据,一条用于写入数据。这些总线可以宽达32位。由于这些总线没有它们自己独立的握手信号,因此不可能让数据传输同时在两条总线上发生。

APB总线读写数据不能同时发生。

3. 写传输

3.1 无等待状态的写传输

图3-1显示了无等待状态的基本写传输。

  • T0: 时钟信号PCLK的一个上升沿。
  • T1: 在PCLK的上升沿,写传输开始,地址PADDR、写数据PWDATA、写信号PWRITE和选择信号PSEL被采样并存储在寄存器中。这称为写传输的设置阶段。
  • T2: 在PCLK的上升沿,使能信号PENABLE和准备信号PREADY被采样并存储在寄存器中。
    • PENABLE被断言时,表示传输的访问阶段开始。
    • PREADY被断言时,表示slave可以在下一个PCLK的上升沿完成传输。
  • T3: 传输在PCLK的上升沿结束,访问阶段结束。

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

使能信号PENABLE在传输结束时被取消断言。选择信号PSEL也被取消断言,除非传输紧接着要被对该同一外设的另一个传输所跟随。

3.2 带有等待状态的写传输

图3-2展示了slave如何使用PREADY信号来扩展传输。

在访问阶段(Access phase),当PENABLE为高电平时,slave通过将PREADY置为低电平来扩展传输。只要PREADY保持低电平,以下信号保持不变:

  • 地址信号,PADDR
  • 写信号,PWRITE
  • 选择信号,PSEL
  • 使能信号,PENABLE
  • 写数据,PWDATA
  • 写字节使能(strobe),PSTRB
  • 保护类型,PPROT

当PENABLE为低电平时,PREADY可以取任何值。这确保了那些固定两个周期访问的外设可以将PREADY连接到高电平。

注意    建议在一次传输之后不要立即改变地址和写信号,而是保持它们稳定,直到另一次访问发生。这有助于减少功耗。

4. 写字节使能(write strobes)

写字节使能PSTRB启用了写数据总线上的稀疏数据传输。每个写字节使能位对应于写数据总线上的一个字节。当被置为高电平时,表明写数据总线上相应的字节传输通道包含有效信息。

对于写数据总线上的每八个bit,就有一个写字节使能,因此PSTRB[n]对应于PWDATA[(8n + 7):(8n)]。图3-3展示了在32位数据总线上的这种关系。

注意

  • 对于读传输,总线主设备必须将PSTRB的所有位驱动为低电平。 

5. 读传输

5.1 无等待状态

图3-4显示了一个读传输的过程。地址、写、选择和使能信号的时序。slave必须在读取传输结束之前提供数据。

  • T0: 时钟信号PCLK的一个上升沿。
  • T1: 在PCLK的上升沿,读传输开始,地址PADDR、写信号PWRITE、选择信号PSEL和使能信号PENABLE被采样并存储在寄存器中。
  • T2: 根据需要,PENABLE信号在下一个PCLK上升沿保持高电平,以维持传输,PREADY为高,传输将在下一个CLK上升沿完成。
  • T3: 在PCLK的上升沿,slave必须提供数据PRDATA。

5.2 有等待状态的读传输

图3-5展示了PREADY信号如何延长传输。如果在访问阶段(Access phase)期间PREADY被驱动为低电平,则传输会被延长。协议确保以下信号在额外的周期中保持不变:

  • 地址信号,PADDR
  • 写信号,PWRITE
  • 选择信号,PSEL
  • 使能信号,PENABLE
  • 保护类型,PPROT

图3-5显示了使用PREADY信号增加了两个周期。然而,你可以从零开始增加任意数量的额外周期。

6. 错误响应

可以使用PSLVERR来指示APB传输中的错误条件。错误条件可能发生在读和写事务中。

PSLVERR仅在APB传输的最后一个周期内被认为有效,当PSEL、PENABLE和PREADY都为高电平时。

建议(但不是强制性的)在PSLVERR不被采样时将其驱动为低电平。也就是说,当PSEL、PENABLE或PREADY中的任何一个为低电平时。

接收到错误的事务可能或可能没有改变外设的状态。这是外设规定的,两种情况都是可以接受的。当写事务接收到错误时,并不意味着外设内的寄存器没有被更新。接收到错误的读事务可以返回无效数据。对于外设来说,没有要求在读取错误时将数据总线驱动为全0。

APB外设不要求支持PSLVERR引脚。这对于现有的和新的APB外设设计都是如此。如果外设没有包含此引脚,则APB桥的对应的输入被连接到低电平。

6.1 写传输的错误响应

图3-6展示了一个写传输失败并在完成时出现错误的例子。

6.2 读传输的错误响应

读传输也可能以错误响应完成,表明没有有效的读数据可用。图3-7展示了一个以错误响应完成的读传输。

 6.3 PSLVERR的映射

当进行桥接时:

  • 从AXI到APB:一个APB错误被映射回RRESP/BRESP = SLVERR。这是通过将读操作时PSLVERR映射到AXI信号的RRESP[1],以及写操作时映射到BRESP[1]来实现的。

  • 从AHB到APB:PSLVERR被映射回HRESP = ERROR,用于读操作和写操作。这是通过将PSLVERR映射到AHB信号的HRESP[1]来实现的。

8. 保护单元支持

为了支持复杂的系统设计,通常需要互连和系统中的其他设备提供对非法事务的保护。对于APB接口,这种保护由PPROT[2:0]信号提供。

访问保护有三个级别:

普通或特权(Normal or privileged),PPROT[0]

  • 低电平(LOW)表示普通访问
  • 高电平(HIGH)表示特权访问

这种访问由某些master用来指示其处理模式。特权处理模式通常在系统中具有更高级别的访问权限。

安全或非安全(Secure or non-secure),PPROT[1]

  • 低电平表示安全访问
  • 高电平表示非安全访问

在需要更高程度区分处理模式的系统中使用。

注意 这个位被配置为,当它是高电平时,事务被认为是非安全的;当是低电平时,事务被认为是安全的。

数据或指令(Data or Instruction),PPROT[2]

  • 低电平表示数据访问
  • 高电平表示指令访问 这个位提供了事务是数据访问还是指令访问的指示。

注意 这种指示被提供作为一个提示,并不在所有情况下都是准确的。例如,当一个事务包含指令和数据项的混合时。建议默认情况下,将访问标记为数据访问,除非它被明确知道是指令访问

 PPROT的主要用作安全或非安全事务的标识符。对于PPROT[0]和PPROT[2]标识符使用不同的解释是可以接受的。

9. 操作状态

图4-1显示了APB的转台转移图。

 

状态机通过以下状态运行:

  • IDLE(空闲) 这是APB的默认状态。

  • SETUP(设置) 当需要传输时,总线进入SETUP状态,其中适当的选择信号PSELx被断言。总线只在SETUP状态中保持一个时钟周期,并且在下一个时钟上升沿总是转移到ACCESS状态。

  • ACCESS(访问) 在ACCESS状态中断言使能信号PENABLE。在从SETUP到ACCESS状态的转换期间,地址、写入、选择和写入数据信号必须保持稳定。

    ACCESS状态的退出由slave的PREADY信号控制:

    • 如果PREADY被slave保持为低电平,则外设总线保持在ACCESS状态。
    • 如果PREADY被slave驱动为高电平,则退出ACCESS状态,并且如果不需要更多的传输,则总线返回到IDLE状态。或者,如果另一个传输跟随,则总线直接转移到SETUP状态。