APB(Advance Peripheral Bus)是AMBA总线的一部分,从1998年第一版至今共有3个版本。
AMBA 2 APB Specfication:定义最基本的信号interface, 读写transfer, APB bridge, APB slave.
AMBA 3 APB:增加定义信号PREADY, PSLVERR来完成对wait state和Error reporting的功能。
AMBA 4 APB:增加定义信号PPROT, PSTRB来支持secure, supervisor和sparse data transfer的功能。
APB主要用在低速的IP接口上,协议简单,时钟clock也比较低,power较小。
APB总线中的信号:
PSELx:由APB bridge产生的信号,针对每一个peripheral bus slave,表示一个slave 是被选中的,有transfer需要传输。
PENABLE:在一个transfer的second and subsequent cycles有效。
PSTRB:只能在写操作中用来指示byte lanes,在读操作中全为1。
PREADY:由slave产生,来extend an APB transfer,结束前一时钟有效,表示下一时钟transfer结束。
PSLVERR:APB transfer的最后一个cycle有效,当PSEL, PENABLE, PREADY同时有效时,不需要该引脚时,tie0
当需要bridge时,PSLVERR可以与AXI总线中的BRESP[1],AHB总线中的HRESP[0]连接一起。
PPROT:分别表示Normal or privileged, Secure or non_secure, Data or Instruction。
在APB总线中分别有PWDATA和PRDATA,但这并不表示它支持同时读写,
因为他没有分别的读写握手信号,在读写过程中,addr/enable/sel也不可变的,两组数据信号,可能只是为了简化逻辑。
write transfer:T1时刻,建立阶段(Setup)。在PCLK上升沿采样PADDR,PWDATA,PWRITE,PSEL信号。
T2时刻,通信阶段(Access)。采样PENABLE,PREDAY信号。
T3时刻,transfer结束。所以一个APB的transfer最少需要两个时钟。
APB的write操作也需要两个cycle,可能是考虑与读操作的一致性,
这样在AHB2APB 和APB2APB bridge上,逻辑更简单一些。