<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種PCI總線(xiàn)仲裁器的設計與實(shí)現

一種PCI總線(xiàn)仲裁器的設計與實(shí)現

作者: 時(shí)間:2012-01-04 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:以自行研制開(kāi)發(fā)的高速背板為背景,系統地論述了機制、的缺省占用、信號協(xié)定及優(yōu)先級算法,給出了采用EPLD仲裁器功能的編程。

本文引用地址:http://dyxdggzs.com/article/149896.htm

隨著(zhù)VLSI/ULSI技術(shù)的發(fā)展,可編程邏輯器件EPLD/FPGA越來(lái)越受到人們的青睞,由于它具有集成度高、速度快、開(kāi)發(fā)周期短、費用低、用戶(hù)可定義功能及可重復編程和擦寫(xiě)等許多優(yōu)點(diǎn),其應用領(lǐng)域不斷擴大。這些器件的靈活性和通用性使得它們已成為研制和開(kāi)發(fā)復雜數字系統的理想選擇。

總線(xiàn)技術(shù)規范的基礎上,采用EPLD了高速PCI總線(xiàn)背板中多主控設備的總線(xiàn)仲裁。

1 PCI總線(xiàn)的仲裁機制

PCI總線(xiàn)仲裁是基于訪(fǎng)問(wèn)而不是基于時(shí)間片,也就是說(shuō),對于一個(gè)PCI總線(xiàn)主設備,必須為它在總線(xiàn)上進(jìn)行的每次訪(fǎng)問(wèn)提出仲裁要求。PCI總線(xiàn)上采用的是并行仲裁(也叫獨立請求仲裁)方案,其仲裁機制如圖1所示。在這種仲裁中,每個(gè)主控器各有自己獨立的總線(xiàn)請求線(xiàn)_REQ 和總線(xiàn)允許線(xiàn)_GNT 與總線(xiàn)仲裁器相連,相互間沒(méi)有任何控制關(guān)系。PCI總線(xiàn)的仲裁是“隱含的”,就是說(shuō)一次仲裁可以在前一次總線(xiàn)訪(fǎng)問(wèn)期間完成,這樣就使得仲裁的具體不必占用PCI總線(xiàn)周期。當然在總線(xiàn)空閑時(shí)除外。

當PCI總線(xiàn)進(jìn)行操作時(shí),發(fā)起者(Master)先置REQ#,當得到仲裁器(Arbiter)的許可時(shí)(GNT#),會(huì )將FRAME#置低,并在A(yíng)D總線(xiàn)上放置Slave地址,同時(shí)C/BE#放置命令信號,說(shuō)明接下來(lái)的傳輸類(lèi)型。所有PCI總線(xiàn)上設備都需對此地址譯碼,被選中的設備要置DEVSEL#以聲明自己被選中。然后當IRDY#與TRDY#都置低時(shí),可以傳輸數據。當MaSTer數據傳輸結束前,將FRAME#置高以標明只剩最后一組數據要傳輸,并在傳完數據后放開(kāi)IRDY#以釋放總線(xiàn)控制權。

在實(shí)際的PCI總線(xiàn)仲裁電路中,與仲裁直接有關(guān)的控制線(xiàn)除_REQ和_GNT外,還有_FRAME、_IRDY。此外,為了保證總線(xiàn)交換的同步,還應有一根總線(xiàn)時(shí)鐘信號PCIclk和一根總線(xiàn)復位信號_PCIrst,如圖1虛線(xiàn)所示。

2 總線(xiàn)的缺省占用

總線(xiàn)(Bus)是計算機各種功能部件之間傳送信息的公共通信干線(xiàn),它是由導線(xiàn)組成的傳輸線(xiàn)束, 按照計算機所傳輸的信息種類(lèi),計算機的總線(xiàn)可以劃分為數據總線(xiàn)、地址總線(xiàn)和控制總線(xiàn),分別用來(lái)傳輸數據、數據地址和控制信號。

當總線(xiàn)空閑(其他器件都以高阻態(tài)形式連接在總線(xiàn)上)且一個(gè)器件要與目的器件通信時(shí),發(fā)起通信的器件驅動(dòng)總線(xiàn),發(fā)出地址和數據。其他以高阻態(tài)形式連接在總線(xiàn)上的器件如果收到(或能夠收到)與自己相符的地址信息后,即接收總線(xiàn)上的數據。發(fā)送器件完成通信,將總線(xiàn)讓出(輸出變?yōu)楦咦钁B(tài))。

所謂總線(xiàn)的缺省占用,就是指在當前沒(méi)有設備使用總線(xiàn)或請求總線(xiàn)的情況下,允許仲裁器根據一定的方式選定一個(gè)設備作為總線(xiàn)缺省的擁有者,并向它發(fā)出_GNT信號。選擇的方式有多種,如可為某一固定設備,也可為最后一次使用總線(xiàn)的設備,當然也可以指定自己(仲裁器本身)為總線(xiàn)缺省的擁有者。

當仲裁器將某一設備確定為總線(xiàn)的缺省擁有者時(shí)該設備可以不通過(guò)發(fā)_REQ信號就開(kāi)始一次總線(xiàn)操作(只要總線(xiàn)空閑且_GNT信號有效)。如果該設備需要做多次的數據傳輸,它就應當發(fā)出_REQ信號,以便向仲裁器提出多次操作的請求;而如果該設備只要求做一次總線(xiàn)操作,它就不應當發(fā)出_REQ信號,否則仲裁器可能在它不需要使用總線(xiàn)的情況下又給它發(fā)出_GNT信號。

3 仲裁信號協(xié)定

綜上所述, PCI總線(xiàn)的仲裁主要是通過(guò)_REQ和_GNT兩個(gè)信號來(lái)實(shí)現的。前者用于某一設備要求占用總線(xiàn)的請求,后者用于允許某一設備占用總線(xiàn)的應答。只有總線(xiàn)仲裁器才可以指定誰(shuí)是總線(xiàn)缺省的擁有者。

當仲裁器允許某一設備使用總線(xiàn)時(shí),就向該設備發(fā)出_GNT信號;相反,當仲裁器不再允許某一設備擁有總線(xiàn)控制權時(shí),可以在任意時(shí)鐘撤消該設備的_GNT信號。如果_GNT信號無(wú)效,這次操作就不可以進(jìn)行。

PCI總線(xiàn)的仲裁信號之間必須遵循一定的協(xié)定,具體描述如下:

· 若總線(xiàn)不是處于空閑狀態(tài),有可能一個(gè)_GNT的撤消碰巧是另一個(gè)_GNT發(fā)出的同時(shí),但如果是在空閑狀態(tài),則要求一個(gè)_GNT撤消到下一個(gè)_GNT的發(fā)出之間必須有一個(gè)時(shí)鐘周期。否則可能會(huì )在A(yíng)D線(xiàn)和PAR線(xiàn)上出現沖突;

· 當_FRAME無(wú)信號時(shí),_GNT可以在任意時(shí)間撤消,以便服務(wù)于另一個(gè)主設備,或者作為對相應的_REQ撤消的響應;

· _GNT信號的每次發(fā)出,只限于相應的總線(xiàn)主控器可以使用總線(xiàn)進(jìn)行一次總線(xiàn)操作。若該主控器還想做多次總線(xiàn)訪(fǎng)問(wèn)時(shí),可以保持它的_REQ信號一直有效。此時(shí),如果沒(méi)有其它請求,或者當前的主控器具有最高優(yōu)先權,仲裁器就會(huì )繼續批準總線(xiàn)給當前主控器;

·一個(gè)主控器可以在任意時(shí)刻撤消其_REQ信號,但要注意,_REQ信號一旦撤消,仲裁器將認為該設備不再請求使用總線(xiàn),因而撤消其_GNT信號。若一個(gè)主控器只希望做一次總線(xiàn)傳輸,它應當在發(fā)出_FRAME的同一時(shí)鐘周期撤消_REQ;

4 優(yōu)先級仲裁算法

為了合理地控制和管理系統中需要占用總線(xiàn)的數據源,PCI仲裁器必須實(shí)現一個(gè)特別的優(yōu)先級仲裁算法,以便在多個(gè)設備同時(shí)提出總線(xiàn)占用請求時(shí),能依據該仲裁算法判決出哪個(gè)設備應獲得對總線(xiàn)的控制權??偩€(xiàn)仲裁可以確保任何時(shí)刻總線(xiàn)上最多只有一個(gè)設備發(fā)送信息,而決不會(huì )出現多個(gè)主控器同時(shí)占用總線(xiàn)的情況。

由于總線(xiàn)仲裁算法從根本上說(shuō)與PCI總線(xiàn)技術(shù)規范無(wú)關(guān),所以者可以根據實(shí)際需要自由地進(jìn)行選擇和修改。但要注意,時(shí)必須為所選用的I/O控制器及接插卡提供所要求的訪(fǎng)問(wèn)延遲保證。

總線(xiàn)優(yōu)先級仲裁算法通常有兩種,是固定優(yōu)先級算法,是循環(huán)優(yōu)先級算法。但不管是哪仲裁算法,都必須滿(mǎn)足以下三個(gè)基本要求:

· 每一時(shí)刻只能有一個(gè)設備作為總線(xiàn)主控器;

· 先請求者先響應,且在一個(gè)總線(xiàn)操作周期之內不被打斷;

· 同一時(shí)刻有幾個(gè)設備發(fā)出請求時(shí),按優(yōu)先級排序響應。

所謂固定優(yōu)先級算法,就是指PCI總線(xiàn)中各主控器的優(yōu)先級是事先確定好的,在仲裁器仲裁過(guò)程中固定不變;而循環(huán)優(yōu)先級算法則不同,各主控器的優(yōu)先級在仲裁器的仲裁過(guò)程中不是一成不變,而是根據一定規律發(fā)生變化的。

表1給出了采用循環(huán)優(yōu)先級算法或固定優(yōu)先級算法時(shí),PCI總線(xiàn)仲裁器中N個(gè)主控器的優(yōu)先級變化規律。

采用固定優(yōu)先級算法,可以對那些有重要數據傳輸、或有大量實(shí)時(shí)數據傳輸以及經(jīng)常需要占用總線(xiàn)的主設備賦予較高的優(yōu)先權,以便有效地利用PCI總線(xiàn)周期。在實(shí)際中,常常將這兩種算法結合起來(lái)使用,以便構成更為靈活的仲裁機構。

5 仲裁器的EPLD編程設計

下面以支持5個(gè)總線(xiàn)主控器的PCI總線(xiàn)仲裁器為例,給出采用Altera公司的EPLD進(jìn)行功能實(shí)現的主要設計思路,其中,所用編程語(yǔ)言為Altera公司的AHDL語(yǔ)言。該仲裁器采用循環(huán)優(yōu)先級仲裁算法,且總線(xiàn)的缺省擁有者指定為最后一次使用總線(xiàn)的主設備。

5.1 PCI總線(xiàn)的狀態(tài)機

PCI是Peripheral CompONent Interconnect(外設部件互連標準)的縮寫(xiě),它是目前個(gè)人電腦中使用最為廣泛的接口,幾乎所有的主板產(chǎn)品上都帶有這種插槽。PCI插槽也是主板帶有最多數量的插槽類(lèi)型,在目前流行的臺式機主板上,ATX結構的主板一般帶有5~6個(gè)PCI插槽,而小一點(diǎn)的MATX主板也都帶有2~3個(gè)PCI插槽,可見(jiàn)其應用的廣泛性。

PCI總線(xiàn)是一種不依附于某個(gè)具體處理器的局部總線(xiàn)。從結構上看,PCI是在CPU和原來(lái)的系統總線(xiàn)之間插入的一級總線(xiàn),具體由一個(gè)橋接電路實(shí)現對這一層的管理,并實(shí)現上下之間的接口以協(xié)調數據的傳送。管理器提供了信號緩沖,使之能支持10種外設,并能在高時(shí)鐘頻率下保持高性能。PCI總線(xiàn)也支持總線(xiàn)主控技術(shù),允許智能設備在需要時(shí)取得總線(xiàn)控制權,以加速數據傳送。

PCI總線(xiàn)的狀態(tài)機包括三種基本狀態(tài):無(wú)任何總線(xiàn)請求(NO_REQ)、等待周期(WAIT_CYCLE)和幀信號_FRAME的撤消(FRAMED)。其中,_FRAME信號的撤消,意味著(zhù)當前的總線(xiàn)操作將進(jìn)入最后一個(gè)數據傳輸周期,此時(shí),_IRDY有效,一旦 _TRDY也有效最后一個(gè)數據傳輸周期就可完成。而判斷_FRAME是否撤消的具體方法就是判斷_FRAME是否出現從低到高的上跳變。圖2所示即為PCI總線(xiàn)的狀態(tài)機。圖中,TIME_OUT為從_GNT發(fā)出到_FRAME變?yōu)橛行试S的PCI總線(xiàn)周期數。

5.2 PCI總線(xiàn)仲裁器的狀態(tài)機

由于此仲裁器最大支持5個(gè)PCI總線(xiàn)主控器,至于仲裁器的仲裁狀態(tài)什么時(shí)候應該發(fā)生變化則由總線(xiàn)狀態(tài)機的狀態(tài)決定,具體如下:當總線(xiàn)狀態(tài)機處于FRAMED狀態(tài),表明在最后一個(gè)數據傳輸周期結束后,它將釋放PCI總線(xiàn),此時(shí),仲裁器便可撤消對它的_GNT信號,以便去服務(wù)于另一個(gè)主控器;所以,若用EnChange來(lái)代表允許仲裁器仲裁狀態(tài)發(fā)生變化的條件,則采用AHKL語(yǔ)言的具體編程如下:EnChange=(EnCHstate ==FRAMED)#(eNchSTATE == no_req)#(TimeOut[]==TIME_OUT)

該仲裁器中,由于采用循環(huán)優(yōu)先級算法,仲裁器從每一種仲裁狀態(tài)轉換到其它仲裁狀態(tài)的方法都是一樣的,所以,下面只給出了仲裁器的仲裁狀態(tài)為主控器1時(shí)向其它仲裁狀態(tài)的轉換機理(如圖3所示)。另外,若仲裁器在剛啟動(dòng)時(shí)處于無(wú)效狀態(tài),則強制狀態(tài)機在下一個(gè)時(shí)鐘轉換到Master0態(tài)。

5.3 總線(xiàn)允許信號_GNTi(低電平有效)的建立

在PCI對話(huà)中,由于_FRAME 和 _IRDY決定著(zhù)總線(xiàn)的忙/閑狀態(tài)。兩者之中只要有一個(gè)信號成立,總線(xiàn)就處于忙碌狀態(tài);當兩個(gè)信號都無(wú)效時(shí),總線(xiàn)才處于空閑狀態(tài)。所以建立_GNTi的具體編程如下:?。逩NTi=(GNTstate==Masteri)GLOBAL(_PCIrst)!MaskGNT;%式中,MaskGNT=_FRAME_IRDY%

總之,本文介紹的PCI總線(xiàn)仲裁器,由于采用單片EPLD即可實(shí)現,所以它具有系統結構簡(jiǎn)單、成本低、可靠性高、在線(xiàn)修改方便及升級容易等特點(diǎn)。目前,采用該仲裁器的PCI高速總線(xiàn)背板已應用在我們研發(fā)的總線(xiàn)型高性能網(wǎng)絡(luò )交換機系列中。經(jīng)過(guò)近兩年的實(shí)際運行表明,仲裁器工作正常,性能穩定可靠。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>