APB總線簡單介紹


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簡介

APB(Advanced Peripheral Bus),外圍總線。APB屬於AMBA 3 協議系列,它提供了一個低功耗的接口, 並降低了接口的復雜性。 APB接口用在低帶寬和不需要高性能總線的外圍設備上。 APB是非流水線結構,所有的信號僅與時鍾上升沿相關,這樣就可以簡化APB外圍設備的設計流程,每個傳輸至少耗用兩個周期。APB可以與AMBA高級高性能總線(AHB-Lite) 和AMBA 高級可擴展接口 (AXI)連接。

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

Operating states

a) 系統初始化為IDLE狀態,此時沒有傳輸操作,也沒有選中任何從模塊。

b) 當有傳輸要進行時,PSELx=1,PENABLE=0,系統進入SETUP狀態,並只會在SETUP 狀態停留一個周期。當PCLK的下一個上升沿時到來時,系統進入ENABLE 狀態。

c) 系統進入ENABLE狀態時,維持之前在SETUP 狀態的PADDR、PSEL、PWRITE不變,並將PENABLE置為1。傳輸也只會在ENABLE狀態維持一個周期,在經過SETUP與ENABLE狀態之后就已完成。之后如果沒有傳輸要進行,就進入IDLE狀態等待;如果有連續的傳輸,則進入SETUP狀態。

信號描述

下表給出了APB的信號。APB的支持最大32-bit的數據位寬。APB協議有兩個獨立的數據通道,讀通道和寫通道,由於APB的兩個通道沒有自己的handshake信號(vaild/ ready),因此兩個通道不會同時使用。

APB signal descriptions

除了上表的信號外,APB還有兩個信號接口:

PPROT: 保護類型,分為 normal, privileged, secure, data/instruction 訪問。

PSTRRB: 寫選通信號,指示哪個字節是有效的數據,PSTRB與PWDATA之間的關系為PSTRB[n] <--> PWDATA[(8n+7):(8n)]​

傳輸

寫傳輸

寫傳輸包括兩種類型:無等待狀態和有等待狀態

無等待狀態

下圖顯示了一個基本的無等待狀態的寫傳輸。

Write transfer with no wait states

地址、寫入數據、寫入信號和選擇信號都在時鍾上升沿后改變。第一個時鍾周期叫做Setup phase。 下一個時鍾沿后使能信號PENABLE被置位,表示Access phase就位。地址、數據和控制信號在Access phase期間有效。傳輸在該周期后結束。使能信號PENABLE, 在傳輸結束后清空。 選擇信號PSELx同樣被置低,除非緊接着下一傳輸開始。

有等待狀態

下圖展示了 PREADY 信號是如何擴展了從器件的傳輸。

Write transfer with wait states

​在Access phase期間,當PENABLE為高,傳輸可以通過拉低PREADY來擴展傳輸。下述信號仍舊不變:• 地址: PADDR• 寫信號: PWRITE• 選擇信號: PSEL• 使能信號:PENABLE• 寫入的數據: PWDATA.

 

讀傳輸

讀傳輸包括以下兩種類型:無等待狀態和有等待狀態

​無等待狀態

 

下圖顯示了一個讀傳輸的無等待狀態的時序圖。從器件必須在讀傳輸結束前提供數據。​

Read transfer with no wait states

有等待狀態

下圖顯示了信號是如何擴展傳輸的。如果在Access phase期間PREADY信號拉低,則傳輸被擴展。但下述信號不變:• 地址: PADDR• 寫信號: PWRITE• 選擇信號: PSEL• 使能信號: PENABLE.

圖中顯示了如何使用PREADY信號來添加兩個周期,你也可以添加數個周期。

 

 

Read transfer with wait states

​錯誤響應

使用PSLVERR來指示APB傳輸錯誤。當PSELPENABLE以及PREADY 都為高時,PSLVERR才在最后一個周期進行判斷。 當任何一個PSELPENABLE或者PREADY為低時,你可以將PSLVERR拉低,這是推薦,並不是強制要求。 收到一個錯誤后,可能或不可能改變外圍器件的狀態。 APB外圍設備不要求必須支持PSLVERR引腳,當不使用該引腳時,應被置低。

寫傳輸失敗的例子。

Example failing write transfer

讀傳輸同樣可以使用錯誤響應,下圖便是一個錯誤響應的例子

 

PSLVERR映射:

AXI橋接到APB: AXI的RRESP/BRESP = APB的SLVERR(read: PSLVERR -> RRESP[1], write: PSLVERR -> BRESP[1])

AHB橋接到APBPSLVERR被映射到HRESP = ERROR(PSLVERR -> HRESP[0])

 

操作狀態

下圖給出了 APB的操作流程

State diagram

​狀態機按照下面的狀態執行:

IDLE 這是默認的APB狀態

SETUP 當傳輸被請求時,總線進入SETUP狀態,選擇信號 PSELx,被置位。總線僅在SETUP 狀態停留一個時鍾周期,並在下一個時鍾周期進入ACCESS狀態

ACCESS 使能信號PENABLE, 在ACCESS狀態中置位。在傳輸從SETUP狀態到ACCESS狀態轉變的過程中address, write, select和write data信號必須保持不變。從ACCESS狀態退出,由從器件的PREADY 信號控制:a) 如果PREADY 為低,保持ACCESS狀態。b)如果PREADY 為高,則退出ACCESS狀態,如果此時沒有其它傳輸請求,總線返回IDLE狀態,否則進入SETUP狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM