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


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

AMBA總線(二)

上一篇詳細說明了AHB基本結構以及控制線,下面下面進一步說明AHB的總線傳輸方式,APB總線以及IP間的互聯。

AHB總線

總線傳輸

  • 不是三態總線,讀數據總線和寫數據總線分開

  • Endian序

    • 在AMBA定義中沒有定義
    • 主設備和從設備應該采用同樣的印第安序
    • 不支持動態印第安序
  • 對於IP設計, 只有應用面比較廣泛的應用程序才支持兩種印第安序。

Endian序: 大印第安(大端序)序就是在存儲數據時,高位放在低地址是大印第安序, 高位放高地址是小印第安序(小端序)
小端序:


大端序:

AHB仲裁信號

  • HBUSREQ

    • 總線請求
  • HLOCKx

    • 高電平:主設備請求鎖定總線
  • HGRANTx

    • 指出主設備x可訪問總線
    • 主設備x控制總線:HGRANTx=1且HREADY=1
  • HMASTER[3:0]

    • 指出哪個主設備正在進行傳輸,提供進行split的信息
  • HMASTLOCK

    • 指出主設備正在進行一次鎖定傳輸
  • HSPLITx[15:0]

    • 從設備用這個信號告訴仲裁器哪個主設備允許重新嘗試一次split傳輸。
    • 每一位對應一個主設備
仲裁 - 沒有等待狀態的grant(授權)
仲裁 - 有等待狀態的grant

HGRANT和HREADY都為高時授權總線控制地址。

仲裁 - Burst傳輸之后移交總線

M1進行完一次burst傳輸后將授權移交給M2

總線主設備的Grant信號
  • 對於固定長度的burst傳輸,不必持續請求總線

  • 對於未定義長度的burst傳輸,主設備應該持續送request(HBUSREQ)信號,直到開始最后一次傳輸。

  • 如果沒有主設備請求總線,則給缺省主設備grant信號,且HTRANS=IDLE

  • 建議主設備在鎖定總線傳輸結束之后插入IDLE傳輸,以重置仲裁優先級。

Split傳輸過程

  1. 由主設備開始傳輸

  2. 如果從設備需要多個周期才能獲取數據,則從設備給出一個SPLIT傳輸響應,從設備記錄主設備號:HMASTER

  3. 接着仲裁器改變主設備的優先級

  4. 仲裁器grant其他的主設備,總線主設備移交。

  5. 當從設備准備結束本次傳輸,將設置給仲裁器的HSPLITx信號的相應位

  6. 仲裁器恢復優先級

  7. 仲裁器grant主設備,這樣主設備可以重新開始傳輸

  8. 結束

防止死鎖(deadlock)

  • 當多個不同的主設備試圖訪問同一個從設備,這個從設備發出了SPLIT或RETRY信號,這是很可能發生deadlock

  • 從設備最多可以接收系統中16個主設備的請求。只需要記錄主設備號(忽略地址和控制信號)

  • 給出RETRY響應的從設備在某一時刻只能由一個主設備訪問,可以使用一些硬件保護機制,比如ERROR

AHB接口

主設備接口

從設備接口

仲裁器

地址譯碼器

AHB連接示例

+ Master 0 can access private RAM, APM and external interface + Master 1 can access DMA slave, APB and external interface + Parallel access improves system bandwidth

AHB-Lite

  • AHB 的簡化版

    • 只有單Master
    • 不需要 HBUSREQ & HGRANT (沒有其他主機,所以無需request和授權)
  • 簡單的從機

    • 沒有 retry or split 響應
    • Standard AHB modules can be used
    • Allows easier module design/debug

AHB總結

  • 主要組成部分
    • Master、slaves、arbiter、decoder
  • 傳輸的過程
    • 流水線機制
    • Address phase和data phase
  • 如何提高性能
    • Burst read/write
  • 仲裁機制
    • 總線控制器的移交
  • Slave短時間內無法響應
    • HREADY信號拉低
  • Slave長時間內無法響應
    • 插入RETRY
    • Master不能進行傳輸
    • 插入BUSY

建議

  • Arbiter的優先級可以配置
  • Slave長時間不能響應的話,一般不支持SPLIT響應,使用RETRY響應
  • 總線上如果只有一個master的話,可以使用AHB lite協議,不用arbiter
  • 設計一個新的IP時,要仔細核對AMBA的Feature和IP所支持的Feature是否匹配。

APB

APB所處的位置:

APB信號

  • PADDR[31:0]
    • 地址總線,由設備總線的bridge單元驅動
  • PSELx
    • 從譯碼器來的信號,到每一個總線從設備x
  • PENABLE
    • 用於在設備總線上把所有訪問按時間階段進行
  • PWRITE
    • 高電平:寫
    • 低電平:讀
  • PRDATA和PWDATA
    • 最多32位寬

地址解碼的分級

AHB中的包含了APB slave的地址,APB中又包含了下層外圍設備的地址。

APB互聯

APB讀寫

寫傳輸:

讀傳輸:

AHB2APB Bridge

Bridge FSM

APB slave

APB到AHB的接口

AHB讀APB從機的數據

可見,APB從機的PRDATA信號線可以直接連接到AHB的讀信號線(讀Data沒有延遲) 因此可以使得AHB工作在比較高的頻率。

AHB寫APB從機

Back to Back 傳輸:

互聯

  • 每一個從設備都占用系統中的一段地址空間
  • 所有的從設備都是可尋址的
  • 寄存器/存儲器都是存儲器映射方式訪問
  • CPU/IP讀寫其他IP的數據類似於讀寫存儲器

IP間的互聯通信

主設備被arbiter grant之后,可以訪問總線上的所有從設備

一般IP同時擁有主從接口。

CPU和IP之間的通信

  • CPU總是作為主設備
  • IP總是作為從設備
  • IP可以發出一個中斷請求
  • CPU進入中斷模式,由interrupt service routine (ISR)來處理中斷

Example: DMA

CPU通過讀寫DMA的總線接口,可以讀取DMA的狀態(讀slave),以及配置DMA的工作模式(寫slave)

Step 0:

Step 1&2:

Step 3:
此時控制權移交給DMA,DMA作為master對兩個slave進行數據搬運(先讀入再寫出)

Step 4:

這個箭頭畫反了,反正就是表示CPU讀取DMA。


免責聲明!

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



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