AHB匯流排協議(二)

来源:https://www.cnblogs.com/mikewolf2002/archive/2019/05/23/10909918.html
-Advertisement-
Play Games

下圖是8拍迴環字突發傳輸:地址將在 32 位元組邊界處迴環因此地址 0x3C 之後的地址是 0x20。下圖是8增量半字突發傳輸,所以地址每次增加 2 個位元組並且突發在遞增因此地址連續增加通過了 16 位元組邊界。 ...


下圖是8拍迴環字突發傳輸:地址將在 32 位元組邊界處迴環因此地址 0x3C 之後的地址是 0x20。

image

下圖是8增量半字突發傳輸,所以地址每次增加 2 個位元組並且突發在遞增因此地址連續增加通過了 16 位元組邊界。


image

下圖是未定義長度的增量突發。

兩個半字傳輸在地址 0x20 處開始。半字傳輸地址增加為 2。 三個字傳輸在地址 0x5C 處開始。字傳輸地址增加為 4。


image


6 、地址解碼

對於每個匯流排上的從機來說使用一個中央地址解碼器提供選擇信號, HSELx。選擇信號是高位地址信號的組合解碼,並且建議使用簡單的解碼方案以避免複雜解碼邏輯和確保高速操作。
從機只能在 HREADY 信號為高時採樣地址和控制信號以及 HSELx, HSELx 為高表示當前傳輸已經完成。在特定的情況下有可能在 HREADY 為低時採樣 HSELx,但是被選中的從機將會在當前傳輸完成後變更。
能夠分配給單個從機的最小地址空間是 1KB。所有匯流排主機必須被設計為不能執行超過 1KB 地址邊界的增量傳輸,因此確保了一個突發絕不會超過地址解碼的邊界。

在系統設計中如果有包含一個存儲器映射並未完全填滿(存儲空間)的情況時應該設置一個額外的預設從機以在訪問任何不存在的地址空間時提供響應。如果一個非連續或者連續傳輸試圖訪問一個不存在的地址空間時這個預設從機應該提供一個 ERROR 響應。空閑或者忙傳輸訪問不存在的空間(預設從機)應該給出一個零等待狀態的 OKAY 響應。典型預設從機的功能將以作為中央地址解碼器的一部分來實現。

image

7、從機傳輸響應

在主機發起傳輸後,由從機決定傳輸該如何進行。 AHB 規範中沒有做出匯流排主機在傳輸已經開始後取消傳輸的規定。
只要從機被訪問那它必須提供一個表示傳輸狀態的響應。 HREADY 信號被用來擴展傳輸並且和響應信號 HRESP[1: 0]相結合,以提供傳輸狀態。
從機能夠用許多種方式來完成傳輸。它能:
立刻完成傳輸;
插入一個或者多個等待狀態以允許有時間來完成傳輸;
發出一個錯誤信號來表示傳輸失敗;
延時傳輸的完成,但是允許主機和從機放棄匯流排,把匯流排留給其他傳輸使用。

  • 傳輸完成:
  • HREADY 信號用來擴展一次 AHB 傳輸的數據部分。當 HREADY 信號為低時表示傳輸將被擴展而當其為高時表示傳輸完成。

    註:每個從機必須有一個預先確定的在從機放棄匯流排之前插入的最大等待狀態數目,以便能夠計算訪問匯流排的延時。建議但不強制規定,從機不要插入多於 16 個等待狀態以阻止任何單個訪問將匯流排鎖定較長
    的時鐘周期。

  • 傳輸響應:
  • 典型的從機將會用 HREADY 信號在傳輸中插入適當數量的等待狀態而傳輸在HREADY 為高時完成並且給出 OKAY 響應,表示傳輸成功完成。
    ERROR 響應被從機用來表示某種形式的錯誤條件和相關的傳輸。典型的是被用作保護錯誤,例如試圖寫一個只讀的存儲空間。
    SPLIT 和 RETRY 響應組合允許從機延長傳輸完成的時間,但是釋放匯流排給其他主機使用。這些響應組合通常僅由有高訪問延時的從機請求並且從機能夠利用這些響應編碼來確保其他主機在長時間內不被阻止訪問匯流排。
    關於SPLIT和RETRY的完整描述參見分塊和重試。

    當從機需要插入一定數量的等待狀態優於決定將要給出何種響應時從機必須將響應驅動為 OKAY。


    HRESP[1: 0]的編碼、傳輸響應信號和每個響應的描述參見下表:

    HRESP[1]HRESP[0]響應描述
    00OKAY

    當 HREADY 為高表示傳輸已經成功完成。 OKAY 響
    應也被用來插入任意一個附加周期,當 HREADY 為
    低時,優先給出其他三種響應之一。

    01ERROR

    該響應表示發生了一個錯誤。錯誤條件應該發信號給
    匯流排主機以便讓主機意識到傳輸失敗。
    一個錯誤條件需要雙周期響應。

    10RETRY

    RETRY(重試)信號表示傳輸並未完成,因此匯流排
    主機應該重試傳輸。主機應該繼續重試傳輸直到完成
    為止。
    要求雙周期的 RETRY 響應。

    11SPLIT

    傳輸並未成功完成。匯流排主機必須在下一次被授予訪
    問匯流排時重試傳輸。當傳輸能夠完成時從機將請求代
    替主機訪問匯流排。
    要求雙周期的 SPLIT 響應。

  • 雙周期響應

僅有 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 響應,由於當前傳輸不被重覆,所以可以選擇完成接下來的傳輸。
下圖表示了一次RETRY操作的例子。

主機從地址 A 發起傳輸;
這次傳輸在接收到響應之前主機將地址移動到 A + 4;

從機在地址 A 不能立刻完成傳輸因此從機發出一個 RETRY 響應。該響指示主機在
地址 A 的傳輸無法完成並且在地址 A + 4 的傳輸被取消而用空閑傳輸替代。

image

下圖表示了一個傳輸中從機請求一個周期來決定將要給出的響應(在HRESP為OKAY的時間段),之後從機用一個雙周期的ERROR響應結束了傳輸。

image


  • 分塊與重試

分塊和重試響應給從機提供了在無法立刻給傳輸提供數據時釋放匯流排的機制。這兩種機制都允許在匯流排上結束傳輸因此允許更高優先順序的主機能夠訪問主機。
分塊(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 位傳輸,那麼匯流排主機僅需要驅動相應的位元組通道。從機必須負責從正確的位元組通道選擇寫數據。 下麵兩個表中分別表示了小端系統和大端系統中哪個位元組通道有效。如果有要求,這些信息可以在更寬的匯流排應用中擴展。傳輸大小小於數據匯流排寬度的突發傳輸將在每拍突發中有不同有效位元組通道。
有效位元組通道取決於系統的端結構,但是 AHB 並不指定要求的端結構。因此,匯流排上所有主機和從機的端結構相同這點很重要。
HRDATA[31: 0]
讀數據匯流排在讀傳輸期間由合適的從機驅動。如果從機通過拉低 HREADY 擴展讀傳輸那麼從機只需要在傳輸的最後一個周期提供有效數據,由 HREADY 為高表示。
對於寬度小於匯流排寬度的傳輸從機僅需要在有效的位元組通道提供有效數據,如下兩個表所示。匯流排主機負責從正確的位元組通道中選擇數據。
當傳輸以 OKAY 響應完成時從機僅需提供有效數據。 SPLIT、 RETRY 和 ERROR 響應不需要提供有效的讀數據。

image

為了使系統正確運行事實上所有模塊都是相同端結構的並且任何數據通路或者橋接器也是相同端結構的。
不支持動態端結構,因為在大多數嵌入式系統中,這將導致明顯的硅晶片較高,也就是多餘的。
對於模塊設計者而言建議只有應用場合非常寬泛的模塊才應該被設計為雙端結構的,通過一個配置引腳或者內部控制位來選擇端結構。對於更多的特定用途的模塊,固定端結構為大端或者小端將產生體積更小、功耗更低、性能更高的介面

7、仲裁

仲裁機制被用來確保任意時刻只有一個主機能夠訪問匯流排。仲裁器的功能是檢測許多不同的使用匯流排的請求和決定當前請求匯流排的主機中哪一個的優先順序最高。仲裁器也接收來自從機需要完成 SPLIT 傳輸的請求。
任何沒有能力執行 SPLIT 傳輸的從機不需要瞭解仲裁的過程,除非它們需要檢測因為匯流排所有權改變而導致突發傳輸不能完成的情況。

以下給出對每個仲裁信號的簡短描述:
HBUSREQx 被匯流排主機用來請求訪問匯流排的匯流排請求信號。每個匯流排主機都有自己的連接到仲裁器的 HBUSREQx 信號並且任何一個系統中都可以有高達 16 個獨立的匯流排主機
HLOCKx 由主機在請求匯流排的同時時斷言的鎖定信號。這提示仲裁器主機正在執行一系列不可分割的傳輸並且一旦鎖定傳輸的第一個傳輸已經開始仲裁器不能授予任何其他主機訪問匯流排。 HLOCKx 必須在涉及到的地址被定址到之前至少斷言一個周期,以防止仲裁器改變授予信號。
HGRANTx 授予信號由仲裁器產生並且表示相關主機是當前請求匯流排的主機中優先順序最高的主機,(優先)考慮鎖定傳輸和 SPLIT 傳輸。
主機在 HGRANTx 為高時獲取地址匯流排的所有權並且在HCLK 的上升沿 HREADY 為高電平。
HMASTER[3: 0] 仲裁器使用 HMASTER[3: 0]信號表示哪一個主機當前被授予匯流排並且該信號可被用來控制中央地址和控制多路選擇器。有 SPLIT 傳輸能力的從機也可以請求主機的序號以便它們能夠提示仲裁器哪個主機能夠完成一個 SPLIT 傳輸。
HMASTLOCK 仲裁器通過斷言 HMASTLOCK 信號指示當前傳輸是一個鎖定序列的一部分,該信號和地址以及控制信號有相同的時序。
HSPLIT[15: 0] 這 16 位有完整分塊能力的匯流排被有分塊(SPLIT)能力的從機用來指示哪個匯流排主機能夠完成一個 SPLIT 傳輸。仲裁器需要這些信息以便於授予主機訪問匯流排完成傳輸。

下列小節提供更多的信息:
請求匯流排訪問;
授予匯流排訪問;
突發提前終止;
鎖定傳輸。

7.1請求匯流排訪問

匯流排主機使用 HBUSREQx 信號來請求訪問匯流排並且可以在任何周期請求匯流排。仲裁器將在時鐘的上升沿採樣(主機的)請求然後使用內部優先順序演算法來決定哪個主機將會下一個獲得訪問匯流排。
如果主機請求鎖定訪問(匯流排)那麼主機也必須斷言 HLOCKx 信號來提示仲裁器其他主機不應該被授予匯流排。
當一個主機被授予匯流排並且正在執行一個固定長度的突發那麼就沒有必要繼續請求匯流排以便完成傳輸。仲裁器監視突發的進程並且使用 HBURST[2: 0]信號來決定主機請求了多少個輸入。如果主機希望在當前正在進行的傳輸之後執行另一個突發那麼主機需要在突發中重新斷言請求信號。
如果主機在一次突發當中失去對匯流排的訪問那麼它必須重新斷言 HBUSREQx 請求線以重新獲取訪問匯流排。
對未定長度的突發主機應該繼續斷言請求直到已經開始最後一次傳輸。在未定長度的突髮結束時仲裁器不能預知何時改變仲裁。
對於主機而言有可能當它未申請匯流排時卻被授予匯流排。這可能在沒有主機請求匯流排並且仲裁器將訪問(匯流排)授予一個預設的主機時發生。因此,如果一個主機並沒請求訪問匯流排那麼它驅動傳輸類型 HTRANS 來表示空閑傳輸顯得很重要。

7.2授予匯流排訪問

仲裁器通過斷言適當的 HGRANTx 信號來表示請求匯流排的主機中哪個是當前優先順序最高的。當前傳輸完成後,由 HREADY 為高時所表示,那麼主機將被授予(匯流排)並且仲裁器將改變 HMASTER[3: 0]信號來表示匯流排主機序號。
下圖表示了當所有傳輸都為零等待狀態並且HREADY信號為高時的處理過程。

image

下圖表示了在匯流排移交時等待狀態的影響。

image

數據匯流排的所有權延時在地址匯流排的所有權之後。一次傳輸無論何時完成(由HREADY為高時所表示)然後占有地址匯流排的主機才能使用數據匯流排並且將繼續占有數據匯流排直到傳輸完成。 下圖表示當在兩個匯流排主機之間移交匯流排時數據匯流排的所有權是如何轉移的。

image

下圖表示一個仲裁器如何能在一次突發傳輸結束時移交匯流排的例子。

仲裁器在倒數第二個(最後一個之前的)地址被採樣時改變 HGRANTx 信號。新的HGRANTx 信息將在突發的最後一個地址被採樣的同時被採樣。

image

下圖表示了HGRANTx和HMASTER信號是如何在系統中使用的。

image

註:因為使用了中央多路選擇器,每個主機可以立刻輸出它希望執行的地址而不需要等到被授予匯流排。HGRANTx 信號是僅被主機用來決定它何時擁有匯流排並因此需要考慮何時讓地址被合適的從機採樣。HMASTER 匯流排的延時版本被用來控制寫數據多路選擇器。

7.3 突發提前終止

通常仲裁器在突發傳輸結束之前不會將匯流排移交給一個新的主機。但是,如果仲裁器決定突發必須被提前終止以防止過長的匯流排訪問時間那麼它可能會在一個突發完成之前將(匯流排)授予轉移給另外一個匯流排主機。
如果主機在突發傳輸中間失去了對匯流排的所有權那麼它必須重新斷言匯流排(請求)以完成突發。主機必須確保 HBURST 和 HTRANS 信號都被更新以反映主機不再執行一個完整的 4、 8 或者 16 拍的突發。
例如,如果一個主機僅能完成一個 8 拍突發的 3 個傳輸,那麼當它重新獲得匯流排時必須使用一個合法的突發編碼來完成剩下的 5 個傳輸。主機可以使用任何合法組合,因此無論是5 拍未定長度的突發或者是 4 拍固定長度的突發然後跟上一個單拍未定長度的突發都是可以接受的。

7.4 鎖定傳輸

仲裁器必須監視來自各個主機的 HLOCKx 信號以確定何時主機希望執行一個鎖定連續傳輸。之後仲裁器負責確保沒有其他匯流排主機被授予匯流排直到鎖定傳輸完成。
在一個連續鎖定傳輸之後仲裁器將總是為一個附加傳輸保持匯流排主機被授予(匯流排)以確保鎖定序列的最後一個傳輸成功完成並且沒有接收到 SPLIT 或者 RETRY 響應。因此建議但不規定,主機在任何鎖定連續傳輸之後插入一個空閑傳輸以提供給仲裁器在著手另外一個突發傳輸之前改變(匯流排授予)的機會。
仲裁器也負責斷言 HMASTLOCK 信號, HMASTLOCK 信號和地址以及控制信號有相同的時序。該信號指示每個從機當前傳輸是鎖定的因此必須在其他主機被授予匯流排之前被處理掉。

7.5預設匯流排主機

每個系統必須包含一個預設匯流排主機,如果所有其他主機不能使用匯流排時該主機被授予匯流排。當被授予匯流排時,預設主機必須只能執行空閑(IDLE)傳輸。
如果沒有請求匯流排那麼仲裁器可以授予預設主機(訪問匯流排)或者訪問匯流排延時較低的主機將因此受益而被授予匯流排。
授予預設主機訪問匯流排也為確保在匯流排上沒有新的傳輸開始提供了一個有用的機制並且也是預先進入低功耗操作模式的有用步驟。
如果其他所有主機都在等待 SPLIT 傳輸完成時預設主機必須被授予匯流排。

7.6 分塊傳輸

分塊傳輸通過根據從機的響應操作來分離(或者分塊)主機操作以給從機提供地址和合適的數據,提高了匯流排的總體使用率。
當傳輸產生時如果從機認為傳輸的執行將占據大量的時鐘周期那麼從機能夠決定發出一個 SPLIT 響應。該信號提示仲裁器嘗試這次傳輸的主機不應該被授予訪問匯流排,直到從機表示它準備好了完成傳輸時。因此仲裁器負責監視響應信號並且在內部屏蔽已經是 SPLIT傳輸主機的任何請求。
在傳輸的地址相位期間仲裁器在 HMASTER[3: 0]產生一個標記,或者匯流排主機序號,以表示正在執行傳輸的主機。任何一個發出 SPLIT 響應的從機必須表示它有能力完成這個傳輸,並且通過記錄 HMASTER[3: 0]信號上的主機序號來實現。之後,當從機能夠完成傳輸時,它就根據主機序號在從從機到主機的 HSPLITx[15: 0]信號上斷言適當的位。然後仲裁器使用這個信息來解除來自主機請求信號的屏蔽並且主機將被及時授予訪問匯流排以重試傳輸。仲裁器在每個時鐘周期採樣 HSPLITx 匯流排因此從機只需要斷言適當的位一個周期以便仲裁器能夠識別。
如果系統中有多個具有 SPLIT 能力的從機那麼每個從機的 HSPLITx 匯流排可以邏輯或在一起以提供給仲裁器單個 HSPLIT 匯流排。
大多數系統中並沒有用到最大 16 個匯流排主機的能力因此仲裁器僅要求一個位數和匯流排主機數量一樣的 HSPLIT 匯流排。但是,建議所有有 SPLIT 能力的從機被設計成支持高達 16個主機。

分塊傳輸順序
SPLIT 傳輸的基本步驟如下:
1、 主機以和其他傳輸一樣的方式發起傳輸併發出地址和控制信息;
2、 如果從機能夠立刻提供數據那麼它可以馬上提供數據。如果從機確認獲取數據可能會占據較多的周期那麼它給出一個 SPLIT 傳輸響應;
每次傳輸中仲裁器廣播一個序號或者標記,表示哪個主機正在使用匯流排。從機必須記錄該序號,以便用來在之後的一段時間重新發起傳輸;
3、 仲裁器授予其他主機使用匯流排並且 SPLIT 響應的動作允許主機移交匯流排。如果所有其他主機也接收到一個 SPLIT 響應那麼預設主機將被授予匯流排;
4、 當從機準備完成傳輸那麼它斷言 HSPLITx 匯流排中的適當位給仲裁器以指示哪個主機應該被重新授予訪問匯流排;
5、 仲裁器每個時鐘周期監視 HSPLITx 信號,並且當 HSPLITx 中的任何一位被斷言仲裁器將恢復對應主機的優先順序;
6、 最後仲裁器將授予(SPLIT 的)主機匯流排,因此主機能重新嘗試傳輸。如果一個優先順序更高的主機正在使用匯流排的話這可能不會立刻發生;
7、 當傳輸終於開始後從機以一個 OKAY 傳輸響應來結束(傳輸)。
多重分塊傳輸
匯流排協議只允許每個匯流排主機有一個未完成的處理。如果任何主機模塊能夠處理多於一個未完成的處理那麼它需要為能夠處理的每個未完成處理設置一個額外的請求和授予信號。
在協議級上一個信號模塊可以表現為許多不同匯流排主機,每個主機只能有一個未完成的處理。
然而,可能一個有 SPLIT 能力的從機會接收比它能併發處理的(傳輸)還要多的傳輸請求。如果這種情況發生那麼從機可以不用記錄對應傳輸的地址和控制信息而僅需要記錄主機序號就發出 SPLIT 響應。之後從機可以通過斷言 HSPLITx 匯流排中適當的位給之前被給出SPLIT 響應的所有主機來表示它能處理另外一個傳輸,但是從機沒有記錄地址和控制信息。
之後仲裁器能夠重新授予這些主機訪問匯流排並且它們將重試傳輸,給出從機要求的地址和控制信息。這表示一個主機可以在它最終完成它要求的傳輸之前被多次授予匯流排。
預防死鎖
SPLIT 和 RETRY 傳輸響應都必須在使用中註意預防匯流排死鎖。單個傳輸決不會鎖定AHB,因為每個從機必須被設計成能在預先確定的周期數內完成傳輸。但是,如果多個不同主機試圖訪問同一個從機,從機發出 SPLIT 或者 RETRY 響應以表示從機不能處理,那麼就有可能發生死鎖

分塊傳輸
從機可以發出 SPLIT 傳輸響應,通過確保從機能夠承受系統中每個主機(最多 16 個)的單個請求來預防死鎖。從機並不需要存儲每個主機的地址和控制信息,它只需要簡單的記錄傳輸請求已經被處理和 SPLIT 響應已經發出的事實即可。最後所有主機將處在低優先順序然後從機可以有次序的來處理這些請求,指示仲裁器正在服務於哪個請求,因而確保了所有請求最終都被服務。
當從機有許多未完成的請求時它可能以任何順序(隨機的)來選擇處理這些請求,儘管從機需要註意鎖定傳輸必須在任何其他傳輸繼續之前完成。
從機使用 SPLIT 響應而不用鎖存地址和控制信息顯得非常合法(合適)。從機僅需要記錄特定主機做出的傳輸嘗試並且稍後的時間段從機通過指示自己已經準備好完成傳輸就能獲取地址和控制信息。主機將被授予匯流排並將重新廣播傳輸,允許從機鎖存地址和控制信息並且立刻應答數據,或者發出另外一個 SPLIT 響應如果還需要額外的一些周期的話。
理想情況下從機不應該有多於它能支持的未完成傳輸,但是要求支持這種機制以防止匯流排死鎖。
重試傳輸
發出 SPLIT 響應的從機必須一次只能被一個主機訪問。在匯流排協議中並沒有強制而在系統體繫結構中應該確保這一點。大多數情況下發出 RETRY 響應的從機必須是一次只能被一個主機訪問的外設,因此這會在一些更高級協議中得到確保。
硬體保護和多主機訪問 RETRY(響應)的從機相違背並不是協議中的要求,但是可能會在下文描述的設計中得到執行。僅有的匯流排級要求是從機必須在預先確定的時鐘周期內驅動 HREADY 為高。
如果要求硬體保護那麼這可以被 RETRY(響應)的從機自己執行。當一個從機發出一個 RETRY 信號後它能夠採樣主機序號。在這之後和傳輸最終完成之前 RETRY 的從機可以檢查做出的每次傳輸嘗試以確保主機序號是相同的。如果從機發現主機號不一致那麼它可以選擇下列的行動方式:
一個錯誤響應;
一個信號給仲裁器;
一個系統級中斷;

一個完全的系統複位。

7.7分塊傳輸的匯流排移交

協議要求主機在接收到一個SPLIT或者RETRY響應後立刻執行一個空閑傳輸以允許匯流排轉移給另外一個主機。 圖 3.20表示了發生一個分塊(SPLIT)傳輸的順序事件。

image

需要註意以下的要點:
傳輸的地址在時間 T1 之後出現在匯流排上。在時鐘沿 T2 和 T3 後從機返回兩個周期的 SPLIT 響應;
在第一個響應周期的末尾,也就是 T3,主機能夠檢測到傳輸將會被分塊因此(主機)改變接下來的傳輸控制信號以表示一個空閑傳輸; 同樣也在時間 T3 處仲裁器採樣響應信號並確定傳輸已經被分塊。之後仲裁器可以調整仲裁優先權並且在接下來的周期改變授予信號,這樣新的主機能夠在時間 T4後被授予地址匯流排;
新主機可以保證立刻訪問(匯流排)因為空閑傳輸總是在一個周期內完成。

複位
複位信號, HRESETn,是 AMBA AHB 規範中唯一的低有效信號並且是所有匯流排設備的主要複位源。複位可以非同步方式斷言,但是卻在 HCLK 的上升沿被同步地撤消斷言。
在複位期間所有主機必須確保地址和控制信號在有效電平並且 HTRANS[1: 0]信號表示空閑。
關於AHB數據匯流排的位寬
一種能提高匯流排帶寬而不用提高操作頻率的方法是使片上匯流排的數據通道更寬。金屬層的增加和大容量片上存儲模塊(例如嵌入式 DRAM)的使用都是更寬片上匯流排使用的推動因素。
指定一個固定寬度的匯流排將意味著在大多數場合下匯流排寬度在應用中並不是最佳的。因此允許可變匯流排寬度的途徑已經被採納,但是必須確保模塊在設計中高移植性。
協議允許 AHB 數據匯流排可以是 8、 16、 32、 64、 128、 256、 512 或者 1024 位寬。然而,建議使用中最低的匯流排寬度為 32 位並且預計最大 256 位寬的匯流排將適合幾乎所有應用。

對讀和寫傳輸而言接收模塊都必須從匯流排上正確的位元組通道選擇數據。並不要求將數據複製到所有位元組通道上。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 之前說了代理模式,即為其他對象提供一種代理以控制對這個對象的訪問,詳情見《簡說設計模式——代理模式》,而代理模式常見的實現方式為靜態代理及動態代理。 一、靜態代理 所謂靜態代理類是指:由程式員創建或由特定工具自動生成源代碼,再對其進行編譯。在程式運行之前,代理類的.class文件就已經存在了。UML ...
  • 在模板模式(Template Pattern)中,一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。本文以資料庫SQL語法為例來闡述模板模式的應用場景。由於不同的資料庫SQL語法存在差異,在替換資料庫時需要更改程式大量的SQL語句,而模板 ...
  • JML語言理論基礎梳理及工具鏈 註釋結構 JML以javadoc註釋的方式來表示規格,每行都以@起頭。 行註釋: 塊註釋: JML表達式 JML的表達式是對Java表達式的擴展,新增了一些操作符和原子表達式。 原子表達式 \result表達式:表示一個非 void 類型的方法執行所獲得的結果,即方法 ...
  • 一、源碼分析 源碼分析是一種臨界知識,掌握了這種臨界知識,能不變應萬變,源碼分析對於很多人來說很枯燥,生澀難懂。 源碼閱讀,我覺得最核心有三點:技術基礎+強烈的求知欲+耐心。 我認為是閱讀源碼的最核心驅動力。我見到絕大多數程式員,對學習的態度,基本上就是這幾個層次(很偏激哦): 1、只關註項目本身, ...
  • 編註: 架構決定的系統的穩定性,擴展性和併發性,架構的演進是從簡單到複雜,從單一到複合持續改進的過程,也是經驗的積累和技術的結晶。 初始階段架構 初始階段的小型系統、應用程式、資料庫、文件等所有的資源都在一臺伺服器上。通俗稱為LAMP。 特征:應用程式、資料庫、文件等所有的資源都在一臺伺服器上。 描 ...
  • saltstack項目實戰 項目架構規劃 後端web伺服器使用Nginx+Php作為站點,通過HAproxy做負載均衡,Keepalived做高可用 項目環境準備 說明: 關閉防火牆、selinux、時間同步等 host綁定 軟體安裝 參考地址 1)Master上軟體安裝 2)Minion上軟體安裝 ...
  • OO第三單元作業總結——JML 第三單元的主題是JML規格的學習,其中的三次作業也是圍繞JML規格的實現所展開的(雖然感覺作業中最難的還是如何正確適用數據結構以及如何正確地對於時間複雜度進行優化)。 關於JML語言 JML語言概述 JML是Java Modeling Language的縮寫,意思是J ...
  • 引子 群里發了一個總共1千元的拼手氣紅包,共10個。靜兒點進去,額,搶到了0.05元。這個不甘心啊。退出來重新打開了這個紅包,你猜怎樣?顯示我搶到了0.05元! 這就是冪等(idempotence),不管多少次請求某一個資源,對資源都具有相同的影響。冪等性是系統的介面對外一種承諾,承諾只要調用介面成 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...