利用PCI1510實現(xiàn)PCI板卡的熱插拔測試
對于普通的PCI板卡,無論是總線的硬件結(jié)構(gòu)還是操作系統(tǒng)(如Windows序列操作系統(tǒng))都不支持熱插拔。在批量生產(chǎn)PCI板卡時,必須在關(guān)機的情況下插拔PCI板卡,然后開機測試,因此測試工作十分費時費力。本文介紹利用TI公司的PCI1510制作一個PCI-to-PCI轉(zhuǎn)接卡,從硬件和軟件兩個方面實現(xiàn)PCI板卡的熱插拔。
1 系統(tǒng)總體結(jié)構(gòu)
利用PCI1510制作的PCI-to-PCI轉(zhuǎn)接卡的總體結(jié)構(gòu)框圖如圖1所示。在電氣原理上類似于一款PCI總線到CardBus總線的接口電路板,但在物理形式上,CardBus總線并沒有使用PCMCIA插座,而是使用PCI插座。由于PCI板卡的電源要求同PCMCIA板卡的電源要求相差很大,這款PCI-to-PCI板卡的電源處理方法同一般PCMCIA接口板的電源處理方法有較大的差別。
需要說明的是,一般PCMCIA接口板卡插入PCMCIA插槽后,系統(tǒng)能自動識別板卡是否插入,但本文所設(shè)計的PCI-to-PCI轉(zhuǎn)接板卡,由于PCI總線沒有板卡插入識別信號,所以在設(shè)計時增加了一個控制開關(guān)。當(dāng)控制開關(guān)斷開時,表示沒有待測PCI板卡插入;當(dāng)有待測PCI板卡插入時,操作者合上控制開關(guān),通知系統(tǒng)已有待測PCI板卡插入,此時控制邏輯電路接收此信號并按PCI1510所要求的方式給出板卡插入識別信號。
圖1中的PCI-to-PCI轉(zhuǎn)接卡主要由以下幾個部分組成:總線轉(zhuǎn)換電路,主要由PCI1510及其配置電路24C02組成;控制邏輯電路,由ATF16V8C實現(xiàn),其作用是根據(jù)操作者手動給出的開關(guān)信號向PCI1510給出相應(yīng)的板卡插入和拔出信號,同時給出電源開關(guān)電路的控制信號;電源開關(guān)電路,由兩片IRF7404組成,根據(jù)控制邏輯電路給出的電源控制信號,分別接通或斷開PCI插槽的+5V和3.3V電源(如果需要+12V電源,還要增加一片IRF7404)。
2 PCI板卡熱插拔測試的硬件實現(xiàn)
從硬件上講,對于圖1所示的PCI-to-PCI轉(zhuǎn)接卡,要實現(xiàn)外部PCI板卡的熱插拔,必須解決兩個問題:一是CardBus總線到PCI總線的轉(zhuǎn)換,二是要處理好轉(zhuǎn)接卡上PCI插座的電源問題。
2.1 從CardBus總線到PCI總線的轉(zhuǎn)換
根據(jù)PCMCIA的設(shè)計規(guī)范[1]可知,CardBus總線類似于PCI總線,但CardBus總線是一種點對點總線,與PCI總線有較大差別。
關(guān)于二者引腳的定義可以參考PCI設(shè)計規(guī)范[2]和PC卡設(shè)計規(guī)范[1]。下面著重敘述二者引腳定義的不同點并給出相應(yīng)的解決辦法:
(1)CardBus總線沒有IDSEL信號,而PCI總線和PCI橋芯片必須有IDSEL信號,用來支持對PCI橋芯片配置空間的讀和寫操作。由于CardBus總線是點對點操作,在它上面只有一個設(shè)備,因此可在本轉(zhuǎn)接卡PCI插座的IDSEL引腳通過一個電阻(阻值為4.7~33)接到3.3V電源;
(2)CardBus總線沒有SBO#和SDONE#信號,但一般的PCI板卡并不需要這兩個信號;
(3)CardBus總線不支持64位總線擴展,這對32位總線的PCI卡不產(chǎn)生影響。本文所述轉(zhuǎn)接卡也不支持64位總線的PCI板卡;
(4)CardBus總線沒有JTAG引腳,而通常的PCI板卡并沒有利用JTAG功能,因而這一點并不影響本文所述轉(zhuǎn)接卡的適應(yīng)性;
(5)CardBus總線有CSTSCHG引腳,這是CardBus總線的獨有功能,PCI總線并不需要,因而在設(shè)計時將它懸空;
(6)CardBus總線有CAUDIO引腳,這也是CardBus總線的獨有功能,PCI總線也不需要它,因而在設(shè)計時將它懸空;
(7)CardBus總線有CCLKRUN#引腳,PCI總線中沒有該引腳,本文在設(shè)計中按CardBus接口設(shè)計要求將其通過330?贅電阻接地;
(8)CardBus總線只有一個INT#引腳,但對于常見的PCI板卡而言,通常只使用(或不用)一個PCI中斷信號INTA#,因而這個限制對大多數(shù)PCI板卡不構(gòu)成限制。
2.2 外部板卡插入的檢測和控制邏輯電路的設(shè)計
PCI1510有四個控制信號:CCD1#、CCD2#、CVS1和CVS2,用來檢測是否有外部板卡的插入,并判別插入板卡的類型。PCI1510是一款PCMCIA接口的接口芯片,對于PCMCIA接口而言,可以在PCMCIA插座上插入三種類型的板卡[1]:16位數(shù)據(jù)/地址總線的存儲卡,32位數(shù)據(jù)/地址總線的CardBus卡和CardBay卡。由于將CardBus總線當(dāng)作PCI總線使用,因而當(dāng)本文所述轉(zhuǎn)接卡的PCI插座上有待測PCI板卡插入時,控制邏輯電路必須給PCI1510提供一個與CardBus板卡插入相似的板卡識別信號。
根據(jù)PCI1510的數(shù)據(jù)手冊[3]和PCMCIA卡設(shè)計規(guī)范[1],當(dāng)PCI1510檢測到CCD2#為低電平且CCD1#接CVS1、CVS2懸空時,PCI1510認(rèn)為外部總線接口已經(jīng)插入一個CardBus板卡;而當(dāng)CCD1#、CCD2#有一個為高電平時,PCI1510認(rèn)為外部總線上沒有板卡插入。因而本文按如下方式設(shè)計電路:CCD1#與CVS1短接,CVS2懸空,CCD2#通過上拉電阻接至可編程邏輯芯片ATF16V8C。PCI-to-PCI轉(zhuǎn)換卡邏輯電路和電源控制電路如圖2所示。
在圖2所示的電路中,U300和U301為電源開關(guān)芯片IRF7404,實際上它們是P溝道場效應(yīng)管,其輸入電源引腳分別接轉(zhuǎn)接卡上的+5V和+3.3V電源,輸出引腳則分別接至轉(zhuǎn)接卡PCI插座上的+5V和+3.3V電源引腳。U300和U301的控制信號由可編程邏輯芯片U302(ATF16V8C)的POWER_EN#提供。
U302的輸入信號為:CARD_IN、PCI1510提供的電源控制信號VCCD0和VCCD1,輸出信號為CCD2#和POWER_EN#。輸入輸出關(guān)系式為:
CCD2#=CARD_IN;
POWER_EN#= !VCCD0+VCCD1;
在轉(zhuǎn)接卡的PCI插座上沒有插入PCI板卡時,CON300斷開,CARD_IN為高電平,此時,CCD2#也為高電平;PCI1510給出的VCCD0、VCCD1均為高電平,POWER_EN#也為高電平,U300和U301沒有電源輸出,轉(zhuǎn)接卡的PCI插座上也沒有電源,同時插座上的信號線均處于高阻狀態(tài);在待測PCI板卡插入后,當(dāng)操作者合上CON300時,CARD_IN為低電平,CCD2#也變?yōu)榈碗娖?,PCI1510檢測到有板卡插入,給出VCCD0為高電平,VCCD1為低電平,在邏輯電路中,POWER_EN#為低電平,電源電路給PCI插座提供+5V和+3.3V(也可以增加電路提供+12V電源)電源,同時PCI1510激活板卡插座上的信號線,此時,待測PCI板卡開始正常工作。
當(dāng)測試完畢時,操作者首先斷開CON300。此時根據(jù)前面的分析可知,轉(zhuǎn)接卡的PCI插座上的電源被切斷,信號線處于高阻狀態(tài),這時,操作者可以在不關(guān)機的情況下拔下PCI板卡。
3 PCI板卡熱插拔測試的軟件實現(xiàn)
圖1所示的 PCI-to-PCI轉(zhuǎn)接卡在電氣原理上類似于一款PCI-to-PCMCIA轉(zhuǎn)接卡,常見的操作系統(tǒng)(如Windows XP, Windows 2000, Windows 98等)都支持PCMCIA板卡的熱插拔,而且這些常見的操作系統(tǒng)都帶有PCI1510的驅(qū)動程序。當(dāng)本文所述PCI-to-PCI轉(zhuǎn)接卡插入桌面計算機后,操作系統(tǒng)能自動裝好轉(zhuǎn)接卡的驅(qū)動程序。另外,待測PCI板卡插入轉(zhuǎn)接卡的PCI插槽后,操作者合上控制開關(guān),操作系統(tǒng)將檢測到外部板卡的插入,并將待測PCI板卡識別成CardBus板卡,這樣就可以像測試CardBus板卡一樣測試PCI板卡,從而實現(xiàn)了PCI板卡的熱插拔測試。
要使本文所述轉(zhuǎn)接卡正常工作,還必須正確配置圖1中E2PROM芯片,本文所述轉(zhuǎn)接卡的配置如表1所示。
盡管本文所述PCI-to-PCI轉(zhuǎn)接卡對待測PCI板卡存在著一些限制,即要求待測PCI板卡是32位數(shù)據(jù)/地址總線,只使用(或不用)一個PCI中斷(即INTA#),并且不使用SDO#和SDONE#信號線,不使用PCI總線上的JTAG接口, 但這對于一些常見的PCI板卡而言并不是一個問題,本文所述轉(zhuǎn)接卡仍然具有廣泛的適應(yīng)性和較高的使用價值。
參考文獻(xiàn)
[1] PC Card Standard release 8.0,www.PCMCIA.org.2001,4.
[2] 劉顯慶,劉仁普.微機總線規(guī)范.北京:機械工業(yè)出版社,1995.
[3] PCI1510 Data Manual.www.ti.com.2004,12.
評論