a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 一種PCI總線仲裁器的設計與實現

一種PCI總線仲裁器的設計與實現

作者: 時間:2012-01-04 來源:網絡 收藏

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

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

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

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

1 PCI總線的仲裁機制

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

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

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

2 總線的缺省占用

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

當總線空閑(其他器件都以高阻態形式連接在總線上)且一個器件要與目的器件通信時,發起通信的器件驅動總線,發出地址和數據。其他以高阻態形式連接在總線上的器件如果收到(或能夠收到)與自己相符的地址信息后,即接收總線上的數據。發送器件完成通信,將總線讓出(輸出變為高阻態)。

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

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

3 仲裁信號協定

綜上所述, PCI總線的仲裁主要是通過_REQ和_GNT兩個信號來實現的。前者用于某一設備要求占用總線的請求,后者用于允許某一設備占用總線的應答。只有總線仲裁器才可以指定誰是總線缺省的擁有者。

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

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

· 若總線不是處于空閑狀態,有可能一個_GNT的撤消碰巧是另一個_GNT發出的同時,但如果是在空閑狀態,則要求一個_GNT撤消到下一個_GNT的發出之間必須有一個時鐘周期。否則可能會在AD線和PAR線上出現沖突;

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

· _GNT信號的每次發出,只限于相應的總線主控器可以使用總線進行一次總線操作。若該主控器還想做多次總線訪問時,可以保持它的_REQ信號一直有效。此時,如果沒有其它請求,或者當前的主控器具有最高優先權,仲裁器就會繼續批準總線給當前主控器;

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

4 優先級仲裁算法

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

由于總線仲裁算法從根本上說與PCI總線技術規范無關,所以者可以根據實際需要自由地進行選擇和修改。但要注意,時必須為所選用的I/O控制器及接插卡提供所要求的訪問延遲保證。

總線優先級仲裁算法通常有兩種,是固定優先級算法,是循環優先級算法。但不管是哪仲裁算法,都必須滿足以下三個基本要求:

· 每一時刻只能有一個設備作為總線主控器;

· 先請求者先響應,且在一個總線操作周期之內不被打斷;

· 同一時刻有幾個設備發出請求時,按優先級排序響應。

所謂固定優先級算法,就是指PCI總線中各主控器的優先級是事先確定好的,在仲裁器仲裁過程中固定不變;而循環優先級算法則不同,各主控器的優先級在仲裁器的仲裁過程中不是一成不變,而是根據一定規律發生變化的。

表1給出了采用循環優先級算法或固定優先級算法時,PCI總線仲裁器中N個主控器的優先級變化規律。

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

5 仲裁器的EPLD編程設計

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

5.1 PCI總線的狀態機

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

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

PCI總線的狀態機包括三種基本狀態:無任何總線請求(NO_REQ)、等待周期(WAIT_CYCLE)和幀信號_FRAME的撤消(FRAMED)。其中,_FRAME信號的撤消,意味著當前的總線操作將進入最后一個數據傳輸周期,此時,_IRDY有效,一旦 _TRDY也有效最后一個數據傳輸周期就可完成。而判斷_FRAME是否撤消的具體方法就是判斷_FRAME是否出現從低到高的上跳變。圖2所示即為PCI總線的狀態機。圖中,TIME_OUT為從_GNT發出到_FRAME變為有效所允許的PCI總線周期數。

5.2 PCI總線仲裁器的狀態機

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

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

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

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

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



評論


相關推薦

技術專區

關閉