<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應用 > AHB總線協(xié)議

          AHB總線協(xié)議

          作者: 時間:2018-07-25 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201807/383796.htm

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

          第一個周期,master發(fā)起一個操作A,并驅(qū)動地址和信號;

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

          第二個周期上升沿后,master發(fā)現(xiàn)有操作B需要執(zhí)行,并且檢查到上一周期的HREADY為高,則發(fā)起第二個操作B;

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

          第三個周期上升沿后,master發(fā)現(xiàn)有操作C需要執(zhí)行,并且檢查到上一周期的HREADY為高,則發(fā)起第三個操作C;

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

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

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

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

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

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

          需要注意幾點:

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

          5.4 遞增burst

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

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

          T3,slave采集到了master發(fā)來的BUSY,知道m(xù)aster需要等待一拍,所以slave會忽略這個BUSY transfer;

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

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

          T8時刻完成最后一個transfer。

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

          5.5 wrapping 4-beat burst

          跟之前唯一的區(qū)別在于地址的不同,在0x3C地址之后,根據(jù)回環(huán)的地址邊界,第三拍的地址變?yōu)?x30。一共四拍,4個地址,每個地址各不相同,這四個地址是一個回環(huán)范圍。起始地址決定了回環(huán)操作的回環(huán)范圍。

          5.6 遞增4拍burst

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

          6.控制信號

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

          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發(fā)起一筆傳輸后,slave可以決定這筆傳輸?shù)倪M程,而master不能取消已經(jīng)發(fā)出的傳輸。slave通過HREADY信號反映傳輸是否完成,通過HRESP[1:0]反映傳輸?shù)臓顟B(tài)。

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

          立即完成一筆傳輸;

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

          傳輸失敗返回error;

          延遲傳輸,釋放總線。

          傳輸完成HREADY

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

          傳輸響應HRESP[1:0]

          00: OKAY

          01: ERROR

          10: RETRY

          傳輸未完成,請求主設(shè)備重新開始一個傳輸,arbiter會繼續(xù)使用通常的優(yōu)先級

          11: SPLIT

          傳輸未完成,請求主設(shè)備分離一次傳輸,arbiter會調(diào)整優(yōu)先級方案以便其他請求總線的主設(shè)備可以訪問總線

          地址譯碼

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

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

          仲裁

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

          HBUSREQx:master向arbiter發(fā)出接入請求的信號。

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

          HGRANTx:arbiter產(chǎn)生指示master獲得授權(quán),當HGRANTx信號為高同時HREADY為高時,master可以向總線傳輸?shù)刂沸盘枴?/p>

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

          HMASTERLOCK:arbiter產(chǎn)生指示當前傳輸是否為鎖定序列傳輸。

          HSPLIT:供支持SPLIT傳輸使用。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 微控制器 控制

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();