0%

AMBA APB

1 APB 协议

  • APB 接口是无流水线同步协议,每次传输至少需要两个周期
  • APB 接口用于访问外设的控制寄存器。
  • APB 传输由 APB 桥/请求方(Requester)初始化,由 APB 外设/完成方(Completer)响应请求。

2 APB 接口信号

  • PCLK
  • PRESETn
  • Requester
    • PADDR
    • PSELx
    • PENABLE
    • PWRITE
    • PWDATA
    • PSTRB
    • PPROT PNSE
    • PWAKEUP
    • PWUSER
  • Completer
    • PREADY
    • PRDATA
    • PSLVERR
    • PRUSER
    • PBUSER

地址总线

  • APB 接口有一条地址总线 PADDR
  • 允许 PADDR 与数据宽度不对齐,但结果无法预测。(?)

数据总线

  • APB 接口有两条独立的数据总线 PRDATAPWDATA
  • 数据总线宽度可以是 8 位、16 位、32 位,且读写总线的宽度必须相同。
  • 数据传输不能同时进行,因为读/写没有独立的握手信号。

3 APB 传输

写传输

无等待状态

image-20230727101959667
  • Setup(T1):PSEL 断言,这表示 PADDR PWRITE PWDATA 是有效的。
  • Access(T2):PENABLE 断言,PREADY 在上升沿断言,这表示将在 T3 处接收数据。
  • 传输结束时, PSELPENABLE 取消断言。

有等待状态

image-20230727111042572
  • 在 Access 阶段,PENABLE 为高电平,Completer 将 PREADY 设为低电平,以延长传输。
  • 期间,下列信号保持不变:
    • PADDR PWRITE PSELx PENABLE PWDATA PSTRB PPROT PAUSER PWUSER

写选通

image-20230727112124939
  • PSTRB 表示写数据总线的相应通道包含有效数据。
  • 对于读传输,必须将 PSTRB 所有位置低。

PSTRB

  • PSTRB 是一个可选信号。
image-20230727112618422

读传输

无等待状态

image-20230727112757276
  • 与写传输相同。

有等待状态

image-20230727112840501
  • 与写传输相同。
  • 期间,下列信号保持不变:
    • PADDR PWRITE PSELx PENABLE PPROT PAUSER

错误响应

  • PSLVERR 指示错误信息。
  • PSLVERR 仅在传输的最后一个周期有效,此时 PSEL PENABLE PREADY 都为高电平。
  • 建议但不要求在 PSEL PENABLE PREADY 都为低电平时将PSLVERR 设为低电平(清除 flag)。
  • 外设收到错误信号不一定就会改变外设的状态,这与外设本身有关。
  • 写入事务时出现错误,但外设中的寄存器可能已经更新。
  • 读取事务出错时会返回无效数据(不要求在这种情况下全设为 0 ),该数据仍可使用。
  • Completer 不要求支持 PSLVERR 。若 Completer 不支持 PSLVERR ,则 Requester 的相应输入端置低。

写错误

image-20230727114203989

读错误

image-20230727114257626

PSLVERR 的映射

  • 从 AXI 到 APB:读取时出错,映射回 RRESP ;写入时出错,映射回 BRESP
  • 从 AHB 到 APB:映射回 HRESP 进行读写。

保护

4 状态机

image-20230729100123257
  • IDLE
  • SETUP
    • 需要传输时,进入 SETUP ,PSELx 被断言,期间一些信号不得发生变化。
    • 在下一个周期进入 ACCESS 。
  • ACCESS
    • PENABLE 被断言,期间一些信号不得发生变化。
    • 若 Completer 将 PREADY 置低,则保持 ACCESS 。
    • 若 Completer 将 PREADY 置高,则退出 ACCESS ;若不再需要传输,进入 IDLE ,若还需要传输,进入 SETUP 。

5 接口奇偶校验保护