• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統中PCI總線仲裁器的設計方法

    嵌入式系統中PCI總線仲裁器的設計方法

    作者: 時間:2011-09-23 來源:網絡 收藏
      (Embedded system),是一種“完全嵌入受控器件內部,為特定應用而設計的專用計算機系統”,根據英國電器工程師協會( U.K. InstitutiON of Electrical Engineer)的定義,為控制、監視或輔助設備、機器或用于工廠運作的設備。與個人計算機這樣的通用計算機系統不同,通常執行的是帶有特定要求的預先定義的任務。由于嵌入式系統只針對一項特殊的任務,設計人員能夠對它進行優化,減小尺寸降低成本。由于嵌入式系統通常進行大量生產。所以單個的成本節約,能夠隨著產量進行成百上千的放大。

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

      1 PCI總線仲裁簡介

      1.1 PCI總線的仲裁原理

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

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

      1.2 PCI總線仲裁規則約定

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

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

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

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

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

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

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

      1.3 PCI總線仲裁的算法

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

      1.4 總線停靠

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

      2 雙主設備PCI總線仲裁器的實現

      下面描述了一個具有兩個設備的總線仲裁器的硬件實現,其一為TriMedia嵌入式DSPCPU PNX1300,其二為Intel i82559網絡控制器,系統結構如圖2所示。

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

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

      2.1 總線狀態狀態機

      總線狀態狀態機用于記錄總線事務的狀態,定義如下:

      type bus_state is(IDLE,BUSY,LAST_DATA,FINISH)

      四種狀態分別表示總線空閑、忙、最后一個數據傳輸期以及傳輸完成。狀態圖如圖3。

      下面是以VHDL代碼形式實現的該狀態機的狀態轉換關系。

      2.2總線主設備查詢狀態機

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

      狀態轉換如圖4所示,狀態機描述的VHDL代碼略。

      主設備查詢狀態機的輸出信號search_master:

      該狀態機的驅動條件是由總線狀態狀態機的輸出結果、仲裁狀態機的狀態以及計數器產生的超時信號組成。該狀態機的輸出search_master作為仲裁狀態機狀態轉換使能信號,該信號有效時,仲裁狀態機才進行當前狀態的改變。

      2.3 仲裁狀態機

      仲裁狀態機表示總線仲裁器的狀態,定義如下:

      狀態轉變過程如圖5所示,狀態機描述的VHDL代碼略。

      仲裁器根據仲裁狀態機當前狀態控制仲裁授權信號的給出。

      2.4仿真波形圖

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

      2.5 資源占用情況分析

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

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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 柳江县| 儋州市| 大新县| 阳春市| 海兴县| 宾川县| 正安县| 隆德县| 东乌| 虹口区| 中方县| 沁源县| 买车| 财经| 特克斯县| 临湘市| 香港 | 清原| 许昌市| 南澳县| 太仆寺旗| 黔西| 新密市| 乌兰县| 万宁市| 南安市| 美姑县| 平陆县| 兴义市| 崇信县| 连云港市| 翼城县| 大渡口区| 礼泉县| 津南区| 津市市| 山东| 文登市| 长垣县| 云浮市| 辽宁省|