PCI總線接口芯片及其應(yīng)用
引言
PCI(PeripheralCompornentInterconnect,即外圍部件互連)總線是一種先進(jìn)的高性能32/64位地址數(shù)據(jù)復(fù)用局部總線,該總線是以INTEL為首的多家集團(tuán)設(shè)計(jì)的,PCI總線可以同時(shí)支持多組外圍設(shè)備,且處理器和時(shí)鐘頻率無關(guān),可以提供高達(dá)132MB/s的數(shù)據(jù)傳送速率,PCI總線具有嚴(yán)格的規(guī)范,只要符合PCI規(guī)范的擴(kuò)展卡,那么,插入任何PCI系統(tǒng)就能可靠地工作,是當(dāng)今PC領(lǐng)域中流行的總線。
PCI總線協(xié)議非常復(fù)雜,目前實(shí)現(xiàn)PCI接口的有效方案分為兩種:即使用可編程邏輯器件和使用專用總線接口的器件,可編程邏輯器件實(shí)現(xiàn)PCI接口比較靈活,可以利用的器件比較多,現(xiàn)在有許多生產(chǎn)可編程邏輯器件的廠商(如Xilinx的Logicore和Alerra的AMPP)都提供經(jīng)過嚴(yán)格測試的PCI接口功能模塊,用戶只要進(jìn)行組合設(shè)計(jì)即可,但這種方法難度較大,設(shè)計(jì)周期較長。而采用專用接口器件實(shí)現(xiàn)完整的PCI主控模塊和目標(biāo)模塊的功能,則可將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對(duì)簡單的用戶接口,用戶只要設(shè)計(jì)轉(zhuǎn)換后的總線接口即可。但這種方法難度較大,設(shè)計(jì)周期較長,而采用專用接口器件實(shí)現(xiàn)完整的PCI主控模塊和目標(biāo)模塊的功能,則可將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對(duì)簡單的用戶接口,用戶只要設(shè)計(jì)轉(zhuǎn)換后的總線接口即可。雖然這種方式不夠靈活,但由于其對(duì)PCI協(xié)議的良好支持,以及提供給設(shè)計(jì)者的良好接口,都大大減少了設(shè)計(jì)開發(fā)的難度和周期,現(xiàn)有的PCI接口芯片主要有AMC公司的AMCCS59xx系列和PLX公司的PCI9805x系列。PLX公司的PCI9052就是一款較常用的總線接口芯片。
PCI9052芯片介紹
PCI9052是PLX技術(shù)公司繼PCI9050之后推出的低成本、低功耗、高性能總線接口芯片,通過該芯片可以使多種局部總線快速轉(zhuǎn)換到PCI總線上。
◇主要特點(diǎn)
(1)兼容PCIV2.1協(xié)議特性。PCI9052芯片與PCI協(xié)議V2.1版兼容,可支持低成本的從模式適配設(shè)備,也支持從ISA適配卡向PCI適配卡的轉(zhuǎn)換。
(2)采用直接從(目標(biāo))模式傳送數(shù)據(jù)。支持突發(fā)存儲(chǔ)器映射和I/O映射方式,可從PCI總線到局部總線上存取數(shù)據(jù)。讀寫FIFO(先入先出)寄存器使得局部總線和PCI總線具有高性能的突發(fā)方式,PCI總線總是工作在突發(fā)方式,但是局部總線可以設(shè)置成突發(fā)方式或者連續(xù)單周期方式。
(3)帶有中斷發(fā)生器,可以從兩個(gè)局部總線中斷輸入中生成一個(gè)PCI中斷。
(4)PCI9052局部總線接口運(yùn)行于TTL時(shí)鐘,并可生成必要的內(nèi)部時(shí)鐘,局部TTL時(shí)鐘與PCI時(shí)鐘異步工作,并允許局部總線獨(dú)立于PCI時(shí)鐘工作,其緩沖PCI總線時(shí)鐘(BCLKO)可與局部總線時(shí)鐘(LCLK)相連。
(5)PCI9052局部總線配置可編程。支持復(fù)用或非復(fù)用的8/16/32bit局部總線,芯片有4字節(jié)使能(LBE[3:0]#)、26根地址線(LA[27:2])和32/16/8bit數(shù)據(jù)線(LAD[31:0])。
(6)支持先讀模式、即預(yù)取數(shù)據(jù)可從PCI9052內(nèi)部的FIFO寄存器讀取,用以代替局部總線,但地址必須是前一條地址的后續(xù)地址,且應(yīng)為32位寬度(下一地址=當(dāng)前地址+4)。
(7)所有控制、地址和數(shù)據(jù)信號(hào)都可由PCI9052直接生成,用于驅(qū)動(dòng)PCI和局部總線,而無需額外驅(qū)動(dòng)電路。
(8)帶有串行EEPROM接口,可用于加載配置信息,這對(duì)于裝載一個(gè)特定的適配設(shè)備信息(網(wǎng)絡(luò)節(jié)點(diǎn)號(hào)、廠商類型碼和片選等)是很有用的。特別是將PCI9052轉(zhuǎn)換為ISA接口模式時(shí),串行EEPROM是必需的。
(9)提供了四個(gè)局部片選信號(hào),其基地址和每一個(gè)片選的范圍可由串行EEPROM配置,也可由主控制器在線編程。
(10)具有五個(gè)局部地址空間,基地址和每一個(gè)局部地址空間的范圍可由串行EEPROM配置或由主控制器在線編程。
(11)支持BigEndian和LittleEndian字節(jié)間的轉(zhuǎn)換。當(dāng)局部總線是16位寬度或8位寬度時(shí),PCI9052同時(shí)支持BigEndian字節(jié)模式轉(zhuǎn)換為字或字節(jié)寬度。
(12)為了匹配以前的接口讀/寫(RD#/WR#)信號(hào),可以從時(shí)鐘周期的開始延時(shí)(例如ISA總線接口)。
(13)附加的LRDYi#(localreadyinput)握手信號(hào)可用于產(chǎn)生各種等待狀態(tài),PCI9052內(nèi)有等待狀態(tài)發(fā)生器(讀/寫地址到數(shù)據(jù)、數(shù)據(jù)到數(shù)據(jù)和數(shù)據(jù)到地址之間)。
(14)局部總線預(yù)鎖存計(jì)數(shù)器可以編程為(無預(yù)鎖存)4、8、16或連續(xù)值(預(yù)鎖存計(jì)數(shù)器關(guān)閉)模式,如果使用了連續(xù)地址(必須是32位),則預(yù)鎖存數(shù)據(jù)可以作為緩沖數(shù)據(jù)來使用。
(15)PCI9052兼容PCIV2.1協(xié)議延時(shí)讀的4種模式,即PCI讀和寫刷新模式、PCI讀無刷新模式、PCI讀無寫模式和PCI寫模式。
(16)帶有一個(gè)可編程PCI讀寫重試延遲計(jì)時(shí)器,可以為PCI總線產(chǎn)生一個(gè)重試信號(hào)。
(17)帶有ISA邏輯接口模式,支持PCI總線到ISA總線的單周期存儲(chǔ)器(8位或16位)讀寫和I/O訪問。
(18)支持PCI目標(biāo)鎖定機(jī)制,PCI主控設(shè)備可以通過鎖定信號(hào)獨(dú)占對(duì)PCI9052的訪問。
(19)PCI總線傳輸速率達(dá)132MB/s。
◇結(jié)構(gòu)組成
圖1所示是由PCI總線接口芯片、局部總線接口和串行總線接口組成的接口電路。
◇器件功能
PCI9052作為總線目標(biāo)接口芯片,可為非PCI設(shè)備與PCI總線提供數(shù)據(jù)通道,PCI9052的主要功能如下:
(1)初始化
上電時(shí),PCI9052的內(nèi)部寄存器將由PCI總線的RST信號(hào)復(fù)位成默認(rèn)值,并在局部總線上輸出LRESET信號(hào),以檢驗(yàn)串行EEPROM,如果安裝了串行EEPROM且第一個(gè)16位字不全為1,則PCI9052用串行EEPROM中的值來配置片內(nèi)寄存器,否則使用缺省值。
(2)復(fù)位
當(dāng)PCI總線輸入復(fù)位信號(hào)時(shí),PCI總線全部輸出呈高阻態(tài),此時(shí)PCI9052整體復(fù)位并輸出LRESET信號(hào),PCI總線上的主控設(shè)備也可以通過軟件設(shè)置雜項(xiàng)控制寄存器(CNTRL:50h)的第30位為1,來使PCI9052復(fù)位并輸出LRESET信號(hào),此時(shí)PCI和局部配置寄存器的值不變,PCI9052將一直保持復(fù)位狀態(tài),而且此時(shí)主設(shè)備只能訪問配置寄存器,而不能訪問局部總線。當(dāng)CNTRL[30]=0時(shí),系統(tǒng)將清除PCI9052的復(fù)位狀態(tài)。
(3)串行EEPROM
復(fù)位后,PCI9052將檢查串行EEPROM是否存在,一個(gè)有效的低電平START位表示串行EEPROM存在,START位為1表示串行EEPROM不存在,串行EEPROM的第一個(gè)字如不全為“1”,PCI9052便可用它進(jìn)行配置,而如果串行EEPROM不存在或?yàn)榭?,PCI9052則采用缺省值配置,PCI9052總線上的主機(jī)可以對(duì)串行EEPROM進(jìn)行讀寫,雜項(xiàng)控制寄存器(CNTRL:50h)的[29:24]位控制著PCI9052對(duì)串行EEPROM的位進(jìn)行讀寫,將雜項(xiàng)控制寄存器位CNTRL[29]置1可以用串行EEPROM重新配置PCI9052。
(4)內(nèi)部寄存器訪問
PCI9052的內(nèi)部寄存器為總線接口的設(shè)計(jì)與實(shí)現(xiàn)提供了最大的靈活性,這些寄存器可以分為兩類:PCI配置寄存器和局部配置寄存器,兩類都可以通過PCI總線或串行EEPROM來配置。
(5)直接數(shù)據(jù)傳輸模式
PCI總線上的主設(shè)備能直接訪問局部總線上的從設(shè)備。PCI9052內(nèi)部的配置寄存器可譯碼和映射這些要訪問的局部地址空間,讀寫先入先出寄存器可支持PCI和局部總線之間的高性能突發(fā)傳輸方式。
(6)PCI中斷(INTA)
通過局部中斷輸入(LINTil和LINTi2)或軟件中斷(CNTRL寄存器30位)可以產(chǎn)生一個(gè)PCI中斷(INTA)通過PCI9052中斷控制/狀態(tài)寄存器可以禁止或使能某種中斷,PCI9052中斷控制/狀態(tài)寄存器同時(shí)可提供各個(gè)中斷的狀態(tài)指示。
(7)局部中斷(LINTi[2:1])
PCI9052提供有2個(gè)局部中斷輸入(LINTi[2:1],通過寄存器INT[2:1]),通過寄存器INTCSR;4Ch可將局部中斷設(shè)置成沿觸發(fā)或電平觸發(fā)方式,局部中斷能產(chǎn)生PCI中斷。
(8)系統(tǒng)出錯(cuò)
如果PCI命令寄存器中的使能奇偶校驗(yàn)位,檢測到一個(gè)地址奇偶校驗(yàn)出錯(cuò)時(shí),PCI9052將產(chǎn)生一個(gè)SERR信號(hào)。
PCI9052的應(yīng)用
PCI9052接口芯片作為通用PCI接口,其應(yīng)用場合和范圍是非常廣泛的。隨著PC機(jī)的發(fā)展,PCI擴(kuò)展槽已成為PC機(jī)主板的基本配置,而帶ISA擴(kuò)展槽的PC機(jī)已經(jīng)越來越少,ISA擴(kuò)展槽在PC機(jī)中徹底地消失的日子即將到來,在作者所在公司設(shè)計(jì)生產(chǎn)的火災(zāi)報(bào)警控制系統(tǒng)中原有的ACTNET網(wǎng)絡(luò)接口卡是基于ISA總線的插件,現(xiàn)在則要利用PCI9052芯片的ISA模式來對(duì)原來的板卡進(jìn)行升級(jí)改造,以使原來的板卡在做少量改動(dòng)的情況下可以插在PCI總線插槽中正常工作。
這種PCI插卡的借口示意圖如圖2所示,它主要由一片PCI9052、ARCNET網(wǎng)絡(luò)控制器以及一些外圍器件構(gòu)成。
PCI9052的內(nèi)部結(jié)構(gòu)中包含了一個(gè)獨(dú)立的ISA邏輯接口,用于為ISA總線到PCI總線提供一種簡單的轉(zhuǎn)換。它支持8位和16位數(shù)據(jù)寬度的ISA從設(shè)備,也可以是內(nèi)存映射或I/O映射。同時(shí)可直接從先讀模式來提高讀取數(shù)據(jù)的吞吐量,一旦ISA接口模式被使能,PCI9052將只執(zhí)行單個(gè)周期操作,應(yīng)當(dāng)特別注意的是,ISA接口模式下,串行EEPROM是必需的。
具體設(shè)計(jì)時(shí),可以使用兩種方法配置PCI9052以用于ISA接口模式:一是燒寫串行EEPROM方法,即使用燒寫器將數(shù)據(jù)寫入串行EEPROM;二是熱配置方法,也就是從PCI總線通過PCI9052芯片來燒寫串行EEPROM。
配置注意事項(xiàng)
當(dāng)為ISA接口模式進(jìn)行配置時(shí),必須注意以下幾點(diǎn):
(1)存取ISA接口引腳時(shí),要參照PCI9052引腳的C/ISA模式引腳圖來連線。
(2)空間0分配給ISA接口的內(nèi)存存取。
(3)空間1分配給ISA接口的I/O存取。
(4)無論在空間0還是在空間1,ISA訪問都是有效的。
(5)標(biāo)準(zhǔn)從周期能夠用于訪問空間2、空間3和串行EEPROM。
在設(shè)計(jì)電路板時(shí),要嚴(yán)格遵循PCI規(guī)范,電源和地線要盡可能寬且電源濾波要良好,在芯片的每個(gè)電源引腳,最好接0.01-0.1μF的濾波電容,一般來說,PCI編碼推薦做4層板,其實(shí)只要布線合理,做兩層板也是可以的,在連線時(shí),要注意PCI規(guī)范中提到的反射波信號(hào),由于驅(qū)動(dòng)信號(hào)的一半要靠反射波來提升,所以對(duì)信號(hào)線的長度要求為:64位卡的32位信號(hào)具備的最大連線長度是1500mil,64位擴(kuò)展信號(hào)的附加信號(hào)的連線長度為2000mil,PCI的CLK長度2500mil±100mil,這些條件一定要嚴(yán)格遵守,尤其是CLK信號(hào)線長度的要保證在要求的范圍內(nèi),否則,PCI插件工作將不正常,并會(huì)出一些怪現(xiàn)象,另外,PCI卡上最好在從槽上引的電源上多加幾個(gè)電容,所有電源都必須退藕。用作上拉或下拉的電阻一般取值2.2KΩ即可。
還有一個(gè)要注意的是,PCI信號(hào)中prsnt1和prsnt2必須至少有一個(gè)接地,否則,系統(tǒng)肯定找不到卡,主板就是靠這兩個(gè)信號(hào)來判斷這個(gè)插槽上是否有卡,而其接法同PCI卡使用的功率有關(guān),具體的含義如下(Open表示懸空,Ground表示接地):
prsnt1prsnt2含義
OpenOpennocard
GroundOpen25w
ObenGround15w
GroundGround7.5w
最后,由于PCI9052沒有提供符合工業(yè)標(biāo)準(zhǔn)IEEE1149.1邊界掃描接口,PCI規(guī)范中涉及到的5個(gè)邊界掃描信號(hào)中的TRST、TCK、TMS要懸空、TDI和TDO在板上要短接,以免掃描鏈被打斷。
結(jié)束語
實(shí)踐證明,PCI9052是一款優(yōu)秀的PCI接口芯片,該芯片對(duì)基于ISA總線的接口向PCI的轉(zhuǎn)換提供了極大的方便,設(shè)計(jì)者用它可避免直接面對(duì)復(fù)雜的PCI總線協(xié)議。因?yàn)?,用PCI9052開發(fā)的產(chǎn)品,可減少外圍器件,降低了開發(fā)難度,同時(shí)也縮短了開發(fā)周期,延長了產(chǎn)品的生命期。