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上,邏輯更簡單一些。