新聞中心

AHB總線協(xié)議

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

本文引用地址:http://butianyuan.cn/article/201807/383796.htm

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

第一個(gè)周期,master發(fā)起一個(gè)操作A,并驅(qū)動(dòng)地址和信號(hào);

第二個(gè)周期,slave收到了來自總線的請(qǐng)求,將HREADY信號(hào)拉高;

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

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

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

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

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

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

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

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

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

需要注意幾點(diǎn):

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

5.4 遞增burst

T1,master傳入地址和信號(hào),因?yàn)槭切碌腷urst開始,transfer的類型是NONSEQ;

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

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

T3,master發(fā)起了第二個(gè)transfer,因?yàn)槭峭粋€(gè)burst的第二個(gè)transfer,所以transfer的類型是SEQ;

T5,slave將HREADY信號(hào)拉低,告訴master需要等待一個(gè)周期;

T8時(shí)刻完成最后一個(gè)transfer。

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

5.5 wrapping 4-beat burst

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

5.6 遞增4拍burst

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

6.控制信號(hào)

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

響應(yīng)信號(hào)

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

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

立即完成一筆傳輸;

延遲一個(gè)或幾個(gè)周期完成傳輸;

傳輸失敗返回error;

延遲傳輸,釋放總線。

傳輸完成HREADY

為高時(shí)傳輸完成,為低時(shí)傳輸需要延遲。

傳輸響應(yīng)HRESP[1:0]

00: OKAY

01: ERROR

10: RETRY

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

11: SPLIT

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

地址譯碼

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

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

仲裁

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

HBUSREQx:master向arbiter發(fā)出接入請(qǐng)求的信號(hào)。

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

HGRANTx:arbiter產(chǎn)生指示master獲得授權(quán),當(dāng)HGRANTx信號(hào)為高同時(shí)HREADY為高時(shí),master可以向總線傳輸?shù)刂沸盘?hào)。

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

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

HSPLIT:供支持SPLIT傳輸使用。


上一頁 1 2 下一頁

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

評(píng)論


相關(guān)推薦

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

關(guān)閉