一、APB 接口的基本概念
高級外設總線 (Advanced Peripheral Bus, APB) 是 ARM 公司開發(fā)的一種片上總線協(xié)議,屬于 AMBA (Advanced Microcontroller Bus Architecture) 總線家族的一部分。APB 專為低帶寬、低功耗的外設設計,旨在提供一種簡單、高效的方式來連接微控制器中的低速外設,如 UART、GPIO、定時器等。與 AMBA 家族中的其他總線 (如 AHB、AXI) 相比,APB 的設計更為簡化,降低了系統(tǒng)的復雜性和功耗,非常適合對成本和功耗敏感的嵌入式系統(tǒng)應用。
APB 的歷史發(fā)展
APB 最初作為 AMBA 1.0 規(guī)范的一部分被引入,旨在為 ARM 處理器提供一種連接低速外設的標準方法。隨著嵌入式系統(tǒng)的發(fā)展和需求變化,APB 經歷了多次修訂和改進,目前最新版本是 AMBA 5.0 規(guī)范中的 APB5。每個新版本都在保持原有簡單性的基礎上,增加了一些新特性,如更好的電源管理支持、錯誤檢測機制等,以適應不斷變化的應用需求。
APB 在系統(tǒng)中的位置
在典型的嵌入式系統(tǒng)中,APB 通常作為二級總線存在,通過橋接器與系統(tǒng)中的主總線 (如 AHB 或 AXI) 相連。主處理器通過主總線訪問高速設備,而低速外設則連接到 APB 總線上,這種分層設計使系統(tǒng)能夠同時滿足高速和低速設備的需求,優(yōu)化了系統(tǒng)性能和資源利用。
二、APB 接口的架構設計
基本組成部分
APB 接口主要由以下幾個部分組成:
APB 主設備:通常是系統(tǒng)中的處理器或 DMA 控制器,負責發(fā)起對從設備的讀寫操作。
APB 從設備:連接到 APB 總線上的各種外設,如 UART、GPIO、ADC 等,負責響應主設備的請求。
APB 橋接器:用于連接主總線 (如 AHB 或 AXI) 和 APB 總線的組件,負責協(xié)議轉換和數據傳輸。
互連結構:包括地址線、數據線和控制信號,用于在主設備和從設備之間傳輸數據和控制信息。
信號定義
APB 總線定義了一組標準信號,這些信號分為以下幾類:
地址和控制信號
PADDR [31:0]:32 位地址線,用于傳輸主設備要訪問的從設備地址。
PSELx:從設備選擇信號,每個從設備有一個獨立的 PSEL 信號,由主設備驅動。
PENABLE:使能信號,指示當前傳輸周期是否有效。
PWRITE:寫控制信號,高電平表示寫操作,低電平表示讀操作。
PPROT [2:0]:保護類型信號,用于指示傳輸的特權級別和安全屬性。
數據信號
PWDATA [31:0]:32 位寫數據線,用于主設備向從設備寫入數據。
PRDATA [31:0]:32 位讀數據線,用于從設備向主設備返回讀取的數據。
狀態(tài)信號
PREADY:就緒信號,由從設備驅動,表示當前傳輸是否完成。
PSLVERR:從設備錯誤信號,指示傳輸過程中是否發(fā)生錯誤。
傳輸機制
APB 采用兩階段傳輸機制,包括 SETUP 階段和 ENABLE 階段:
SETUP 階段:主設備驅動 PADDR、PSELx、PWRITE 等信號,指示要訪問的從設備地址、操作類型等信息。此時 PENABLE 信號為低電平。
ENABLE 階段:主設備將 PENABLE 信號置高,從設備根據 PADDR 和 PWRITE 信號執(zhí)行相應的讀寫操作,并在 PREADY 信號有效時返回數據或狀態(tài)。
這種兩階段傳輸機制簡化了總線控制邏輯,降低了硬件實現成本,但也限制了 APB 的傳輸效率,使其更適合低速外設的連接。