AMBA 系列之 APB 協議

目錄

1、簡介

2、端口說明(Ports)

3、狀態機(FSM)

4、傳輸時序(Timing)

4.1、Write

4.1.1、Write transfer with no wait states

4.1.2、Write transfer with wait states

4.2、Read

4.2.1、Read transfer with no wait states

4.2.2、Read transfer with wait states

4.3、Error Respond

4.3.1、Error response Write transfer

4.3.2、Error response Read transfer

4.3.4、Mapping of PSLVERR


 

1、簡介

APB(Advance Peripheral Bus)是AMBA總線的一部分,從1998年第一版至今共有3個版本。

AMBA 2 APB:定義最基本的信號 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接口用在低帶寬和不需要高性能總線的外圍設備上。 APB是非流水線結構,所有的信號僅與時鐘上升沿相關,這樣就可以簡化APB外圍設備的設計流程,每個傳輸至少耗用兩個週期。APB可以與AMBA高級高性能總線(AHB-Lite) 和AMBA 高級可擴展接口 (AXI)連接;

APB主要用於低帶寬的周邊外設之間的連接,例如UART、1284等,它的總線架構不像AHB支持多個主模塊,在APB裏面唯一的主模塊就是APB 橋。其特性包括:兩個時鐘週期傳輸;無需等待週期和迴應信號;控制邏輯簡單,只有四個控制信號。APB上的傳輸可以用狀態圖來說明;

 

2、端口說明(Ports)

信號名 來源 說明
PCLK 時鐘源 系統時鐘,傳輸發生在上升沿
PRESETn 復位源 復位信號,低使能
PADDR APB橋 地址信號,最高可達32位
PSELx APB橋 由APB bridge產生的信號,針對每一個Peripheral Bus Slave片選信號,表示x從機是否被選中
PENABLE APB橋 使能信號,標記傳輸使能
PWRITE APB橋 讀/寫控制信號,高位寫,低爲讀
PWDATA APB橋 寫數據
PREADY 從機 標記從機是否已將數據發送到總線,高爲ready
PRDATA 從機 讀數據
PSLVERR 從機 故障信號,高爲發生故障

在APB總線中分別有PWDATA和PRDATA,但這並不表示它支持同時讀寫,

 

3、狀態機(FSM)

APB 的狀態機定義如下:

IDLE:這個是 APB 的默認狀態,也就是沒有傳輸時候的狀態;

SETUP:當需要進行一個傳輸的時候,APB 首先進入這個狀態;PSELx 信號首先拉高;總線僅僅在 SETUP 狀態停留一個時鐘週期,然後接着在下一個時鐘的上升沿進入 ACCESS 狀態;

ACESS:在 SETUP 狀態轉換到 ACCESS,PENABLE 信號被拉高;在 SETUP 狀態轉換到 ACCESS 狀態這段時間裏,address,write,select 和 write data 信號必須保持穩定;

處於 ACESS 狀態下,如果 PREADY 爲 0,會讓其繼續處於 ACCESS 狀態;否則,PREADY 爲 1,如果還有傳輸則再次進入 SETUP -> ACCESS ,如果沒有傳輸,直接回到 IDLE;

 

4、傳輸時序(Timing)

4.1、Write

寫傳輸分爲不帶等待信號的寫,和帶等待信號的寫:

4.1.1、Write transfer with no wait states

這種是不帶等待信號的寫傳輸,如下所示:

T1 時刻 APB 將地址信息 PADDR 和寫的數據 PWDATA 準備好,拉高 PWRITE 表示進入寫,同時拉高 PSEL,從 IDLE 進入 SETUP

T2 時刻也就是下一個時鐘週期拉高 PENABLE,使得狀態進入 ACCESS

T3 時刻檢測到 PREADY 被拉高,也就是說 Slave 已經正確接收到數據,傳輸完成;PENABLE 拉低,PSEL 拉低

 

4.1.2、Write transfer with wait states

這種是帶等待信號的寫傳輸,如下所示:

T1 時刻 APB 將地址信息 PADDR 和寫的數據 PWDATA 準備好,同時拉高 PSEL,從 IDLE 進入 SETUP

T2 時刻也就是下一個時鐘週期拉高 PENABLE,使得狀態進入 ACCESS

T3 時刻檢測到 PREADY 爲 0,也就是說 Slave 還沒有接收完數據,所以在此刻,下面信號必須保持,以便 Slave 能夠繼續採樣:

  • PADDR 地址信號
  • PWRITE 數據方向信號
  • PSEL 片選信號
  • PENABLE 使能信號
  • PWDATA 數據

T4 時刻 PREADY 依然 爲 0,所以還是保持不變

T5 時刻,PREADY 爲 1,說明 Slave 已經正確接收到數據,傳輸完成;PENABLE 拉低,PSEL 拉低

注意:即便是傳輸結束了,Address 和 data 信號也不會立即改變,直到下一次傳輸纔會刷新新的地址和數據信號,這樣做的原因是減少功耗

 

4.2、Read

讀數據和寫的流程幾乎差不多,也分爲了等待和非等待

4.2.1、Read transfer with no wait states

同非等待寫一樣,圖示如下:

T1 時刻 APB 將地址信息 PADDR 準備好,拉低 PWRITE 表示進入讀,同時拉高 PSEL,從 IDLE 進入 SETUP

T2 時刻也就是下一個時鐘週期拉高 PENABLE,使得狀態進入 ACCESS

T3 時刻檢測到 PREADY 被拉高,也就是說 Slave 已經完成收據發送,PRDATA 上就是來自 Slave 的數據,傳輸完成;PENABLE 拉低,PSEL 拉低

 

4.2.2、Read transfer with wait states

加等待的讀時序如下:

時序過程和上述一樣,只不過 PREADY 被拉低了兩個週期,真正從 Slave 讀的數據到 T5 時刻才真正有效;這裏不在多說;

 

4.3、Error Respond

在讀和寫的過程,可能出現錯誤,錯誤通過 PSLVERR 信號來指明;

APB外圍設備不要求必須支持PSLVERR引腳,當不使用該引腳時,應被置低

4.3.1、Error response Write transfer

下面這個是寫失敗後的時序:

可以看到,在寫失敗後,PSLERR 信號被拉高了

 

4.3.2、Error response Read transfer

下面這個是讀失敗後的時序:

讀失敗後,PRDATA 上的數據不再有效

 

4.3.4、Mapping of PSLVERR

如果發生了失敗的情況 PSLVERR 信號會反饋到橋接的 AHB/AXI 總線上的回覆信號上

 

參考文獻:

http://blog.sina.com.cn/s/blog_13f7886010102x4t3.html

https://blog.csdn.net/cy413026/article/details/90751756

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章