天天看點

APB協定學習筆記1. APB介紹2. 接口描述4. 事務5. ISSUE

1. APB介紹

APB(Advance Peripheral Bus)是AMBA總線的一部分。它是一個低成本的接口,是以最低功耗和減少端口複雜性為目标進行設計的。

APB接口用在低帶寬和不需要高性能總線的外圍裝置上。例如:UART,1248,鍵盤和滑鼠等。并且,可以用它來通路外圍裝置的可程式設計控制寄存器。

它的主要特性如下:

  • 是非流水的
  • 所有信号僅與時鐘上升沿有關(簡化了外圍裝置的內建設計流程)
  • 每個事務至少需要兩個時鐘周期,無需等待周期和回應信号
  • 隻有一個master——APB Bridge
  • 控制邏輯簡單,隻有四個控制信号
  • 可以和AXI和AHB進行連接配接

從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 來支援Transaction protection和 sparse data transfer 的功能。

2. 接口描述

Signal Source Width Description
PCLK 時鐘源 1 系統時鐘,傳輸發生在上升沿
PRESETn 複位源 1 複位信号,低使能
PPORT APB Bridge 3 保護類型,該信号訓示事務的正常、特權或安全保護級别,以及該事務是資料通路還是指令通路。
PADDR APB Bridge 位址信号,最高可達32位
PSELx APB Bridge 由APB bridge産生的信号,針對每一個Peripheral Bus Slave片選信号,表示x從機是否被選中
PENABLE APB Bridge 1 使能信号,标記傳輸使能
PWRITE APB Bridge 1 讀/寫控制信号,高位寫,低為讀
PWDATA APB Bridge 32 寫資料
PREADY Slave interface 1 标記從機是否已将資料發送到總線,高為ready
PRDATA Slave interface 32 讀資料
PSLVERR Slave interface 1 故障信号,高為發生故障

APB的讀寫資料總線是獨立的,都是32bit。因為它們沒有獨立的握手信号,是以不可能在同時發生資料傳輸。

3. 運作狀态

APB協定學習筆記1. APB介紹2. 接口描述4. 事務5. ISSUE

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. 事務

4.1. Write transfer

4.1.2. With no wait states

APB協定學習筆記1. APB介紹2. 接口描述4. 事務5. ISSUE

4.1.1. With wait state

APB協定學習筆記1. APB介紹2. 接口描述4. 事務5. ISSUE

在寫等待狀态時:需要保持以下信号不能改變:

PADDR,PWRITE,PSEL,PENABLE,PWDATA,PSTRB,PPROT

建議位址和寫入信号在傳輸後不要立即改變,而是保持穩定,直到另一個通路發生。這降低了功耗。

4.1.3. Write strobe

APB協定學習筆記1. APB介紹2. 接口描述4. 事務5. ISSUE

PSTRB,使稀疏資料傳輸在寫資料總線上。每bit對應于寫資料總線的一個位元組。當斷言為HIGH時,訓示寫資料總線的相應位元組包含有效資訊。

4.2. Read transfer

4.2.1. With no wait states

APB協定學習筆記1. APB介紹2. 接口描述4. 事務5. ISSUE

4.2.2. With wait state

APB協定學習筆記1. APB介紹2. 接口描述4. 事務5. ISSUE

在讀等待狀态時:需要保持以下信号不能改變:

PADDR,PWRITE,PSEL,PENABLE,PPROT

4.3. Error respond

使用PSLVERR來對讀寫過程中産生的錯誤進行訓示。PSLVERR隻在APB事務的最後一周期被認為是有效的,也就是當PSEL,PENABLE,PREADY全部為高電平。

建議在PSEL,PENABLE,PREADY中任意一個為低電平時,将PSLVERR也保持為低電平。

接收錯誤的事務可能改變了外設的狀态,也可能沒有,這兩者都是可以接受的。當一個寫事務收到一個錯誤時,這并不意味着外圍裝置中的寄存器沒有被更新,接收錯誤的讀取事務可能傳回無效的資料。在發生讀資料錯誤時,也沒有必要把讀資料總線置為全0。

PSLVERR在外圍裝置中不是一定非要實作的,如果外設中不包含該引腳。APB Bridge對應的輸入被恒置為低電平。

4.3.1. PSLVERR的映射

當AXI和APB進行橋接時:讀操作産生的PSLVERR映射到AXI的RRESP[1]信号,寫操作産生的PSLVERR映射AXI到BRESP[1]信号。

當AHI和APB進行橋接時:讀寫PSLVERR都映射到AHB的HRESP[0]信号。

4.4. Protection unit support

為了支援複雜的系統設計,互連線和系統中的其他裝置通常都需要提供防止非法傳輸的保護。對于APB接口,這種保護是由PPROT[2:0]信号提供的。

Normal or privileged, PPROT[0]:LOW表示一個正常通路,HIGH表示一個特權級通路。這是一些master用來訓示其處理模式的。特權處理模式通常在系統中具有更進階别的通路。

Secure or non-secure, PPROT[1]:LOW表示一個安全通路,HIGH表示一個非安全通路。在處理模式需要更大程度差別的系統中使用。

Data or Instruction, PPROT[2]:LOW表示一個資料通路,HIGH表示一個指令通路。該訓示做為一個提示出現,并不是所有的情況下都是準确的。當一個通路是指令資料混合項時,預設情況下建議将其标記為一個資料通路,除非明确知道它是一個指令通路。

5. ISSUE

5.1. 什麼情況下會報ERROR?

PSLVERR是在PPORT之前引入的。

5.2. PPORT狀态不比對會報ERR嗎?

5.3. 連接配接到APB Bridge的PRDATA是多個還是一個?

參考文獻:https://blog.csdn.net/zhoutaopower/article/details/103729440

參考文獻:IHI0024C_amba_apb_protocol_spec.pdf