摘 要:PCI總線由主橋管理整個(gè)總線,目前基于對現(xiàn)有的PCI總線的繼承和發(fā)展衍生出PCI-X總線和PCI-E總線規(guī)范,其中PCI總線控制器已應(yīng)用于多種嵌入式系統(tǒng)。采用PCI9056的PCI總線設(shè)計(jì),可以實(shí)現(xiàn)基本的PCI總線設(shè)計(jì)要求,其寄存器初始化可以通過局部總線一側(cè)的CPU進(jìn)行,也可由存入E2PROM的內(nèi)部參數(shù)自動(dòng)裝入。
關(guān)鍵詞:PCI總線;PCI-X總線;PCI-E總線;主橋;適配器;寄存器;主設(shè)備
中圖分類號(hào):TP336 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2008)10-085-03
Application Design and Study of PCI Bus
JIA Zhen,LIN Qing
(Aeronautical Computing Technique Research Institute,Xi′an,710068,China)
Abstract:PCI bus is managed by host/PCI bridge,PCI-X and PCI-E are derived from it.PCI system has popular application in many embedded systems.Basic functions can be met with the PCI9056.The registers initialization can be done by CPU,or it can be loaded from E2PROM automatically.
Keywords:PCI bus;PCI-X bus;PCI-E bus;host bridge;adapter;register;master device
1 引 言
最早提出的PCI總線起源于微型計(jì)算機(jī),現(xiàn)在已經(jīng)成為計(jì)算機(jī)總線標(biāo)準(zhǔn),其工作頻率為33 MHz,傳輸帶寬達(dá)到133 Mb/s(33 MHz×32 b/8),比ISA總線有了極大的改善,基本上滿足當(dāng)時(shí)處理器的發(fā)展需要。隨著對更高性能的要求,1993年提出了64 b的PCI總線,后來又提出把PCI總線的頻率提升到66 MHz。目前廣泛采用的是32 b,33 MHz的PCI總線。PCI總線系統(tǒng)框圖見圖1。
圖1 PCI總線系統(tǒng)框圖
PCI局部總線設(shè)計(jì)的器件是針對PCI而不是針對特定的CPU處理器,獨(dú)立于處理器的升級(jí)。實(shí)現(xiàn)電流盡可能小、功耗低的系統(tǒng)。軟件透明,在和PCI設(shè)備之間通訊時(shí),軟件驅(qū)動(dòng)之間使用相同的命令集和狀態(tài)定義。介紹在嵌入式系統(tǒng)中設(shè)計(jì)實(shí)現(xiàn)PCI總線控制功能。
2 總線信號(hào)
PCI總線(Peripheral Component Interconnect) ,即外設(shè)部件互聯(lián)總線。圖2是PCI總線信號(hào)匯總:
圖2 PCI總線信號(hào)匯總
系統(tǒng)信號(hào)包括復(fù)位信號(hào)RST#和時(shí)鐘信號(hào)CLK。仲裁信號(hào)有總線申請REQ#和總線授權(quán)信號(hào)GNT#。接口控制信號(hào)包括主設(shè)備啟動(dòng)PCI的FRAME#信號(hào),主設(shè)備數(shù)據(jù)有效信號(hào)IRDY#和目標(biāo)完成數(shù)據(jù)傳輸信號(hào)TRDY# 等。PCI沒有一般數(shù)據(jù)周期的讀寫信號(hào),而是采用命令編碼形式定義PCI周期的讀寫屬性。每個(gè)PCI周期由主設(shè)備啟動(dòng),在第一個(gè)時(shí)鐘周期,AD[31..0]信號(hào)傳輸?shù)刂沸畔?,C/BE#[3..0]形成控制命令,定義PCI周期。第二個(gè)時(shí)鐘后,AD[31..0]進(jìn)行數(shù)據(jù)傳輸,C/BE#[3..0]標(biāo)識(shí)字節(jié)有效信息。詳細(xì)情況可參閱PCI規(guī)范。
3 應(yīng)用設(shè)計(jì)
目前有眾多的能支持PCI總線的控制芯片。在嵌入式系統(tǒng)中多采用美國PLX公司的PCI9056,該芯片使用簡單、功能完備。采用PCI9056實(shí)現(xiàn)總線控制功能的電路已應(yīng)用于某型號(hào)戰(zhàn)術(shù)態(tài)勢處理機(jī)。在設(shè)計(jì)中通過PCI總線實(shí)現(xiàn)主機(jī)與外部I/O設(shè)備的高速數(shù)據(jù)傳輸,解決了信號(hào)的實(shí)時(shí)傳輸與處理的問題。其中,主機(jī)通過PCI總線與I/O控制單元進(jìn)行數(shù)據(jù)傳輸,雙口RAM一端作為DSP目標(biāo)存儲(chǔ)器,一端作為PCI總線接口的本地存儲(chǔ)器;DSP對數(shù)據(jù)進(jìn)行處理后通過雙口RAM和PCI總線接口完成主機(jī)與DSP的數(shù)據(jù)握手;CPLD完成PCI總線對局部總線的訪問及控制。圖3為處理機(jī)系統(tǒng)硬件設(shè)計(jì)框圖。該態(tài)勢處理機(jī)經(jīng)過長期的使用驗(yàn)證,滿足系統(tǒng)要求,工作穩(wěn)定可靠。
圖3 系統(tǒng)硬件設(shè)計(jì)
3.1 系統(tǒng)時(shí)鐘
PCI總線時(shí)鐘信號(hào)對各設(shè)備采樣時(shí)刻的偏差要求很高,即時(shí)鐘的偏斜(Skew)應(yīng)盡可能小,最大的時(shí)鐘偏斜小于等于2 ns。最好整個(gè)PCI系統(tǒng)各設(shè)備采用同一時(shí)鐘。但同一時(shí)鐘的驅(qū)動(dòng)能力有限,不可能同步驅(qū)動(dòng)所有PCI設(shè)備。IDT公司的時(shí)鐘驅(qū)動(dòng)器IDT74FCT3807可以將一個(gè)時(shí)鐘源轉(zhuǎn)換為10個(gè)等同的時(shí)鐘,各時(shí)鐘之間的偏斜小于等于350 ps。圖4是PCI時(shí)鐘解決方案。
圖4 時(shí)鐘信號(hào)設(shè)計(jì)
在PCI底板上,要求PCI各設(shè)備時(shí)鐘信號(hào)采用等長線進(jìn)行PCB設(shè)計(jì)。
3.2 中央資源和PCI適配器
在PCI系統(tǒng)總線中,必須存在一個(gè)PCI主橋(Host)管理整個(gè)總線。主橋提供系統(tǒng)信號(hào)和進(jìn)行PCI總線仲裁。PCI9056可以工作在HOST方式下,也可以作為普通PCI適配器,圖5是2種工作模式原理圖。
圖5 兩種工作模式原理圖
當(dāng)HOSTEN# 管腳接地時(shí),PCI9056工作在HOST模式,即成為系統(tǒng)的中央資源。在HOST模式時(shí),PCI9056的局部復(fù)位LRESET#是輸入,接收來自局部CPU等的復(fù)位,然后在RST# 產(chǎn)生PCI總線復(fù)位,復(fù)位整個(gè)PCI總線上的設(shè)備。工作在適配器模式下的PCI9056剛好相反,RST# 接收來自PCI總線的復(fù)位,然后通過LRESET# 復(fù)位PCI設(shè)備內(nèi)的其他器件。通常,把主橋的PCI9056設(shè)置為總線仲裁器。注意二者仲裁信號(hào)REQ# 和GNT[TX-]# 互換連接。
PCI9056作為適配器情況下,仲裁信號(hào)只使用 REQ# 和GNT# 。作為總線仲裁器時(shí),還有其他的請求應(yīng)答信號(hào)對可以使用。
3.3 加電初始化
PCI總線的地址可以根據(jù)系統(tǒng)動(dòng)態(tài)調(diào)整。各個(gè)模塊在PCI空間所占的地址和長度取決于內(nèi)部配置寄存器。系統(tǒng)程序一般在加電時(shí)就檢測整個(gè)系統(tǒng)所需的空間,分配各PCI設(shè)備的基址和所需存儲(chǔ)器空間,I/O空間。這個(gè)初始化過程可以有3個(gè)辦法完成。圖6是支持系統(tǒng)軟件初始化的對應(yīng)硬件電路。其本質(zhì)是PCI9056內(nèi)部寄存器的設(shè)置。
圖6 內(nèi)部寄存器初始化
如果PCI9056設(shè)計(jì)為系統(tǒng)的北橋,亦即中央資源(Host),在他的局部總線一側(cè)都存在CPU,寄存器的初始化可以由CPU進(jìn)行,也可以由存入E2PROM的內(nèi)部參數(shù)自動(dòng)裝入。如果PCI9056作為一般PCI設(shè)備的適配器,一般沒有CPU,可以由初始化過的主橋通過PCI配置周期來設(shè)置內(nèi)部寄存器,也可以由E2PROM在加電時(shí)自動(dòng)載入。圖6中的E2PROM采用FM95C56或FM95CS56皆可。由局部CPU可設(shè)置內(nèi)部所有寄存器,控制邏輯應(yīng)產(chǎn)生CCS#片選。若不采用E2PROM加電自動(dòng)載入初始化參數(shù)時(shí),應(yīng)該在圖5中的DI/DO管腳下拉1 kΩ的電阻。除由局部CPU初始化和E2PROM加電自動(dòng)初始化外,更多的PCI設(shè)備由主橋通過PCI總線來動(dòng)態(tài)初始化。系統(tǒng)軟件要保證各個(gè)設(shè)備的PCI空間不重疊。
4 PCI-X與PCI-E總線技術(shù)
PCI局部總線規(guī)范在不斷更新,向更快更強(qiáng)更小邁進(jìn)。在技術(shù)上有進(jìn)一步的提高,形成了PCI-X和PCI-E規(guī)范。
PCI-X v1.0版本是1999年正式發(fā)表的,是對已有的PCI總線的繼承和發(fā)展,他將PCI的性能推向頂峰。PCI-X總線操作采用分離事務(wù)處理方式,消除了等待狀態(tài),大幅度地提高了總線的利用率。PCI-X總線帶寬最高達(dá)1.066 Gb/s(133 MHz/64 b)。PCI-X是共事總線結(jié)構(gòu)式向交換式總線結(jié)構(gòu)過渡的產(chǎn)物。在高性能服務(wù)產(chǎn)品中為提高I/O吞吐率已采用PCI-X總線結(jié)構(gòu)。
PCI和PCI-X都是基于32位以及64位的并行總線,而PCI-E則使用高速串行總線。PCI Express(PCI-E)的引入是用來克服以前PCI總線的限制。PCI總線工作在33 MHz和32位環(huán)境下,理論帶寬峰值是每秒132 Mb。他使用共享總線拓?fù)浣Y(jié)構(gòu)-總線帶寬在多個(gè)設(shè)備間共享[CD2]從而實(shí)現(xiàn)總線上不同設(shè)備間的通信。隨著設(shè)備的發(fā)展,新的占用大量帶寬的設(shè)備開始吞噬同一共享總線上的其他設(shè)備的帶寬。例如,1 Gb網(wǎng)卡可獨(dú)占95%的PCI總線帶寬。相對于PCI,PCI-E總線最引人注目的進(jìn)步是采用了點(diǎn)到點(diǎn)的傳輸技術(shù),交換器替代了原先的主控器,當(dāng)一個(gè)設(shè)備與另一個(gè)設(shè)備進(jìn)行數(shù)據(jù)交換的時(shí)候,他們的通信是相對獨(dú)立的,多個(gè)通信連接之間并不影響,允許并發(fā)形式傳輸。圖7中所示的每一個(gè)PCI-E插槽擁有專用的帶寬,而不同于PCI的共享帶寬。
PCI-E總線提供給每一個(gè)設(shè)備他自己專用的數(shù)據(jù)流水線。每個(gè)信道具有單方向250 Mb/s的速度。多個(gè)信道可以組合在一起形成x1,x2,x4,x8,x12,x16和x32的信道帶寬從而提高插槽的帶寬。圖8所示的是現(xiàn)今計(jì)算機(jī)上標(biāo)準(zhǔn)PCI-E插槽,其大小是x1,x4,x8和x16的信道帶寬。3種總線性能對比見表1。
5 結(jié) 語
本文詳細(xì)介紹基于PCI9056的PCI總線的通用設(shè)計(jì)
圖7 PCI-E總線點(diǎn)到點(diǎn)的拓?fù)浣Y(jié)構(gòu)
圖8 標(biāo)準(zhǔn)PCI-E插槽
表1 總線性能對比表
方法及應(yīng)用,并對PCI-X和PCI-E總線技術(shù)進(jìn)行了詳細(xì)的分析與對比。通過實(shí)際應(yīng)用在系統(tǒng)性能測試中比原采用ISA總線設(shè)計(jì)的系統(tǒng)性能有明顯提高,特別是在大數(shù)據(jù)量傳輸測試中,為硬件的發(fā)展提供一種高性能的總線平臺(tái),充分發(fā)揮各硬件子系統(tǒng)的性能,并為這些子系統(tǒng)今后的性能提升開辟更廣闊的空間。
參 考 文 獻(xiàn)
[1]http://www.pcisig.com.PCI Local Bus Specification.Revision 2.2 December 18,1998.
[2]PLX Technology,Inc.PCI 9056 Data Book.Version 1.0,2003.
[3]Fairchild Semiconductor International:FM93C56Serial CMOS EEPROM,2000.
[4]李貴山.PCI局部總線及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。