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