介绍:APB 是 AMBA 3 协议家族的一部分。它提供了一个低成本接口,该接口经过优化以实现最小功耗并降低接口复杂性。APB 可与任何低带宽且不需要流水线总线接口(APB 具有非流水线协议)高性能的外设接口。

  • 所有信号转换仅与时钟的上升沿相关,以便轻松将 APB 外设集成到任何设计流程中。每次传输至少需要两个周期。

  • APB 可以与 AMBA 高性能总线 Lite(AHB-Lite)和 AMBA 高级可扩展接口(AXI)接口。

1.传输

  • 1)写传输
    image

写操作传输的写入地址、写入数据、写入信号和选择信号均在时钟上升沿开始。

传输过程
传输的第一个时钟周期称为设置阶段。下一个时钟沿之后,使能信号PENABLE被拉高,这表示数据传输正在进行,地址、数据和控制信号在整个访问阶段都保持有效,传输在该周期结束时完成发送。在传输结束时,使能信号 PENABLE发送使能会被重新拉低。选择信号PSEL也会变为低电平,除非紧接着要对同一个外设进行另一次传输。

PENABLE发送使能延长传输距离原理
在数据发送阶段,当PENABLE为高电平时,可以通过将PREADY拉低来延长传输,此时就要保证在PR拉低时PE必须为高来保证数据发送的状态,反之如果PE发送使能如果为低,PR不起任何作用,可以算便设置状态。以下信号在额外的周期内保持不变:
• 地址,PADDR
• 写信号,PWRITE
• 选择信号,PSEL
• 使能信号,PENABLE
• 写入数据,PWDATA。
image

  • 2)读传输
    读传输在读数据前也要像写数据那样先写入从机的地址,后续才能从从机中读取,地址、写、选择和使能信号的时序跟写一样,下面延长读取传输时间与写的时候一致。
    image

  • 3)错误传输

可以使用 PSLVERR 来指示 APB 传输中的错误情况,读写过程都可能出现错误,PSLVERR 只有在 APB 传输的最后一个周期才被认为是有效的,这时 PSEL、PENABLE 和 PREADY 都是高电平。建议(但不是必须)在 PSLVERR 没有被采样时将其拉低,也就是当 PSEL、PENABLE 或 PREADY 中的任意一个为低电平时。

收到错误的事务,可能会也可能不会改变外设的状态。这取决于具体的外设,两种情况都是可以接受的,当写事务收到错误时,这并不意味着外设内的寄存器没有被更新,收到错误的读事务可能会返回无效数据。对于读错误,外设没有要求必须把数据总线拉到全零。APB 外设不需要支持 PSLVERR 引脚,这对现有和新的 APB 外设设计都是一样的,如果外设没有这个引脚,那么 APB 桥的相应输入就会被拉低。
写传输错误:
image
读传输错误:
image

  • PSLVERR 的映射
    在桥接时:
    从 AXI 到 APB:APB 错误会映射回 RRESP/BRESP = SLVERR。这是通过将 PSLVERR 映射到 AXI 信号实现的,其中 RRESP[1] 用于读取,BRESP[1] 用于写入。
    从 AHB 到 APB:PSLVERR 会映射回 HRESP = ERROR,适用于读写操作。这是通过将 PSLVERR 映射到 AHB 信号 HRESP[0] 实现的。

2.状态转换

image
状态机通过以下状态运行:
IDLE:这是 APB 的默认状态。
SETUP:当需要传输时,总线会进入 SETUP 状态,此时适当的选择信号 PSEL被拉低。总线在 SETUP 状态下只保持一个时钟周期,并且在下一个时钟上升沿总是转入 ACCESS 状态。
ACCESS:在 ACCESS 状态下使能信号PENABLE被拉高(高有效)。从 SETUP 状态过渡到 ACCESS 状态时,地址、写、选择和写数据等信号必须保持稳定。从 ACCESS 状态的退出由从器件的 PREADY 信号控制:如果从器件将 PREADY 保持为 LOW,那么外设总线将保持在 ACCESS 状态。
PREADY :如果 PREADY 被从设备拉高,那么 ACCESS 状态会结束,并且总线会返回到 IDLE 状态,如果不需要更多传输的话。或者,如果紧接着还有传输,总线会直接进入 SETUP 状态。

3.信号描述

image

  • 时钟信号:上升沿为有效沿
  • 复位信号: 低电平复位,高电平复位无效
  • 地址信号:32位的地址总线
  • 选择信号:从设备被选中,并且需要进行数据传输。每个从设备都有一个PSELx信号。
  • 使能信号:使能发送接收数据
  • 方向信号:当信号为高电平时表示 APB 写操作,为低电平时表示 APB 读操作。
  • 写数据信号:主机写数据到从机
  • 就绪信号:从机设备准备好需要发送数据,将进入就绪。
  • 读数据信号:从机发送数据给主机
  • 标志信号:这个信号表示传输失败。APB 外设不需要支持 PSLVERR 引脚。这对于现有和新的 APB 外设设计都是一样的。如果某个外设没有这个引脚,那么 APB 桥的相应输入就接地(低电平)处理。