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]。
最簡單的傳輸是沒有等待狀態的傳輸,由一個地址週期和一個數據週期組成。下圖顯示了一個簡單的讀傳輸和一個簡單的寫傳輸。
在沒有等待狀態的簡單傳輸中:
1。master在HCLK上升沿之後將地址和控制訊號驅動到總線上。
2。slave在下一次HCLK上升時對地址和控制資訊進行取樣。
3。slave對地址和控制訊號取樣後,驅動合適的HREADY響應。這個響應在第三個HCLK上升沿被由master取樣。
任何傳輸的地址階段都發生在上次傳輸的資料階段。地址和資料的重疊是AHB匯流排流水線的基礎,在實現高效能的同時為slave提供足夠的時間來提供對傳輸的響應。
slave可以插入等待狀態任何傳輸,以便獲得足夠的時間來完成傳輸。
下圖顯示了具有2個等待狀態的讀傳輸和具有1個等待狀態的寫傳輸。
對於寫操作,master在整個擴充套件週期內保持資料穩定。
對於讀操作,slave在傳輸完成的時候才需要提供有效資料。
當以這種方式擴充套件資料傳輸時,它會擴充套件下一次傳輸的地址階段。下圖顯示了三次傳輸,地址C被上次傳輸擴充套件了。
對應於地址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傳輸型別的使用。
在上圖中:
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訊號。
建議master在鎖定傳輸後插入IDLE。
大多數slave都不需要HMASTLOCK,但是如果slave可以被多個master訪問,則必須實現HMASTLOCK訊號。
Transfer size
HSIZE [2:0]表示資料傳輸的大小,如下表所示:
HSIZE設定的傳輸大小必須小於或等於資料匯流排的寬度。
例如,對於32位資料匯流排,HSIZE必須僅使用值b000,b001或b010。
將HSIZE與HBURST結合使用,以確定wrapping bursts的地址邊界。
HSIZE訊號與地址匯流排具有完全相同的時序。但是,HSIZE在burst傳輸過程中必須保持不變。