總線協議 -- AMBA總線(一)


資料來源:https://wenku.baidu.com/view/bbacbd36e109581b6bd97f19227916888586b999.html
本內容只是根據上面的資料做了整理

AMBA總線(一)

發展史

  • AMBA 1.0
    • ASB 和 APB
  • AMBA 2.0
    • AHB, ASB 和 APB
  • AMBA 3.0
    • AMBA Advanced eXtensible Interface (AXI)

簡介

AHB

  • 高速總線,高性能
  • 流水線操作
  • 可支持多個總線主設備(最多16個)
  • 支持burst傳輸
  • 總線帶寬:8、16、32、64、128bits
  • 上升沿觸發操作
  • 對於一個新設計建議使用AHB

AHB 組成

  • AHB 主設備(master)
    • 初始化一次讀/寫操作
    • 某一時刻只允許一個主設備使用總線
    • uP、DMA、DSP、LCDC …
  • AHB從設備(slave)
    • 響應一次讀/寫操作
    • 通過地址映射來選擇使用哪一個從設備
    • 外部存儲器控制器EMI、APB bridge、UART、 …
  • AHB仲裁器(arbiter)
    • 允許某一個主設備控制總線
    • 在AMBA協議中沒有定義仲裁算法
  • AHB譯碼器(decoder)
    • 通過地址譯碼來決定選擇哪一個從設備

ASB

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

APB

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

APB 組成

  • AHB2APB Bridge
    • 可以鎖存所有的地址、數據和控制信號
    • 進行二級譯碼來產生APB從設備選擇信號
  • APB總線上的所有其他模塊都是APB從設備
    • 不是流水線方式
    • 接口是零功耗

AHB

AHB總線互聯

基本信號

  • HRESETn
    • 低電平有效
  • HADDR[31:0]
    • 32位系統地址總線
  • HWDATA[31:0]
    • 寫數據總線,從主設備寫到從設備
  • HRDATA[31:0]
    • 讀數據總線,從從設備讀到主設備
  • HTRANS
    • 指出當前傳輸的狀態
    • NONSEQ、SEQ、IDLE、BUSY
  • HSIZE
    • 指出當前傳輸的大小
  • HBURST
    指出傳輸的burst類型
  • HRESP
    • 從設備發給主設備的總線傳輸狀態
    • OKAY、ERROR、RETRY、SPLIT
  • HREADY
    • 高:從設備指出傳輸結束
    • 低電平:從設備需延長傳輸周期

AHB基本傳輸

  • 兩個階段
    • 地址周期,只有一個cycle
    • 數據周期,由HREADY信號決定需要幾個cycle
  • 流水線傳送
    • 先是地址周期,然后是數據周期

一次無需等待狀態的簡單傳輸

如果slave沒有准備好?

需要兩個等待周期的簡單傳輸

根據傳輸規則,slave不能插入超過16個等待周期!

流水線傳輸

  • HBURST指定了傳輸burst的類型,分為:
    • Single Transfer
    • 增量傳輸,不指定長度
    • 4-拍
    • 8-拍
    • 16-拍

如果傳輸過程中從設備忙碌,可以通過HREADY信號控制,但是如果主設備忙碌呢? -- 通過HTRANS控制

傳輸類型

  • HTRANS[1:0]:控制傳輸類型
    • 四種類型:IDLE、BUSY、NONSEQ、SEQ
  • 00:IDLE
    • 主設備占用總線,但沒進行傳輸
    • 兩次burst傳輸中間主設備可發IDLE
  • 01:BUSY
    • 主設備占用總線,但是在burst傳輸過程中還沒有准備好進行下一次傳輸
    • 一次burst傳輸中間主設備可發BUSY
  • 10:NOSEQ
    • 表明一次單個數據的傳輸或者一次burst傳輸的第一個數據地址和控制信號與上一次傳輸無關
  • 11:SEQ
    • 表明burst傳輸接下來的數據地址和上一次傳輸的地址是相關的

其他信號

  • HWRITE

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

    • 000:8bits 100:128bits
    • 001:16bits 101:256bits
    • 010:32bits 110:513bits
    • 011:64bits 111:1024bits
    • 最大值受總線的配置所限制
    • 通常使用32bits(010)
    • HADDR的地址必須由HSIZE作為最小單位。
  • HPROT[3:0]

    • HPROT[0]: OPCODE/DATA
    • HPROT[1]: USER/PRIVILGED
    • HPROT[2]: Bufferable/Non-Bufferable
    • HPROT[3]: Cacheable/Non-Cacheable

AHB 突發傳輸

  • AHB Burst 操作
    • 4beat、8beat、16beat、單個字節傳輸、未定義長度的增量傳輸

    • 支持incrementing(增量)和wrapping兩種burst傳輸

    • Incrementing burst

      • 地址是上一次的傳輸地址加1個傳輸單位
    • Wrapping burst

      • 例:4beat的wrapping burst 字傳輸(4byte):
      • 0x34 -> 0x38 -> 0x3c -> 0x30
      • 應用場合:Cache填充

地址計算示例

根據HSIZE和HBURST來計算地址
例:起始地址是0x48,HSEZE=010(32bits)

Burst類型: INCR8
Burst類型: WRAP8
Burst類型:INCR4
Burst類型:WRAP4
Burst類型:未定義長度的
LDM(Load Multiple instruction) AHB Activity

多指令加載:

Burst 傳輸不能超過1k邊界

  • Burst傳輸不能穿越1K邊界

    • 一個從設備最小的地址間隙是1KB
    • NONSEQ -> SEQ -> 1KB Boundary -> NONSEQ -> SEQ …
  • 主設備不能試圖開始一個可能穿越1K邊界的INCR傳輸

地址譯碼

  • HSELx:選擇從設備

    • 指出由主設備所選擇的從設備
  • 由地址譯碼器來提供選擇信號

  • 一個從設備應該至少占用1KB的存儲空間

  • 需要一個額外的缺省從設備來映射其他的存儲地址

通過地址譯碼來片選從設備

從設備響應

  • 所訪問的從設備必須響應這次傳輸

  • 從設備可能返回的響應:

    • 完成這次傳輸
    • 插入等待狀態(HREADY信號)
    • 發出錯誤信號表示這次傳輸失敗
    • 分離傳輸,使得總線可用於其他傳輸(SPLIT)
從設備的響應信號
  • HREADY:transfer done

  • HRESP[1:0]:transfer response

    • 00:OKAY 成功(單周期響應
    • 01:ERROR 失敗(兩周期響應
    • 10:RETRY 傳輸未完成,請求主設備重新開始一個傳輸(兩周期響應
    • 11:SPLIT 傳輸未完成,請求主設備分離一次傳輸(兩周期響應

總線的流水特性需要從設備兩個周期的響應。可以使得主設備有足夠的時間處理下一次傳輸。

Retry 響應

可以看到,主設備在從設備忙時發送了兩次傳輸,Retry信號跨了兩個周期,第二個周期后總線開始新的一次傳輸。

  • RETRYSPLIT的主要區別在於仲裁的方式

    • RETRY:arbiter會繼續使用通常的優先級
    • SPLIT:arbiter會調整優先級方案以便其他請求總線的主設備可以訪問總線
  • 總線主設備應該用同樣的方式處理RETRY響應和SPLIT響應

Locked 傳輸

  • 被鎖的傳輸序列不能被打斷

  • HLOCK信號表示下一次的傳輸時被鎖傳輸

    • 上圖中A和B信號時被鎖住的,不能分開
  • ARM 處理器只在 SWP 指令中使用HLOCK

總線傳輸的其他細節放到第二部分。


免責聲明!

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



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