常見的仲裁管理方式如下:
1)鏈式查詢方式(集中式)
為減少總線授權線數量,采用下圖所示的菊花鏈查詢方式(BS總線忙、BR總線請求、BG總線同意)。
鏈式查詢方式的主要特點是:總線授權信號BG串行地從一個I/O接口傳送到下一個I/O接口,假如BG到達的接口無總線請求,則繼續往下查詢,假如BG到達的接口有總線請求,BG信號便不再往下查詢,發出相應的BR信號,并置BS信號。這意味著該I/O接口就獲得了總線控制權。
可見,在查詢鏈中離中央仲裁器最近的設備具有最高優先級,離中央仲裁器越遠,優先級越低。因此,鏈式查詢是通過接口的優先級排隊電路來實現的。鏈式查詢方式存在的優缺點如下:
- 優點:只用很少幾根線就能按一定優先級實現總線仲裁,并且這種鏈式結構很容易擴充設備。
- 缺點:對詢問鏈的電路故障很敏感,如果第n個設備的接口中有關的電路有故障,那么第n個以后的設備都不能進行工作。另外查詢鏈的優先級是固定的,如果優先級高的設備頻繁出現請求時,那么優先級較低的設備可能長期不能使用總線。
2)計數器定時查詢方式(集中式)
與鏈式查詢方式相比,多了一組設備地址線,少了一根總線同意線BG。總線控制模塊接到由BR送來的總線請求信號后,在總線未被使用(BS=0)的情況下,由計數器開始計數,按計數值向各設備發出一組地址信號。當某個有總線請求的設備地址與計數值一致時,便獲得總線使用權,此時終止計數查詢。
這種方式的特點是:計數可以從“0”開始,此時設備的優先次序是固定的;計數也可以從中止點開始,既是一種循環方法,此時設備使用總線的優先級相等。計數器的初始值還可由程序設置,故優先次序可以改變。此外對電路故障不如鏈式查詢方式敏感,但增加了主控制線數,控制也較復雜。
3)獨立請求方式(集中式)
獨立請求方式如下圖所示。其中每一個共享總線的設備均有一對總線請求線BRi和總線授權線BGi。當設備要求使用總線時,便發出該設備的請求信號BRi。總線控制部件中有一排隊電路,可根據優先次序確定響應哪一設備的請求,給設備發相應的授權信號BGi。獨立請求方式的優點是響應時間快,優先級次序控制靈活。但其缺點是控制線數量多。
4)分布仲裁方式(分布式)
分布式仲裁不需要中央仲裁器,每個潛在的主控功能模塊都有自己的仲裁號和仲裁器。當它們有總線請求時,把它們唯一的仲裁號發送到共享的仲裁總線上,每個仲裁器將仲裁總線上得到的號與自己的號進行比較。如果仲裁總線上的號大,則就撤銷自己向仲裁總線發送的仲裁號。最后,獲勝者的仲裁號保留在仲裁總線上,獲得總線控制權。
2.2.5 總線操作和定時
操作和定時主要解決占用總線的一對設備(主模塊和從模塊)如何進行數據傳輸的問題。總線定時是指總線在雙方交換數據的過程中需要時間上配合關系的控制,這種控制稱為總線定時,它的實質是一種協議或規則。
1)總線傳輸的四個階段
- 申請分配階段:由需要使用總線的主模塊(或主設備)提出申請,經總線仲裁模塊決定將下一傳輸周期的總線使用權授予某一個申請者。也可將此階段細分為傳輸請求和總線仲裁兩個階段。
- 尋址階段:獲得使用權的主模塊通過總線發出本次要訪問的從模塊的地址及有關命令,啟動參與本次傳輸的從模塊。
- 傳輸階段:主模塊和從模塊進行數據交換,可單向或雙向進行數據傳送。
- 結束階段:主模塊的有關信息均從系統總線上撤除,讓出總線使用權。
2)總線的定時
總線的定時主要分為兩種,同步定時和異步定時。
同步定時方式是指系統采用一個統一的時鐘信號來協調發送和接收雙方的傳送定時關系。若干個時鐘產生相等的時間間隔,每個間隔構成一個總線周期。在一個總線周期中,發送方和接收方可進行一次數據傳送。因為采用統一的時鐘,每個模塊或設備發送或接收信息都在固定的總線傳送周期中,一個總線的傳送周期結束,下一個總線傳送周期開始。同步通信適用于總線長度較短及總線所接模塊的存取時間比較接近的系統。
- 優點:傳送速度快,具有較高的傳輸速率,總線控制邏輯簡單。
- 缺點:主從模塊屬于強制性同步,不能及時進行數據通信的有效性檢驗,可靠性較差。
在異步定時方式中,沒有統一的時鐘,也沒有固定的時間間隔,完全依靠傳送雙方相互制約的“握手”信號來實現定時控制。主模塊提出交換信息的“請求”信號,經接口傳送到從模塊。從模塊接到主模塊的請求后,通過接口向主模塊發出“回答”信號。 - 優點:總線周期長度可變,能保證兩個工作速度相差很大的部件或設備之間可靠地進行信息交換,自動適應時間的配合。
- 缺點:比同步控制方式稍復雜一些,速度比同步定時方式慢。
根據“請求”和“回答”信號的撤銷是否互鎖,分為以下3種類型。不互鎖方式速度最快,可靠性最差,全互鎖方式最可靠,速度最慢。 - 不互鎖方式:主模塊發出“請求”信號后,不必等到接到從模塊的“回答”信號,而是經過一段時間,便撤銷“請求”信號。而從模塊在接到“請求”信號后,發出“回答”信號,并經過一段時間,自動撤銷“回答”信號。雙方不存在互鎖關系。
- 半互鎖方式:主模塊發出“請求”信號后,必須等接到從模塊的“回答”信號后,才撤銷“請求”信號,有互鎖的關系。而從模塊在接到“請求”信號后,發出“回答”信號,但不必等待獲知主模塊的“請求”信號已經撤銷,而是隔一段時間后自動撤銷“回答”信號,不存在互鎖關系。
- 全互鎖方式:主模塊發出“請求”信號后,必須等從模塊“回答”后,才撤銷“請求”信號。從模塊發出“回答”信號,必須待獲知主模塊“請求”信號已撤銷后,再撤銷其“回答”信號。雙方存在互鎖關系。
2.3 APB總線
2.3.1 APB總線簡介
APB總線屬于AMBA總線協議系列之一,它用在低帶寬、低性能、低功耗的外圍設備上,它屬于非流水線結構,所有的信號僅在時鐘上升沿時產生變化,這就規范了APB外圍設備的設計流程,增加了可擴展性,每個傳輸至少需要兩個時鐘周期。另外,APB無需等待周期和回應信號,只有四個控制信號,控制邏輯簡單。
APB經過了幾個版本的演進越來越完善,每個版本的差異如下:
2.3.2 APB傳輸狀態圖
狀態介紹:
- IDLE:APB總線上沒有數據傳輸時的空閑狀態,也是APB的default狀態。
- SETUP:當一個transfer被請求后,APB總線就會切換到該狀態。
- ACCESS:SETUP只會保持一個時鐘,在下一個時鐘上升沿會切換到該狀態。
狀態切換過程: - APB總線初始化為IDLE狀態,這時沒有傳輸操作,也沒有選中slave模塊。
- 當有transfer需要進行時,PSELx=1,PENABLE=0,APB總線進入SETUP狀態,并在SETUP狀態下停留一個時鐘周期。當下一個PCLK時鐘上升沿到來時,APB總線進入ACCESS狀態。
- APB總線進入ACCESS狀態時,維持之前在SETUP狀態的PADDR、PSEL、PWRITE,然后將PENABLE置為1。傳輸也只會在ACCESS狀態維持一個周期,在經過SETUP與ACCESS狀態之后,傳輸也已經完成了。
- 之后如果沒有新的transfer需要進行,就進入IDLE狀態等待,如果有連續的傳輸,則進入SETUP狀態。
2.3.3 APB信號
2.3.4 APB寫傳輸
寫傳輸包括兩種類型:無等待狀態和有等待狀態。
1)無等待狀態的寫傳輸
地址、寫入信號、寫入數據和選擇信號都在時鐘上升沿時改變。在T1時刻,把要訪問的地址、命令和數據全部放到APB總線上,開始一個寫傳輸,在時鐘的上升沿會寫地址PADDR、寫數據PWDATA、使能寫信號PWRITE,然后使能選擇PSEL信號,選擇從設備。這個時鐘周期對應的階段叫做SETUP。
在T2時刻,在PCLK的上升沿,使能PENABLE以及PREADY信號,從設備發現自己的PSEL信號為高,就知道主設備選擇它來處理數據的寫操作,此時從設備內部準備號處理數據的準備動作。PENABLE的使能代表著ACCESS傳輸階段的開始。在下一個PCLK的上升沿,PREADY信號的改變表明從設備完成了這筆傳輸。
在T3傳輸結束時刻到來前,PADDR、寫數據PWDATA和控制信號保持有效,直到T3時刻PCLK的上升沿到來才會結束ACCESS階段,從設備完成總線上數據采樣并進行內部數據處理。在傳輸結束的時候,如果沒有其他的相同的外設傳輸發起,PENABLE和PSEL信號會被清除。
2)有等待狀態的寫傳輸
如上時序圖,展示了從設備怎么使用PREADY信號擴展傳輸。在ACCESS階段,當PENABLE被置位,從設備通過拉低PREADY來擴展傳輸。在PREADY保持低電平時,如下信號保持不變,比如:PADDR、PWRITE、PSEL、PENABLE、PWDATA、PSTRB、PPORT。當PENABLE被置低,PREADY狀態不確定,這確保具有兩個固定時鐘周期訪問的外設能保持PREADY高。建議地址和寫信號在傳輸結束后,保持穩定不做快速變化,直到另外一個訪問產生。這會減少不必要的功耗消耗。
2.3.5 APB讀傳輸
讀傳輸也包括兩種類型:無等待狀態和有等待傳輸。
1)無等待狀態的讀傳輸
如上時序圖,展示了一個讀傳輸。主設備在T1時刻把所要訪問的地址,命令全部放到APB總線上,沿著組成APB的接口傳播到從設備接口處。在T2時刻,從機發現自己的PSEL信號為高,就知道主機需要它內部的數據(PWRITE ==0),此時從機內部準備好返回數據,并把返回的數據放在數據總線上,在T3時刻,主機完成總線上數據采樣得到需要的數據。
2)有等待狀態的讀傳輸
上時序圖顯示了信號是如何擴展傳輸的。如果在Access phase期間PREADY信號拉低,則傳輸被擴展。但下述信號不變:
- 地址:PADDR
- 寫信號:PWRITE
- 選擇信號:PSEL
- 使能信號:PENABLE.
圖中顯示了如何使用PREADY信號來添加兩個周期,也可以添加數個周期。
2.3.6 APB錯誤響應
使用PSLVERR來表明APB傳輸的錯誤狀態。在讀或者寫傳輸的時候都有可能產生錯誤狀態。使用PSLVERR來指示APB傳輸錯誤。當PSEL、PENABLE以及PREADY 都為高時,PSLVERR才在最后一個周期進行判斷。當任何一個PSEL、 PENABLE或者PREADY為低時,你可以將PSLVERR拉低,這是推薦,并不是強制要求。收到一個錯誤后,可能或不可能改變外圍器件的狀態。這是外設的特性,兩者都是可以接受。當一個寫傳輸收到一個錯誤,這并不是說外設的寄存器沒有被主設備更新。當收到一個讀傳輸的錯誤,這意味著返回的是無效的數據。沒必要在讀傳輸失敗的時候,通過總線返回0。APB外圍設備不要求必須支持PSLVERR引腳,當不使用該引腳時,應被置低。
1)寫傳輸失敗
上圖顯示了一個寫傳輸失敗的時序圖。在PSEL、PENABLE以及PREADY 都為高時,PSLVERR在最后一個周期進行判斷,上圖顯示PSLVERR返回了一個錯誤。
2)讀傳輸失敗
一個讀傳輸可能是以總線返回錯誤結束,這表明當前這筆讀傳輸返回的數據是無效的。上圖顯示了一個讀傳輸失敗的時序圖。
-
ARM
+關注
關注
134文章
9057瀏覽量
366882 -
總線
+關注
關注
10文章
2869瀏覽量
87997 -
AMBA
+關注
關注
0文章
68瀏覽量
14953
發布評論請先 登錄
相關推薦
評論