關(guān) 閉

新聞中心

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

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

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

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

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

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

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

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

本文引用地址:http://m.butianyuan.cn/article/21246.htm


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

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

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

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

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

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

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

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

1.3 pci總線仲裁的算法

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

1.4 總線???

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

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

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

該仲裁器的接口信號(hào)如表1所示。

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

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

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

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

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




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

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

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


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


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

2.3 仲裁狀態(tài)機(jī)

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


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

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

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

2.4仿真波形圖

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

2.5 資源占用情況分析

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

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

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


關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉