AHB 協議學習之 transfer

Basic transfers

AHB-Lite的一個transfer包括兩個階段:

Address :持續單個HCLK週期,除非被前一個匯流排傳輸擴充套件。

Data :可能需要幾個HCLK週期。由HREADY訊號控制完成傳輸所需的時鐘週期數。

HWRITE控制來自Master資料傳輸的方向:

•HWRITE為HIGH時,表示寫傳輸,主裝置廣播(broadcasts)資料到寫資料匯流排HWDATA [31:0]上

•HWRITE為LOW,時,表示讀傳輸,slave必須產生讀資料匯流排上的資料HRDATA [31:0]。

最簡單的傳輸是沒有等待狀態的傳輸,由一個地址週期和一個數據週期組成。下圖顯示了一個簡單的讀傳輸和一個簡單的寫傳輸。

AHB 協議學習之 transfer

AHB 協議學習之 transfer

在沒有等待狀態的簡單傳輸中:

1。master在HCLK上升沿之後將地址和控制訊號驅動到總線上。

2。slave在下一次HCLK上升時對地址和控制資訊進行取樣。

3。slave對地址和控制訊號取樣後,驅動合適的HREADY響應。這個響應在第三個HCLK上升沿被由master取樣。

任何傳輸的地址階段都發生在上次傳輸的資料階段。地址和資料的重疊是AHB匯流排流水線的基礎,在實現高效能的同時為slave提供足夠的時間來提供對傳輸的響應。

slave可以插入等待狀態任何傳輸,以便獲得足夠的時間來完成傳輸。

下圖顯示了具有2個等待狀態的讀傳輸和具有1個等待狀態的寫傳輸。

AHB 協議學習之 transfer

對於寫操作,master在整個擴充套件週期內保持資料穩定。

對於讀操作,slave在傳輸完成的時候才需要提供有效資料。

當以這種方式擴充套件資料傳輸時,它會擴充套件下一次傳輸的地址階段。下圖顯示了三次傳輸,地址C被上次傳輸擴充套件了。

AHB 協議學習之 transfer

對應於地址A和C的傳輸是零等待傳輸

•到地址B的傳輸有一個等待狀態

•B傳輸的資料階段會擴充套件C傳輸的地址階段。

Transfer types

傳輸可以分為四種類型,由HTRANS [1:0]控制。

b00 :IDLE表示不需要進行資料傳輸。建議在master終止鎖定傳輸後使用IDLE傳輸。

b01 :BUSY 傳輸用於在burst傳輸中插入idle週期,表示master正在繼續burst傳輸,但下一次傳輸不能立即發生。

當master使用BUSY傳輸時,此時的地址和控制訊號必須為burst傳輸中下一個傳輸的地址和控制訊號。

只有未定義長度的burst傳輸才能將BUSY傳輸作為burst傳輸的最後一個週期。

slave必須始終給BUSY傳輸提供零等待OKAY響應,並且不做任何操作。

b10 :NONSEQ表示單次傳輸或burst傳輸的第一次傳輸。

NONSEQ傳輸的地址和控制訊號與先前的傳輸無關。

總線上的single傳輸被視為長度為1的burst傳輸,因此傳輸型別是NONSEQUENTIAL。

b11 :SEQUENTIAL傳輸的地址與之前的傳輸有關。控制資訊與之前的傳輸相同。其地址等於之前傳輸的地址加上傳輸大小HSIZE [2:0](以位元組為單位)。在wrapping burst傳輸的情況下,地址會在地址邊界處wrap。

下圖顯示了NONSEQ,BUSY和SEQ傳輸型別的使用。

AHB 協議學習之 transfer

在上圖中:

T0-T1 4-beat讀傳輸以NONSEQ傳輸開始。

T1-T2 master無法執行第二拍傳輸,插入BUSY傳輸以延遲第二拍的開始。slave提供第一拍的資料。

T2-T3 master開始第二拍傳輸,所以HTASNS[1:0]為SEQ。此時master忽略slave提供的任何資料。

T3-T4 master執行第三拍傳輸。slave提供第二拍的讀資料。

T4-T5 master執行最後一拍傳輸,slave無法完成上次傳輸並使用HREADY插入一個等待狀態。

T5-T6 slave提供第三拍的讀資料。

T6-T7 slave提供最後一拍的讀資料。

Locked transfers

如果master需要鎖定訪問,則必須置位HMASTLOCK訊號,向slave指示當前傳輸是不可分割的。下圖顯示了HMASTLOCK訊號。

AHB 協議學習之 transfer

建議master在鎖定傳輸後插入IDLE。

大多數slave都不需要HMASTLOCK,但是如果slave可以被多個master訪問,則必須實現HMASTLOCK訊號。

Transfer size

HSIZE [2:0]表示資料傳輸的大小,如下表所示:

AHB 協議學習之 transfer

HSIZE設定的傳輸大小必須小於或等於資料匯流排的寬度。

例如,對於32位資料匯流排,HSIZE必須僅使用值b000,b001或b010。

將HSIZE與HBURST結合使用,以確定wrapping bursts的地址邊界。

HSIZE訊號與地址匯流排具有完全相同的時序。但是,HSIZE在burst傳輸過程中必須保持不變。