<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 嵌入式系統中PCI總線(xiàn)仲裁器的設計與實(shí)現

嵌入式系統中PCI總線(xiàn)仲裁器的設計與實(shí)現

——
作者:李德升,羅玉平 (中國科學(xué)技術(shù)大學(xué) 電子科學(xué)與技術(shù)系,安徽 合肥 230027) 時(shí)間:2007-01-26 來(lái)源:《電子技術(shù)應用》 收藏

pci(peripheral component interconnect)總線(xiàn)是現今最為流行的工業(yè)控制總線(xiàn)之一。它廣泛地應用在計算機中,并且由于眾多廠(chǎng)商對pci的良好支持,使得目標嵌入式設備中的很多解決方案都包含了pci總線(xiàn)。在多主設備的pci系統應用中,必須對各個(gè)主設備提供仲裁授權信號。很多廠(chǎng)家有針對性地發(fā)布了pci仲裁邏輯的專(zhuān)用芯片或者集成了pci重載邏輯的專(zhuān)用芯片,但使用不夠靈活,為了使pci設備能夠更方便地應用在嵌入式系統中,本文介紹了一種基于cpld(復雜可編程邏輯器件)的pci總線(xiàn)仲裁器的設計方法,此方法可以為系統量身定制適合于系統本身的pci總線(xiàn)仲裁器。而不必局限于特定的芯片要求,在體積、功能、成本等諸多方面都有很好的應用前景。

1 pci總線(xiàn)仲裁簡(jiǎn)介 1.1 pci總線(xiàn)的仲裁原理

pci總線(xiàn)是一種共享式的總線(xiàn),可以連接多個(gè)主設備,但由于數據傳輸的獨占性,每一時(shí)刻只能由一個(gè)主設備占用總線(xiàn)。因此,為了有效地利用pci總線(xiàn)寬帶,必須設置一個(gè)總線(xiàn)仲裁器,按照一定的算法協(xié)調系統中各個(gè)主設備的操作。

每個(gè)具備主設備功能的pci設備必須提供兩個(gè)與仲裁有關(guān)的信號:req#和gnt#。其中req#為請求總線(xiàn)信號,由需要發(fā)起pci傳輸事務(wù)的設備發(fā)出,gnt#為總線(xiàn)授權信號,由pci總線(xiàn)仲裁器裁決后給出,接到gnt#信號的pci設備將在下一次總線(xiàn)空閑后開(kāi)始操作。

pci總線(xiàn)仲裁的裁決過(guò)程可以在pci傳輸期間完成,并不占用pci總線(xiàn)的寬帶,這稱(chēng)為隱式仲裁,即需要發(fā)起pci操作的設備可以隨時(shí)發(fā)出請求req#,pci仲裁器立即批準該請求被給出gnt#,但是真正的傳輸操作一定要等到當前傳輸完成,即總線(xiàn)空閑后才可以開(kāi)始,圖1描述了pci總線(xiàn)設備與仲裁器的關(guān)系。

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


1.2 pci總線(xiàn)仲裁規則約定

(1)仲裁器的仲裁算法必須保證所有的設備都能得到授權的機會(huì ),否則將會(huì )出現某個(gè)優(yōu)先級低的設備永遠不能占有總線(xiàn)進(jìn)行事務(wù)操作的情況。

(2)如果frame無(wú)效,gnt可以在任意時(shí)間撤銷(xiāo),以便服務(wù)于另一個(gè)主設備或者作為對主設備車(chē)req的響應。

(3)如果gnt信號被撤銷(xiāo)但frame有信號,當前的總線(xiàn)正在傳輸數據,則操作合法。

(4)如果總線(xiàn)不處于空閑狀態(tài),則允許一個(gè)gnt的撤銷(xiāo)和另一個(gè)gnt的發(fā)生在同一個(gè)周期,如果處在空閑狀態(tài),則要求一個(gè)gnt撤銷(xiāo)到下一個(gè)gnt的發(fā)出之間必須有一個(gè)時(shí)鐘周期間隔,否則可能會(huì )在ad線(xiàn)和par線(xiàn)上出現沖突。

(5)gnt信號的每次發(fā)出,只限于相應的總線(xiàn)主控器可以使用總線(xiàn)進(jìn)行一次總線(xiàn)操作(一個(gè)frame發(fā)出到撤銷(xiāo)),如果該主控器需要多次總線(xiàn)訪(fǎng)問(wèn),它可以保持req信號一直有效。仲裁器會(huì )按照特定的仲裁算法來(lái)決定是否仍判給該主設備。

(6)一個(gè)主控器可以在任意時(shí)刻撤銷(xiāo)其req信號,req信號一旦撤銷(xiāo),仲裁器將認為該設備不再請求使用總線(xiàn),因而撤銷(xiāo)其gnt信號(參考上文(1))。如果一個(gè)主控器只希望做一次總線(xiàn)傳輸,則它應當在發(fā)出frame的同一時(shí)鐘周期撤銷(xiāo)req。

(7)如果當前的主控器在它的gnt信號發(fā)出后,持續16個(gè)空閑周期還沒(méi)有開(kāi)始總線(xiàn)操作,則仲裁器視其為超時(shí),仲裁器可以在任意時(shí)刻撤銷(xiāo)gnt信號,以便服務(wù)于另一個(gè)設備。

1.3 pci總線(xiàn)仲裁的算法

目前,應用于pci總線(xiàn)仲裁的算法主要有固定優(yōu)先級算法和動(dòng)態(tài)優(yōu)先級算法兩種,在固定優(yōu)先級算法中,各個(gè)設備的優(yōu)先級是事先確定好的,仲裁器針對事先設定好的優(yōu)先級為每個(gè)設備分配使用權。這種算法的缺點(diǎn)是:一旦pci總線(xiàn)事務(wù)非常繁忙,優(yōu)先級高的設備會(huì )占有總線(xiàn)不放,將導致優(yōu)先級低的設備無(wú)法申請到總線(xiàn)??梢?jiàn)這是一種并不公平的算法,只適用于總線(xiàn)利用率非常低的情況,動(dòng)態(tài)優(yōu)先級算法是在每次仲裁授權后動(dòng)態(tài)改變各個(gè)設備的優(yōu)先級。在保證每個(gè)設備都有機會(huì )獲得總線(xiàn)的情況下,優(yōu)先級改變的算法可以是各式各樣的。最常用的是循環(huán)優(yōu)先級算法,即每次仲裁授權后將排隊中的設備優(yōu)先級加1。因其算法簡(jiǎn)單,且對大部分應用都十分有效。本設計采用循環(huán)優(yōu)先級算法。

1.4 總線(xiàn)???

當pci總線(xiàn)空閑時(shí),一個(gè)設備從申請總線(xiàn)到被授權使用,最小也需要2個(gè)時(shí)鐘周期,這對于pci總線(xiàn)是一種浪費。因此仲裁器通常選中一個(gè)最經(jīng)常占用總線(xiàn)的設備,pci總線(xiàn)空閑時(shí)將gnt#賦予它,這叫做總線(xiàn)???。當總線(xiàn)空閑時(shí),該設備需要占用總線(xiàn)時(shí)可馬上得到批準。

2 雙主設備pci總線(xiàn)仲裁器的實(shí)現

下面描述了一個(gè)具有兩個(gè)設備的總線(xiàn)仲裁器的硬件實(shí)現,其一為trimedia嵌入式dspcpu pnx1300,其二為intel i82559網(wǎng)絡(luò )控制器,系統結構如圖2所示。

該仲裁器的接口信號如表1所示。

為設計方便起見(jiàn),在程序中設計三類(lèi)狀態(tài)機:總線(xiàn)狀態(tài)狀態(tài)機、總線(xiàn)主設備查詢(xún)狀態(tài)機、仲裁狀態(tài)機。

2.1 總線(xiàn)狀態(tài)狀態(tài)機

總線(xiàn)狀態(tài)狀態(tài)機用于記錄總線(xiàn)事務(wù)的狀態(tài),定義如下:

type bus_state is(idle,busy,last_data,finish)
四種狀態(tài)分別表示總線(xiàn)空閑、忙、最后一個(gè)數據傳輸期以及傳輸完成。狀態(tài)圖如圖3。

下面是以vhdl代碼形式實(shí)現的該狀態(tài)機的狀態(tài)轉換關(guān)系。




2.2總線(xiàn)主設備查詢(xún)狀態(tài)機

總線(xiàn)主設備查詢(xún)狀態(tài)機用來(lái)決定當前是否需要重新指定一個(gè)主設備,重新指定一個(gè)主設備的條件是:(1)當前被授權的設備已開(kāi)始傳輸;(2)當前被授權的設備沒(méi)有開(kāi)始傳輸并且超時(shí)。將主設備查詢(xún)狀態(tài)分為idle、gnt1、gnt2、wait_nobusy和wait_busy2五個(gè)狀態(tài),并設置計數器count,當總線(xiàn)上某個(gè)設備被授權,但16個(gè)周期仍然沒(méi)有開(kāi)始操作,count超過(guò)16,被視為超時(shí),仲裁器可以撤銷(xiāo)其仲裁授權,并傳授其他設備,程序根據這個(gè)狀態(tài)機的輸出結果決定仲裁狀態(tài)機是否改變。

狀態(tài)轉換如圖4所示,狀態(tài)機描述的vhdl代碼略。


主設備查詢(xún)狀態(tài)機的輸出信號search_master:


該狀態(tài)機的驅動(dòng)條件是由總線(xiàn)狀態(tài)狀態(tài)機的輸出結果(busbusy)、仲裁狀態(tài)機的狀態(tài)(idle,park)和計數器的產(chǎn)生的超時(shí)信號(timeout)組成,設置wait_busy2的目的是為了避免可能會(huì )在ad線(xiàn)和par線(xiàn)上出現的沖突。該狀態(tài)機的輸出search_master作為仲裁狀態(tài)機狀態(tài)轉換使能信號,只有該信號有效時(shí),仲裁狀態(tài)機才進(jìn)行當前狀態(tài)的改變。

2.3 仲裁狀態(tài)機

仲裁狀態(tài)機表示總線(xiàn)仲裁器的狀態(tài),定義如下:


狀態(tài)轉變過(guò)程如圖5所示,狀態(tài)機描述的vhdl代碼略。

仲裁器根據仲裁狀態(tài)機當前狀態(tài)控制仲裁授權信號(gnt)的給出。

注:parkmaster是事先設置的??繝顟B(tài)。

2.4仿真波形圖

由圖6可以看出,測試文件模擬了一個(gè)設備申請和兩個(gè)設備同時(shí)申請的情況,并給出了總線(xiàn)授權信號(gnt),驗證了仲裁器邏輯的正確性。

2.5 資源占用情況分析

可編程邏輯器件使用lattice公司的isplsi2064e135lt100,在isplever中綜合本例程序,結果如表2。

綜合后的延遲分析顯示,該邏輯的時(shí)鐘周期最小為7.5ns,即該邏輯可以運行在133mhz以下的系統中,完全可以勝任33mhz pci總線(xiàn)的仲裁工作。

本pci總線(xiàn)仲裁器已成功地應用在基于pnx1300的ip會(huì )議電視終端系統中,用于處理嵌入式cpu pnx1300和網(wǎng)絡(luò )控制器i82559的總線(xiàn)占用仲裁。該會(huì )議電視終端已于2005年1月在國家泰爾實(shí)驗室通過(guò)測試并取得入網(wǎng)許可證。


關(guān)鍵詞:

評論


相關(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>