2.4 AHB總線
2.4.1 AHB總線簡介
AHB是一種高性能、高時鐘頻率的AMBA總線協議。主要用于連接RAM、DMA、Bridge等高速設備。主要支持如下特性:burst傳輸、Split事務處理、單周期master移交、流水線操作、支持多個總線主設備。
AHB總線的強大之處在于它可以將微控制器CPU、高帶寬的片上RAM、高帶寬的外部存儲器接口、DMA總線master、各種擁有AHB接口的控制器等連接起來,構成一個獨立的完成SOC系統。不僅如此,還可以通過AHB-APB橋來連接APB總線系統。AHB可以成為一個完成的SOC芯片的骨架
2.4.2 AHB的組成
完整的AHB總線由四個部分構成:
- AHB主設備Master:總線主設備能夠通過提供地址和信息發起讀寫操作,任何時候,只允許一個總線主設備處于有效狀態,并使用總線。
- AHB從設備Slave:從設備在給定的地址空間范圍內響應讀寫操作,總線從設備將成功、失敗或者等待數據傳輸的信號返回給有效的主設備。
- AHB仲裁器Arbiter:總線仲裁器確保每次只有一個總線主機被允許發起數據傳輸。即使仲裁協議已經固定,任何一種仲裁算法,比如最高優先級或者公平訪問都能根據應用要求而得到執行。AHB必須只包含一個仲裁器,盡管在單總線主設備系統中這顯得并不重要。
- AHB譯碼器Decoder:AHB譯碼器用來對每次傳輸進行地址譯碼,并且在傳輸中包含一個從設備選擇信號。
每個AHB都需要一個仲裁器和一個解碼器,并且分別有且只有一個。
總線可分為三組: - 寫數據總線(HWDATA)
- 讀數據總線(HRDATA)
- 地址控制總線(HADDR)
2.4.3 AHB總線操作
主設備通過驅動地址和控制信號開始一次傳輸。這些信號提供了地址、方向、傳輸的位寬,如果傳輸的類型是猝發,那么會指示出傳輸的類型。傳輸的類型可以是:
- 單次傳輸(Single)。
- 遞增猝發(Incrementing burst),即在地址邊界處不進行包裝(地址不進行回繞)。
- 包裝猝發(Warpping burst),及到達地址邊界處重新包裝下一次傳輸的地址(地址回繞)。
寫操作數據由主設備到從設備,讀數據數據由從設備到主設備。每次傳輸都包含兩個階段: - 地址階段(Address phase),地址和控制周期。
- 數據階段(Data phase),數據周期是一個或多個周期。
從設備不能請求Address phase進行延長,所以所有的從設備必須具備在Address phase周期采樣地址的能力。但是從設備可以請求主設備延長Data phase,通過控制HREADY。HREADY信號為低時,從設備可以在傳輸中插入等待狀態,使得從設備具有額外的時間提供和采樣數據。最后從設備使用HRESP表明傳輸的成功/失敗。
2.4.4 AHB信號
從上面的表可以看出,為了克服APB的缺點,從而支持多主機模式。提升效率操作,在總線接口數量上做了增加,并且位寬也做了提升。
2.4.5 AHB傳輸
1)AHB傳輸過程
AHB傳輸分為以下幾個部分:
- 主模塊獲取總線使用權:主模塊向仲裁器發送總線請求信號,仲裁器發送應答后主模塊可以開始傳輸。
- 數據傳輸:主模塊向從模塊傳輸數據,分為如下兩個部分:
- 發送地址和控制信號:包括地址、位寬、突發類型(增量突發和回卷突發)等控制新高,僅一個時鐘周期。
- 數據傳輸:進行數據交換,一個或多個時鐘周期。
- 從模塊應答:從模塊通過HRESP和HREADY 標記完成狀態,對于HRESP,有以下狀態:
- OKAY:標記傳輸完成,當HRESP為該狀態且HREADY拉高時,傳輸完成。
- ERROR:標記傳輸出錯
- RETRY和SPLIT:標記傳輸未完成,主模塊仍需要占用總線。
前面已介紹一個基本的傳輸包括兩個階段: - 地址:持續一個系統時鐘HCLK周期,除非被上一個傳輸延長
- 數據:可能需要數個系統時鐘HCLK周期,使用HREADY信號來控制完成一次傳輸所需要的時鐘周期。
HWRITE:控制數據的方向。當為高時,表明進行一次寫傳輸,數據由主模塊端發送,從模塊端接收。當為低時,表明進行一次讀傳輸,從模塊端產生讀數據,主模塊端接收讀數據。
2)無等待狀態
上圖是沒有等待狀態的簡單傳輸的時序圖,所以此傳輸包含一個地址周期和一個數據周期。3.1為讀傳輸,3.2為寫傳輸。在這個沒有等待狀態的傳輸中:
- 主模塊端在第一個時鐘HCLK上升沿將地址和控制信號到總線。
- 從模塊端在接下來的一個時鐘HCLK上升沿進行地址和控制信號采樣。
- 在從模塊端對地址和控制信號采樣結束后,從模塊端可以驅動HEADYOUT信號及數據作為回應。該信號及數據由主模塊端在傳輸的第三個時鐘HCLK上升沿進行采樣。
這個例子說明了地址和數據階段在不同的時鐘周期是如何傳輸的。任意一次傳輸的地址階段發生在上一次傳輸的數據階段(重合,即當前傳輸的地址階段和前一次傳輸的數據階段重合)。address與data的重合是進行總線流水線處理的基礎,此特性允許總線高性能操作,同時也為從模塊端發送反饋信息提供了充足的時間。
2)有等待狀態傳輸
從模塊端可以插入等待階段到任意一個傳輸中從而延長完成傳輸的時間。每個從模塊端具有一個HREADYOUT信號,該信號為從模塊端在data phase階段驅動?;ヂ摻Y構需要將每個從模塊端的HREADYOUT信號聯合起來產生一個HREADY信號,HREADY信號用來控制上述延長傳輸完成時間的過程。
如上圖是具有等待階段的時序圖。3.3是帶有兩個等待周期的讀傳輸,3.4是帶有一個等待周期的寫傳輸。有等待傳輸下,數據傳輸階段可以擴展,即在HREADY拉高之前,數據傳輸階段不結束。要求寫數據在HREADY拉高前保持穩定,主模塊在HRAEADY拉高后采樣讀數據。對于寫操作,在HREADY為低的等待階段內,主模塊端需要將寫數據DATA保持不變,直到寫操作完成。對于讀操作,從模塊端只需要在HREADY為高的周期內提供有效數據即可。
當傳輸由具有等待階段通過延長address階段進行延長時,那么對接下來的傳輸具有副作用。3.5是包含地址不相關的3次傳輸,A,B和帶有一個等待周期的C傳輸。
在上述時序圖中:
- 傳輸A和傳輸C是0等待傳輸。
- 傳輸B具有一個等待周期的address phase。
- 延長傳輸B的數據phase對下一次傳輸C的address phase會相應的拉長。
2.4.6 傳輸類型
1)傳輸類型
傳輸類型使用端口HTRANS標記,有以下取值:
- IDLE(0b00):標志主模塊占有AHB總線,但是沒有數據傳輸發生。從模塊需要使用OKAY狀態回應該類型
- BUSY(0b 01):標志主模塊占有AHB總線并在進行突發傳輸,但下一個傳輸不能立刻發生。從模塊需要使用OKAY狀態回應
- NONSEQ(0b 10):標志主模塊當前發送的地址和控制信號與上一次傳輸無關(單次傳輸就是該狀態)
- SEQ(0b 11):標記主模塊處于突發傳輸的中間部分,即當前發送的地址和控制信號與上一次地址和控制信號有關
2)突發類型
突發傳輸分為兩類:
- 增量突發:傳輸過程中傳輸地址遞增。下一次傳輸的地址是上一次地址加上一個增量。
- 回卷突發:猝發的地址范圍被限制在一個固定范圍之內,傳輸地址遞增,若是超出則回到地址范圍的開始的地址。例如從0x34進行增量為4,范圍為16的回卷突發,地址順序為0x34、0x38、0x3c,0x30
突發類型使用字段HBURST標記,含義如下表所示:
注意一次突發傳輸不能跨越1kB的地址區間,且傳輸的起始地址必須與數據類型對應,例如傳輸字數據的二進制起始地址必須滿足后兩位為00。
3)突發終止
從機通過監控HTRANS發現突發傳輸的終止:
- 若下一個HTRANS標記為BUSY或SEQ:突發傳輸未終止
- 若下一個HTRANS標記為NONSEQ或IDLE:上一次突發傳輸已經終止
若突發傳輸是提前終止的,如總線控制權被剝奪,那么主機需要在可以進行傳輸時重建突發傳輸。例如一個4拍傳輸僅發送了一拍就終止,主機需要使用INCR類型的突發構建3拍傳輸以重建。
4)傳輸的例子
- T0~T1:由非連續序列性的傳輸啟動的4拍讀。
- T1~T2:主模塊端不能進行傳輸,在第二個周期,所以插入了一個BUSY傳輸來延時第二次傳輸。此周期從模塊端返回第一個周期主模塊端發送讀地址的讀數據。
- T2~T3:主模塊端準備好進行第二次傳輸,發送一個SEQ傳輸。主模塊端此周期將會忽略讀數據總線上由任何從模塊端返回的讀數據(因前一個周期為BUSY傳輸)。
- T3~T4:主模塊端進行了第三次傳輸。發送了一個SEQ傳輸,此時讀數據返回主模塊端發起的第二次SEQ讀讀數據。
- T4~T5:主模塊端進行最后一次傳輸。此時在第一個周期內HREADY信號為低,從模塊不能將前一次SEQ讀的數據返回,所以將延遲上一次SEQ傳輸的DATA Phase,也就是當前傳輸的ADDRESS phase。
- T5~T6:從模塊端返回第T3、T4周期發送的SEQ讀數據。
- T6~T7:無傳輸命令,返回T4、T6發送的讀數據。
-
ARM
+關注
關注
134文章
9046瀏覽量
366815 -
總線
+關注
關注
10文章
2866瀏覽量
87986 -
AMBA
+關注
關注
0文章
68瀏覽量
14951
發布評論請先 登錄
相關推薦
評論