引言
本文針對AMBA3家族中的APH協議。
APB協議是一種低成本的協議,它提供低功耗且復雜度最低的精簡接口。對於任何外設而言,APB接口不需要流水線總線接口的高性能並且具有低帶寬的特性。APB接口兼容AHB-Lite與AXI協議。
傳輸
APB協議具有三種傳輸方式:
- Write transfer
- Read transfer
- Error response
首先介紹寫傳輸
Write transfer
寫傳輸分為2類,一類是無等待階段寫傳輸,另一類是有等待階段寫傳輸。
No wait states
無等待階段寫傳輸的時序如下:

先看后文中對於各信號的解釋:

![]()
第一個時鍾周期稱之為setup階段,給出地址,寫信號拉高,同時選通信號PSEL拉高。下一時鍾周期聲明使能信號即PENABLE,表明進入訪問階段,在此階段地址,數據和控制信號都要保持有效。時鍾周期結束表示傳輸完成。因此從這里也可以看出,一個APB傳輸至少需要兩個時鍾周期。
使能信號PENABLE在傳輸結束時刻撤除,PSEL如果沒有緊接着一次傳輸的話也會在結束時拉低
With wait states
這種模式的傳輸是從機可以通過控制PREADY信號進行擴展, 在訪問階段當PENABLE高有效時,將PREADY信號拉低數個周期,保持相應信號不變。時序如下所示:

Read transfer
讀傳輸與寫傳輸一樣具有兩個模式
No wait states
讀傳輸的時序如下圖所示:可以看出這里PWRITE拉低,意味着讀指令,因此在一定程度上精簡了接口,不需要多個通道來分別指示讀寫。從機必須要在讀傳輸結束前提供數據。

With wait states
具有等待階段的讀傳輸如下圖所示:相應的地址信號、寫信號、選通信號和使能信號都在額外的時鍾周期保持了不變。這里PREADY在使用前延遲了2個時鍾周期,實際設計中可以任意設置延遲時間。

Error response
在APB讀寫傳輸中都可能出現傳輸錯誤,因此PSLVERR信號標志了錯誤的傳輸情況。該信號僅在APB傳輸的最后一個時鍾周期有效,即PSEL/PENABLE/PREADY都高有效時有效。
該協議建議非采樣時刻將該信號置0,即PSEL/PENABLE/PREADY任意一信號為0時。
但是APB外設不是一定需要支持該信號引腳的,當外設不支持時將該信號拉低。
下圖表示寫傳輸時出錯的時序:

Mapping of PSLVERR
當存在橋接時,存在兩種映射情況
AXI to APB:一個APB的錯誤映射為RRESP/BRESP,即讀傳輸錯誤映射為RRESP[1]而寫傳輸錯誤映射為BRESP[1]。
AHB to APB:一個APB的錯誤映射為HRESP,即讀/寫傳輸錯誤均映射為HRESP[0]。
操作狀態
APB的操作活動如下所示:

該狀態機一共3個狀態,當存在傳輸需求時進入SETUP狀態,此時拉高PSEL信號,該總線在此階段只保持1個時鍾周期並在下一個時鍾上升沿到來時進入ACCESS狀態。當進入ACCESS狀態后即拉高PENABLE信號,當狀態由SETUP進入ACCESS狀態時地址信號、寫信號、選通信號和寫數據信號都要保持穩定。
從ACCESS狀態跳變到其他狀態是由PREADY信號控制的,如果PREADY信號保持為低則狀態保持在ACCESS不變,若從機將PREADY信號拉高則推出ACCESS狀態,並且當沒有傳輸請求時回到IDLE狀態,但是如果有另一個請求,則直接跳轉至SETUP狀態。
