新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > AHB總線協議

        AHB總線協議

        作者: 時間:2018-07-25 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201807/383796.htm

        擴展數據周期的一個負效應是必需延長相應的下一筆傳輸的地址周期。A和C為零等待傳輸,B加入了一個等待周期,因此相應的C地址周期要進行擴展。

        第一個周期,master發起一個操作A,并驅動地址和信號;

        第二個周期,slave收到了來自總線的請求,將HREADY信號拉高;

        第二個周期上升沿后,master發現有操作B需要執行,并且檢查到上一周期的HREADY為高,則發起第二個操作B;

        第三個周期,master獲取HREADY信號為高,表示操作A已經完成;

        第三個周期上升沿后,master發現有操作C需要執行,并且檢查到上一周期的HREADY為高,則發起第三個操作C;

        第三個周期上升沿后,slave由于繁忙插入了一個等待狀態,將HREADY拉低;

        第四個周期,master獲取HREADY信號為低,知道slave希望等待,于是master保持和上一拍一樣的信號;

        第四個周期,slave處理完了事務,將HREADY信號拉高,表示可以繼續處理;

        第五個周期,master獲取HREADY信號為高,知道slave已經可以處理B操作;

        第五個周期上升沿后,B操作完成;

        第六個周期上升沿后,C操作完成。

        需要注意幾點:

        HREADY在一定程度上表示了slave的pipeline能力,在AHB中是2個pipe,也就是總線上最多存在2個未處理完的transfer。只有當總線上未完成的transfer少于2個時,master才能發起操作。

        5.4 遞增burst

        T1,master傳入地址和信號,因為是新的burst開始,transfer的類型是NONSEQ;

        T2,由于master不能在第二個周期里處理第二拍,所以master使用BUSY transfer來為自己延長一個周期的時間。注意,雖然是延長了一個周期,但是master需要給出第二個transfer的地址和信號;

        T3,slave采集到了master發來的BUSY,知道master需要等待一拍,所以slave會忽略這個BUSY transfer;

        T3,master發起了第二個transfer,因為是同一個burst的第二個transfer,所以transfer的類型是SEQ;

        T5,slave將HREADY信號拉低,告訴master需要等待一個周期;

        T8時刻完成最后一個transfer。

        需要注意的 雖然slave會忽略掉BUSY transfer,但是master也需要給出下一拍的地址和控制信號。

        5.5 wrapping 4-beat burst

        跟之前唯一的區別在于地址的不同,在0x3C地址之后,根據回環的地址邊界,第三拍的地址變為0x30。一共四拍,4個地址,每個地址各不相同,這四個地址是一個回環范圍。起始地址決定了回環操作的回環范圍。

        5.6 遞增4拍burst

        和上面的基本一致,只不過地址在0x30并不回環,而是遞增。

        6.控制信號

        HTRANS[1:0]
        傳輸類型
        Description
        00IDLE主設備占用總線,但沒進行傳輸
        兩次burst傳輸中間主設備可發IDLE
        此時就算slave被使能,也不會從總線上獲取任何的數據信號。如果此時salve被選中,那么每一個IDLE周期slave都要通過HRESP[1:0]返回一個OKAY響應
        01BUSY主設備占用總線,但是在burst傳輸過程中還沒有準備好進行下一次傳輸
        一次burst傳輸中間主設備可發BUSY
        這時slave不會從總線上收取數據而是等待,并且通過HRESP[1:0]返回一個OKAY響應。需要注意的是,這個transfer需要給出下一拍的地址和控制信號,盡管slave不會去采樣。
        10NONSEQ表明一次單個數據的傳輸或者一次burst傳輸的第一個數據
        地址和控制信號與上一次傳輸無關
        11SEQburst傳輸接下來的數據
        地址和上一次傳輸的地址是相關的,這時總線上的控制信號應當與之前的保持一致,地址視情況遞增或者回環。

        HSIZE[2:0]SizeDescription
        0008 bitsByte
        00116 bitsHalfword
        01032 bitsWord
        01164 bits-
        100128 bits4-word line
        101256 bits8-word line
        110512 bits-
        1111024 bits-

        • Burst傳輸類型

        burst不能超過1K地址邊界。

        HBURST[2:0]類型Description
        000SINGLESingle transfer
        001INCRIncrementing burst of unspecified length
        010WRAP44-beat wrapping burst
        011INCR44-beat increment burst
        100WRAP88-beat wrapping burst
        101INCR88-beat increment burst
        110WRAP1616-beat wrapping burst
        111INCR1616-beat increment burst

        響應信號

        master發起一筆傳輸后,slave可以決定這筆傳輸的進程,而master不能取消已經發出的傳輸。slave通過HREADY信號反映傳輸是否完成,通過HRESP[1:0]反映傳輸的狀態。

        slave可以如下方式完成一筆傳輸:

        立即完成一筆傳輸;

        延遲一個或幾個周期完成傳輸;

        傳輸失敗返回error;

        延遲傳輸,釋放總線。

        傳輸完成HREADY

        為高時傳輸完成,為低時傳輸需要延遲。

        傳輸響應HRESP[1:0]

        00: OKAY

        01: ERROR

        10: RETRY

        傳輸未完成,請求主設備重新開始一個傳輸,arbiter會繼續使用通常的優先級

        11: SPLIT

        傳輸未完成,請求主設備分離一次傳輸,arbiter會調整優先級方案以便其他請求總線的主設備可以訪問總線

        地址譯碼

        地址譯碼器用于為總線上每個slave提供選擇信號HSELx,選擇信號是通過組合邏輯對地址碼譯碼產生的。只有當前的數據傳輸完成后(HREADY為高),slave才會采樣地址和控制信號以及HSELx。在一定條件下可能會出現這樣的情況:產生HSELx信號而HREADY為低,在當前傳輸后slave會改變。

        每個slave最小的地址空間為1KB,所有的master的burst傳輸上限也是1KB,如此設計保證了不會出現地址越界問題。當一個設計不會用到所有的地址空間時,可能出現訪問到一個不存在的地址的情況,這就需要增加一個附加的默認slave來為上面的情況提供一個響應。當SEQ或NONSEQ傳輸訪問到一個不存在的地址,默認slave應該提供ERROR響應;當IDLE或BUSY傳輸訪問到一個不存在的地址,默認slave會響應OKAY。地址譯碼器會帶有實現默認slave的功能。

        仲裁

        仲裁機制保證了任意時刻只有一個master可以接入總線。arbiter決定哪個發出接入請求的master可以接入總線,這通過優先級算法實現。AHB規范并沒有給出優先級算法,設計者需要根據具體的系統要求定義。一般情況下arbiter不會中斷一個burst傳輸,將總線接入權讓給其他master。當然未定義長度的burst傳輸是可以打斷的,這要看優先級算法是如何規定的。如果一筆burst被打斷,master再度獲得接入權限時,會傳遞剩余的部分。如一筆長度為INCR8的傳輸在傳遞3 beat后被打斷,master再次獲得接入授權后,會繼續傳輸剩余的5 beat,剩余部分可以由一個SINGLE和一個INCR4組成,或者一個INCR。

        HBUSREQx:master向arbiter發出接入請求的信號。

        HLOCKx:指示是否要進行不可中斷的傳輸,這一信號與HBUSREQx同時由master向arbiter發出。

        HGRANTx:arbiter產生指示master獲得授權,當HGRANTx信號為高同時HREADY為高時,master可以向總線傳輸地址信號。

        HMASTER[3:0]:arbiter產生指示哪個master獲得授權,這一信號用于地址控制多路來選擇哪個master接入總線。

        HMASTERLOCK:arbiter產生指示當前傳輸是否為鎖定序列傳輸。

        HSPLIT:供支持SPLIT傳輸使用。


        上一頁 1 2 下一頁

        關鍵詞: 微控制器 控制

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 和林格尔县| 栾城县| 盈江县| 金华市| 聂荣县| 冷水江市| 象州县| 河东区| 华坪县| 民和| 凤阳县| 玛纳斯县| 井冈山市| 德江县| 体育| 晋城| 海城市| 莱阳市| 南澳县| 珠海市| 田阳县| 武冈市| 瓮安县| 大冶市| 浦江县| 玛多县| 清涧县| 中牟县| 应用必备| 喀什市| 江津市| 郎溪县| 琼结县| 安图县| 富蕴县| 绍兴县| 文登市| 达州市| 旬阳县| 丰原市| 密山市|