-
AHB總線結構如圖所示:
-
信号清單:
-
仲裁信号
在一次 AMBA AHB 傳輸開始之前總線主機必須被授予通路總線。這個過程開始于總線主機向仲裁器斷言一個請求信号。仲裁器訓示主機何時能夠被授予使用總線。被授權的總線主機通過驅動位址和控制信号來發起一次 AMBA AHB 傳輸。這些信号提供關于位址、方向和傳輸寬度的資訊,以及表示傳輸類型是否為一次突發傳輸的部分。
寫資料總線用來将資料從主機傳輸到從機上,而讀資料總線用來将資料從從機傳輸到主機上。每次傳輸包含:
- 一個位址和控制周期;
- 一個或多個資料周期。
位址不長期有效是以所有從機必須在這個時段(傳輸位址時)采樣位址。然而,通過HREADY 信号可以延長資料。當該信号為低時導緻在傳輸中插入等待狀态同時允許從機有額外的時間提供或者采樣資料。
-
基本傳輸
AHB 傳輸包含兩個截然不同的部分:
- 位址相位,隻持續單個周期;
- 資料相位,可能需要多個周期。這通過使用 HREADY 信号實作。
圖 3.3表示了最簡單的傳輸,沒有等待狀态。
在這個沒有等待狀态的簡單傳輸中:
- 主機在 HCLK 的上升沿之後将位址和控制信号驅動到總線上;
- 然後在時鐘的下一個上升沿從機采樣位址和控制資訊;
- 在從機采樣了位址和控制信号後能夠開始驅動适當的響應并且該響應被總線主機在第三個時鐘的上升沿采樣。
這個簡單的例子示範了在不同的時鐘階段傳輸的位址和資料相位是如何産生的。事實上,任何傳輸的位址相位在前一次傳輸的資料相位期間出現。這種位址和資料的交疊是總線傳輸通道的基本性質同時允許高性能的操作。同時仍然給從機提供足夠的時間來産生傳輸響應。
從機隻有當HREADY信号為高時才能采樣位址信号、控制信号和HSELx信号,HREADY信号為高,表示目前傳輸完成。某些情況下HSELx信号會在HREADY信号為低時置位,但是從機會等到目前傳輸完成再做出響應。
從機也可能插入等待周期到任意傳輸中,如圖 3.4所示,這樣擴充了傳輸完成允許的附加時間
注:
對寫操作而言總線主機必須保持資料在整個擴充周期中穩定。
對讀傳輸從機沒必要提供有效資料直到傳輸将要結束時。
當傳輸以這種方式擴充時随後的傳輸将會有位址相位擴充的副作用。如圖 3.5所示,表示了到三個不相關的位址A、 B和C的傳輸。
在圖 3.5中:
- 到位址 A 和 C 的傳輸都是零等待狀态;
- 到位址 B 的傳輸是一個等待狀态;
- 傳輸到位址 B 的擴充資料相位對傳輸到位址 C 的擴充位址相位有影響。位址C的相關信号必須在位址B傳輸完成前保持穩定。
傳輸類型
在圖 3.6中:
- 第一個傳輸是一次突發的開始是以傳輸類型為非連續;
- 主機不能立刻執行突發的第二次傳輸是以主機使用了忙傳輸來延時下一次傳輸的開始。在這個例子中主機在它準備還突發的下一次傳輸之前僅請求了一個忙周期,下一次傳輸的完成沒有等狀态;
- 主機立刻執行突發的第三次傳輸,但是這時從機不能完成(傳輸)并用 HREADY來插入一個等待狀态;
- 突發的最後一個傳輸以無等待狀态完成。
和傳輸類型和突發類型一樣每次傳輸将會有一組控制信号以提供傳輸的附加資訊。這些控制信号和位址總線有嚴格一緻的時序。然而,在一次突發傳輸過程中它們必須保持不變。
當 HWRITE 為高,該信号表示一個寫傳輸并且主機将資料廣播到寫資料總線上,HWDATA[31: 0]。當該信号為低時将會執行一個讀傳輸并且從機必須産生資料到讀資料總線 HRDATA[31: 0]。
HSIZE[2: 0]表示傳輸的大小,見表 3.3。
HSIZE[2] | HSIZE[1] | HSIZE[0] | 大小 | 描述 |
8 位 | 位元組 | |||
1 | 16 位 | 半字 | ||
1 | 32 位 | 字 | ||
1 | 1 | 64 位 | - | |
1 | 128 位 | 4 字線 | ||
1 | 1 | 256 位 | 8 字線 | |
1 | 1 | 512 位 | - | |
1 | 1 | 1 | 1024 位 | - |
可以配置設定給單個從機的最小位址空間是1kB。所有的主機被設計成不會執行超過1kB邊界的增量傳輸,進而確定一個突發永遠不會跨越位址解碼邊界。
從機傳輸響應
在主機發起傳輸後,由從機決定傳輸該如何進行。 AHB 規範中沒有做出總線主機在傳輸已經開始後取消傳輸的規定。隻要從機被通路那它必須提供一個表示傳輸狀态的響應。 HREADY 信号被用來擴充傳輸并且和響應信号 HRESP[1: 0]相結合,以提供傳輸狀态。從機能夠用許多種方式來完成傳輸。它能:
- 立刻完成傳輸;
- 插入一個或者多個等待狀态以允許有時間來完成傳輸;
- 發出一個錯誤信号來表示傳輸失敗;
- 延時傳輸的完成,但是允許主機和從機放棄總線,把總線留給其他傳輸使用。
傳輸完成
HREADY 信号用來擴充一次 AHB 傳輸的資料部分。當 HREADY 信号為低時表示傳輸将被擴充而當其為高時表示傳輸完成。
注:每個從機必須有一個預先确定的在從機放棄總線之前插入的最大等待狀态數目,以便能夠計算通路總線的延時。建議但不強制規定,從機不要插入多于 16 個等待狀态以阻止任何單個通路将總線鎖定較長的時鐘周期。
傳輸響應
典型的從機将會用 HREADY 信号來在傳輸中插入适當數量的等待狀态而傳輸在HREADY 為高時完成并且給出 OKAY 響應,表示傳輸成功完成。ERROR 響應被從機用來表示某種形式的錯誤條件和相關的傳輸。這被用作錯誤保護,例如試圖寫一個隻讀的存儲空間。SPLIT 和 RETRY 響應組合允許從機延長傳輸完成的時間,但是釋放總線給其他主機使用。這些響應組合通常僅由有高通路延時的從機請求并且從機能夠利用這些響應編碼來確定其他主機在長時間内不被阻止通路總線。
對于從機來說,決定是否插入等待狀态的優先級要比決定給出什麼響應要高,是以插入等待狀态時響應為“okey”。
雙周期響應
僅有 OKAY 響應可以在單個周期裡給出。 ERROR、 SPLIT 和 RETRY 響應需要至少兩個周期。為了完成這些響應中的任意一個那麼在倒數第二個(最後一個的前一個)周期從機驅動 HRESP[1: 0]以表示 ERROR、 RETRY 或者 SPLIT 并同時驅動 HREADY 為低以給傳輸擴充一個額外的周期。在最後一個周期 HREADY 被驅動為高電平以結束傳輸,同時HRESP[1: 0]保持驅動以表示 ERROR、 RETRY 或者 SPLIT。
如果從機需要兩個以上的周期以提供 ERROR、 SPLIT 或者 RETRY 響應那麼額外的等待狀态可能會在傳輸開始時被插入。在這段時間 HREADY 信号将為低電平同時響應必須被設為 OKAY。
需要雙周期響應是因為總線通道的本質特征。在從機開始發出 ERROR、 SPLIT 或者RETRY 中任何一個響應時接下來傳輸的位址已經廣播到總線上了。雙周期響應允許主機有足夠的時間來取消該位址并且在開始下一次傳輸之前驅動 HTRANS[1: 0]為空閑傳輸。
對于 SPLIT 和 RETRY 響應接下來的傳輸必須取消因為在目前傳輸完成之前禁止下一次傳輸發生。然而,對于 ERROR 響應,由于目前傳輸不被重複,是以可以選擇完成接下來的傳輸。
圖中包含以下事件:
- 主機從位址 A 發起傳輸;
- 這次傳輸在接收到響應之前主機将位址移動到 A + 4;
- 從機在位址 A 不能立刻完成傳輸是以從機發出一個 RETRY 響應。該響訓示主機在位址 A 的傳輸無法完成并且在位址 A + 4 的傳輸被取消而用空閑傳輸替代。
圖 3.14表示了一個傳輸中從機請求一個周期來決定将要給出的響應(在HRESP為OKAY的時間段),之後從機用一個雙周期的ERROR響應結束了傳輸。
錯誤響應
如果從機提供一個錯誤響應那麼主機可以選擇取消突發中剩下的傳輸。然而,這并不是一個嚴格要求同時主機繼續突發中剩下的傳輸也是可以接受的。
SPLIT和RETRY
分塊和重試響應給從機提供了在無法立刻給傳輸提供資料時釋放總線的機制。這兩種機
制都允許在總線上結束傳輸是以允許更高優先級的主機能夠通路主機。分塊( SPLIT)和重試( RETRY)的不同之處在于仲裁器在發生 SPLIT 和 RETRY 後配置設定總線的方式:
- 對 RETRY 而言仲裁器将繼續使用正常優先級方案是以隻有擁有更高優先級的主機将獲準通路總線;
- 對于 SPLIT 傳輸而言仲裁器将調整優先級方案以便其他任何主機請求總線即能獲得通路(總線),即使是優先級較低的主機。為了完成一個 SPLIT 傳輸從機必須通知仲裁器何時資料可用。
SPLIT 傳輸都增加了仲裁器和從機的複雜性,但是卻有可以完全釋放總線給其他主機使用的優點,但是 RETRY(響應)的情況就隻允許較高優先級的主機使用總線。總線主機應該以同樣的方式來對待 SPLIT 和 RETRY(響應)。主機應該繼續請求總線并嘗試傳輸直到傳輸成功完成或者遇到 ERROR 響應時終止。
資料總線
為了不使用三态驅動而又允許執行AHB系統是以要求分開讀和寫資料總線。最小的資料寬度規定為 32 位,但是總線寬度卻可以增加,參見關于AHB資料總線的位寬這一節中的描述。
HWDATA[31:0]
寫資料總線在寫傳輸期間由總線主機驅動。如果傳輸是擴充的那麼總線主機必須保持資料有效直到傳輸完成,由 HREADY 為高表示。所有傳輸必須對齊到和傳輸大小相等的位址邊界。例如,字傳輸必須對齊到字位址邊界(也就是 A[1: 0] = 00),半字傳輸必須對齊到半字位址邊界(也就是 A[0] = 0)。對于寬度小于總線寬度的傳輸,例如一個在 32 位總線上的 16 位傳輸,那麼總線主機僅需要驅動相應的位元組通道。從機必須負責從正确的位元組通道選擇寫資料。 表 3.6和表 3.7分别表示了小端系統和大端系統中哪個位元組通道有效。如果有要求,這些資訊可以在更寬的總線應用中擴充。傳輸大小小于資料總線寬度的突發傳輸将在每拍突發中有不同有效位元組通道。有效位元組通道取決于系統的端結構,但是 AHB 并不指定要求的端結構。是以,總線上所有主機和從機的端結構相同這點很重要。
HRDATA[31:0]
讀資料總線在讀傳輸期間由合适的從機驅動。如果從機通過拉低 HREADY 擴充讀傳輸那麼從機隻需要在傳輸的最後一個周期提供有效資料,由 HREADY 為高表示。對于寬度小于總線寬度的傳輸從機僅需要在有效的位元組通道提供有效資料,如表 3.6和表 3.7所示。總線主機負責從正确的位元組通道中選擇資料。當傳輸以 OKAY 響應完成時從機僅需提供有效資料。 SPLIT、 RETRY 和 ERROR 響應不需要提供有效的讀資料。