《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 嵌入式系統(tǒng)中PCI總線仲裁器的設(shè)計方法
嵌入式系統(tǒng)中PCI總線仲裁器的設(shè)計方法
摘要: 嵌入式系統(tǒng)(Embeddedsystem),,是一種“完全嵌入受控器件內(nèi)部,,為特定應(yīng)用而設(shè)計的專用計算機系統(tǒng)”,,根據(jù)英國...
Abstract:
Key words :

  嵌入式系統(tǒng)(Embedded system),是一種“完全嵌入受控器件內(nèi)部,,為特定應(yīng)用而設(shè)計的專用計算機系統(tǒng)”,,根據(jù)英國電器工程師協(xié)會( U.K. InstitutiON of Electrical Engineer)的定義,嵌入式系統(tǒng)為控制、監(jiān)視或輔助設(shè)備,、機器或用于工廠運作的設(shè)備,。與個人計算機這樣的通用計算機系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預(yù)先定義的任務(wù),。由于嵌入式系統(tǒng)只針對一項特殊的任務(wù),,設(shè)計人員能夠?qū)λM(jìn)行優(yōu)化,減小尺寸降低成本,。由于嵌入式系統(tǒng)通常進(jìn)行大量生產(chǎn),。所以單個的成本節(jié)約,能夠隨著產(chǎn)量進(jìn)行成百上千的放大,。

  PCI總線是現(xiàn)今最為流行的工業(yè)控制總線之一,。它廣泛地應(yīng)用在計算機中,很多目標(biāo)嵌入式設(shè)備中的解決方案都包含了PCI總線,。這里介紹一種基于CPLD(復(fù)雜可編程邏輯器件)的PCI總線仲裁器的設(shè)計方法,,可以為系統(tǒng)量身定制適合于系統(tǒng)本身的PCI總線仲裁器。

  1 PCI總線仲裁簡介

  1.1 PCI總線的仲裁原理

  PCI總線是一種共享式的總線,,可以連接多個主設(shè)備,,但由于數(shù)據(jù)傳輸?shù)莫氄夹裕恳粫r刻只能由一個主設(shè)備占用總線,。因此,,為了有效地利用PCI總線寬帶,必須設(shè)置一個總線仲裁器,,按照一定的算法協(xié)調(diào)系統(tǒng)中各個主設(shè)備的操作,。

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

  1.2 PCI總線仲裁規(guī)則約定

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

  (2)如果FRAME無效,,GNT可以在任意時間撤銷,,以便服務(wù)于另一個主設(shè)備或者作為對主設(shè)備車REQ的響應(yīng)。

  (3)如果GNT信號被撤銷但FRAME有信號,,當(dāng)前的總線正在傳輸數(shù)據(jù),,則操作合法。

 ?。?)如果總線不處于空閑狀態(tài),,則允許一個GNT的撤銷和另一個GNT的發(fā)生在同一個周期,如果處在空閑狀態(tài),,則要求一個GNT撤銷到下一個GNT的發(fā)出之間必須有一個時鐘周期間隔,,否則可能會在AD線和PAR線上出現(xiàn)沖突。

 ?。?)GNT信號的每次發(fā)出,,只限于相應(yīng)的總線主控器可以使用總線進(jìn)行一次總線操作。仲裁器會按照特定的仲裁算法來決定是否仍判給該主設(shè)備,。

 ?。?)一個主控器可以在任意時刻撤銷其REQ信號,REQ信號一旦撤銷,,仲裁器將認(rèn)為該設(shè)備不再請求使用總線,,因而撤銷其GNT信號。

 ?。?)如果當(dāng)前的主控器在它的GNT信號發(fā)出后,,持續(xù)16個空閑周期還沒有開始總線操作,則仲裁器視其為超時,,仲裁器可以在任意時刻撤銷GNT信號,。

  1.3 PCI總線仲裁的算法

  目前,應(yīng)用于PCI總線仲裁的算法主要有固定優(yōu)先級算法和動態(tài)優(yōu)先級算法兩種,,在固定優(yōu)先級算法中,,各個設(shè)備的優(yōu)先級是事先確定好的,仲裁器針對事先設(shè)定好的優(yōu)先級為每個設(shè)備分配使用權(quán),。最常用的是循環(huán)優(yōu)先級算法,,即每次仲裁授權(quán)后將排隊中的設(shè)備優(yōu)先級加1。因其算法簡單,,且對大部分應(yīng)用都十分有效,。

  1.4 總線停靠

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

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

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

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

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

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

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

  type bus_state is(IDLE,,BUSY,LAST_DATA,,F(xiàn)INISH)

  四種狀態(tài)分別表示總線空閑,、忙、最后一個數(shù)據(jù)傳輸期以及傳輸完成,。狀態(tài)圖如圖3,。

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

  2.2總線主設(shè)備查詢狀態(tài)機

  總線主設(shè)備查詢狀態(tài)機用來決定當(dāng)前是否需要重新指定一個主設(shè)備,,重新指定一個主設(shè)備的條件是:(1)當(dāng)前被授權(quán)的設(shè)備已開始傳輸,;(2)當(dāng)前被授權(quán)的設(shè)備沒有開始傳輸并且超時。將主設(shè)備查詢狀態(tài)分為IDLE,、GNT1,、GNT2、WAIT_NOBUSY和WAIT_BUSY2五個狀態(tài),,并設(shè)置計數(shù)器count,,當(dāng)總線上某個設(shè)備被授權(quán),16個周期仍然沒有開始操作,,count超過16,,被視為超時,仲裁器可以撤銷其仲裁授權(quán),,并傳授其他設(shè)備,,程序根據(jù)這個狀態(tài)機的輸出結(jié)果決定仲裁狀態(tài)機是否改變。

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

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

  該狀態(tài)機的驅(qū)動條件是由總線狀態(tài)狀態(tài)機的輸出結(jié)果,、仲裁狀態(tài)機的狀態(tài)以及計數(shù)器產(chǎn)生的超時信號組成,。該狀態(tài)機的輸出search_master作為仲裁狀態(tài)機狀態(tài)轉(zhuǎn)換使能信號,,該信號有效時,仲裁狀態(tài)機才進(jìn)行當(dāng)前狀態(tài)的改變,。

  2.3 仲裁狀態(tài)機

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

  狀態(tài)轉(zhuǎn)變過程如圖5所示,狀態(tài)機描述的VHDL代碼略,。

  仲裁器根據(jù)仲裁狀態(tài)機當(dāng)前狀態(tài)控制仲裁授權(quán)信號的給出,。

  2.4仿真波形圖

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

  2.5 資源占用情況分析

  可編程邏輯器件使用Lattice公司的ispLSI2064E135LT100,,在ispLever中綜合本例程序,,結(jié)果如表2。

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。