APB总线总结

文章目录[x]
  1. 1:0x00 综述
  2. 2:0x01 APB总线信号
  3. 3:0x02 APB传输时序
  4. 3.1:读传输
  5. 3.2:写传输
  6. 3.3:总结
  7. 4:0x03 APB的状态机
  8. 5:0x04 参考文献

0x00 综述

APB的全称为Advanced Peripheral Bus,即先进外设接口,该总线主要用于和低速以及低功耗的外设通信,该总线中唯一的主设备为APB Bridge,而其它的外设均为从设备。其中,APB Bridge可以锁存总线所有的地址、数据和控制信号,并通过二级译码来产生APB从设备选择信号,通常APB Bridge本身挂在AHB等高速总线上,用于“桥接”低速的APB总线。

APB规定所有的信号必须在时钟上升沿触发时进行传递

0x01 APB总线信号

APB总线最大支持32bit的数据位宽,拥有两个独立的数据通道,分别为读通道和写通道。由于APB的两个通道没有独立的握手信号,因此两个通道不会被同时使用。

信号定义如下:

信号 来源 描述
PCLK 时钟源 时钟
PRESETn 系统总线 复位信号,低有效,通常直接与系统总线复位信号相连
PADDR APB Bridge 地址总线,最大32bit
PSELx APB Bridge 总线选择信号
PENABLE APB Bridge 总线使能信号
PWRITE APB Bridge 总线方向信号,高为写,低为读
PWDATA APB Bridge 写入的数据,最大32bit
PREADY Slave Interface 从设备准备好信号
PRDATA Slave Interface 读取的数据,最大32bit
PSLVERR Slave Interface 为高时表示传输失败(可选,不使用时置低)
PPROT APB Bridge 保护类型(Normal、Privileged、Secure、Data/Instruction访问)(可选)
PSTRB APB Bridge 写选通信号(可选)

0x02 APB传输时序

读传输

读传输最简单情况的时序如下图所示:

avatar

事实上,PREADY信号可以无限延后,直到数据准备好后再拉高,如下图所示:

avatar

可以看到实际上分为五个阶段:Idle、Setup、Enable、Data Valid、Finish

进入Data Valid阶段后,数据将会准备好,数据应当在Finish阶段的时钟上升沿被采样。

读传输可能发生错误,因此可以使用PSLVERR进行错误指示(以下为读传输出错的情况):

avatar

事实上,只有当PSEL、PENABLE以及PREADY都为高时,PSLVERR才在最后一个周期(即Data Valid阶段)判断,其它情况下,建议拉低(只是建议,非强制性)。

在Data Valid完成后,若有新的数据需要传输,则会再次转移到Setup阶段。

写传输

写传输的情况也与读传输类似的,但多了一个信号PSLVERR用于指示写传输错误,下面直接给出最复杂的情况,在这种情况中,最终发生了写传输错误:

avatar

在Write Finish完成后,若有新的数据需要传输,则会再次转移到Setup阶段。

总结

为了减少功率的消耗,APB的地址和读写控制信号在下一笔数据传递前,不会发生任何改变。

0x03 APB的状态机

事实上,上述所有图中的"Enable"、"Data Valid"与"Write Finish"阶段被合称为“Access”阶段,而最后的"Finish"阶段实际为"Idle"阶段,因此状态机只有三级:Idle、Setup与Access,其状态转移图如下:

avatar

0x04 参考文献

AMBA总线—APB总线协议详解

AMBA-APB总线协议详解

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据