AMBA初探


AMBA

Advanced Microcontroller Bus Architecture,片上總線標准

  • AMBA 1.0
    • ASB:Advanced System Bus
    • APB:Advanced Peripheral Bus
  • AMBA 2.0
    • AHB:Advanced High-performance Bus
  • AMBA 3.0
    • AXI:Advanced eXtensible Interface

ASB

  • 高速總線
  • 流水線操作
  • 支持多個總線主設備
  • 支持burst傳輸
  • 總線帶寬:8、16、32bit/s
  • 三態、雙向總線(不適合做DFT)
  • 上升沿或下降沿觸發

APB

  • 低速總線、低功耗
  • 接口簡單
  • 在Bridge中鎖存地址信號和控制信號
  • 適用於多種外設
  • 上升沿觸發

AHB

  • 高速總線,高性能
  • 2級流水線操作
  • 支持最多16個總線主設備
  • 支持burst傳輸
  • 總線帶寬:8、16、32、64、128bit/s
  • 上升沿觸發

AHB組成部分

  • AHB主設備master

    • 初始化一次讀寫操作
    • 某一時刻只允許一個主設備使用總線
    • CPU、DMA、DSP、LCDC...
  • AHB從設備slave

    • 響應一次讀寫操作
    • 通過地址映射來選中使用哪一個從設備
    • 外部存儲器控制器EMI、APB bridge
  • AHB仲裁器arbiter

    • 允許某一個主設備控制總線
    • AMBA協議中沒有定義仲裁算法
  • AHB譯碼器decoder

    • 通過地址譯碼決定選中哪一個從設備
  • AHB2APB Bridge

    • 可以鎖存所有的地址、數據和控制信號
    • 進行二級譯碼來產生APB從設備選中信號
  • APB總線上的所有其他模塊都是APB從設備

  • 其他問題

    • 與工藝無關
    • 沒有電氣特性
    • 僅在時鍾周期級定義時序(時序參數依賴於工藝和頻率)

AHB信號

Name Source Description
HCLK Clock source Bus clock
HRESETn Reset Controller Reset
HADDR[31:0] Master Address bus
HTRANS[1:0] Master Transfer type(IDLE、BUSY、SEQ、NONSEQ)
HWRITE Master Transfer direction
HPROT[3:0] Master Protection control(很少用)
HWDATA[31:0] Master Write data bus
HSELx Decoder Slave select
HRDATA[31:0] Slave Read data bus
HREADY Slave Transfer done
HRESP[1:0] Slave Transfer sesponse(Status)
  • HRESETn

    • 低電平有效
  • HADDR[31:0]

    • 32位系統地址總線
  • HWDATA[31:0]

    • 寫數據總線,從Master寫到Slave
    • 位寬為 32,即 4 Byte,因此地址每次增加 4
  • HRDATA[31:0]

    • 讀數據總線,從Slave讀到Master
    • 位寬為 32,即 4 Byte,因此地址每次增加 4
  • HTRANS:指出當前傳輸的status

    • 00 IDLE
      • Master占用主線,但沒進行傳輸
      • 兩次burst傳輸中間,Master發出IDLE
    • 01 BUSY
      • Master占用主線,但還沒准備好下一次傳輸
      • 一次burst傳輸中間,Master發出BUSY
    • 10 NONSEQ
      • 表明首次數據的傳輸
      • 地址和控制信號與上一次傳輸無關
    • SEQ
      • 表明burst接下來的傳輸
      • 地址和上一次傳輸相關
  • HSIZE:指出當前傳輸的大小

  • HBURST:指出傳輸的 burst 類型

    • 0、4、8、16......
    • INCR突發即不停止就一直突發
    • burst傳輸不可跨越1K邊界,因為從設備的最小地址間隙是1KB(400),INCR的burst都不用改,只需要HTRANS的SEQ改成NSEQ就行
  • HRESP

    • Slave的總線傳輸狀態
    • OKAY、ERROR、RETRY、SPLIT
  • HREADY

    • 高:Slave指出能夠進行傳輸
    • 低:Slave需延長時間接收
    • 不能超過16個時鍾周期
  • 兩個階段

    • 由HREADY信號決定需要幾個Cycle
    • 分為地址周期和數據周期
  • 流水線pipeline

    • 先地址,然后數據
  • HWRITE:讀寫控制

    • 高:寫
    • 低:讀
  • HSIZE[2:0]

    • 000-111,對應8-1024
    • 最大值的選擇取決於總線配置
    • 通常使用32bit/s
  • HPROT

    • 很少用,不看

AHB Slave短時間無法響應則HREADY拉低

AHB Slave長時間無法響應則發出Retry信號

WRAP說明

  • WRAP4:到 0x10(16)的倍數就回環

  • WRAP8:到 0x20(32)的倍數就回環

  • WRAP16:到 0x40(64)的倍數就回環

從設備響應信號

  • RETRY和SPLIT
    • RETRY:下次請求,本次Master還是一樣優先級
    • SPLIT:下次請求,本次Master優先級會降低
  • 兩周期響應原因
    • 流水線特性,使得Master有足夠時間處理下一次傳輸
  • Split傳輸過程
    1. 由主設備開始傳輸。
    2. 如果從設備需要多個周期才能獲取數據,則從設備給出一個SPLIT傳輸響應。從設備記錄主設備號: HMASTER。接着仲裁器改變主設備的優先級。
    3. 仲裁器grant其他的主設備,總線主設備移交。
    4. 當從設備准備結束本次傳輸,將設置給仲裁器的HSPLITx信號的相應位。
    5. 仲裁器恢復優先級。
    6. 仲裁器grant主設備,這樣主設備可以重新開始傳輸。
    7. 結束。

仲裁信號

Name Source Description 說明
HBUSREQx Master Bus request 每個Master都會發出
HLOCKx Master Locked transfers 鎖定此次傳輸
HGRANTx Arbiter Bus grant 指出Master x可訪問總線
HMASTER[3:0] Arbiter Master number Master的ID
HMASTLOCK Arbiter Locked sequence Master正在進行鎖定
HSPLITx[15:0] Slave(SPLIT-capable) Split completion request 選擇哪個master允許重試
  • 對於固定長度的burst傳輸,不必持續請求總線
  • 對於未定義長度的burst傳輸,主設備應該持續送出HBUSREQ信號,直到開始最后一次傳輸
  • 如果沒有主設備請求總線,則給缺省主設備grant信號,且HTRANS=IDLE
  • 建議主設備在鎖定總線傳輸結束之后插入IDLE傳輸,以重新仲裁優先級。

AHB-lite

  • 單個Master
    • 不需要HBUSREQ
    • 不需要HGRANT
  • 簡單Slave
    • 不需要retry
    • 不需要split
  • 兼容標准AHP協議
  • 允許更簡單的design

APB

AHB是機動車道,APB可以看成是非機動車道

慢速設備也可以走AHB機動車道

為了不影響AHB的效率

Name Description
PCLK Bus clock
PRESETn APB reset
PADDR[31:0] APB address bus
PSELx APB select
PENABLE APB strobe
PWRITE APB transfer direction
PRDATA[31:0] APB read data bus
PWDATA[31:0] APB write data bus
  • 非流水線pipeline
  • 最快2個cycle才能讀寫一個數據
    • PSEL起來
    • 然后PENABLE起來


免責聲明!

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



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