摘 要:本文介紹了基于CompactPCI總線(xiàn)數(shù)字隔離I/O(Input/Output)模塊的實(shí)現(xiàn)。通過(guò)硬件和驅(qū)動(dòng)的設(shè)計(jì),該模塊可以實(shí)現(xiàn)數(shù)字信號(hào)傳輸和隔離的作用,在內(nèi)場(chǎng)測(cè)試系統(tǒng)中起到了實(shí)際的作用。
關(guān)鍵詞:輸入/輸出 PLX9030 隔離 驅(qū)動(dòng)
1 引言
1PCI總線(xiàn)一個(gè)重要的特點(diǎn)是其具有極高的數(shù)據(jù)傳輸速度,是新一代微機(jī)的標(biāo)準(zhǔn)總線(xiàn),但是PCI的金手指插卡方式不能滿(mǎn)足工業(yè)的高機(jī)械強(qiáng)度要求。CompactPCI規(guī)范是由PICMG制定的,在電氣、邏輯和軟件功能方面與PCI標(biāo)準(zhǔn)完全兼容(PCI規(guī)范請(qǐng)?jiān)斠?jiàn)參考文獻(xiàn)1),它制定了機(jī)械結(jié)構(gòu)上更加堅(jiān)固耐用的PCI版本,用于工業(yè)和嵌入式應(yīng)用,是一種新的開(kāi)放的工業(yè)計(jì)算機(jī)標(biāo)準(zhǔn)。本文介紹的基于CompactPCI總線(xiàn)的數(shù)字隔離I/O模塊是應(yīng)用于對(duì)抗震性能要求較高的內(nèi)場(chǎng)測(cè)試系統(tǒng)上。
2 CompactPCI總線(xiàn)接口的設(shè)計(jì)
目前CompactPCI接口卡的設(shè)計(jì)一般有兩種方法,第一種是基于將PCI接口完全集成到ASIC中,這樣做的好處是集成度高,量產(chǎn)的生產(chǎn)成本低,直接用成熟的核。另一種方法可以根據(jù)CompactPCI協(xié)議在FPGA中實(shí)現(xiàn)CompactPCI總線(xiàn)接口控制器,但是由于CompactPCI總線(xiàn)協(xié)議自身的復(fù)雜性,要想在短期內(nèi)做到操作穩(wěn)定,難度很大。綜合項(xiàng)目需求、成本、開(kāi)發(fā)難易及后續(xù)開(kāi)發(fā)等幾個(gè)問(wèn)題考慮,選擇了PLX9030芯片作為設(shè)計(jì)基于CompactPCI總線(xiàn)的接口芯片。
[align=center]
圖1 PLX9030控制原理示意圖[/align]
2.1 PLX9030實(shí)現(xiàn)CompactPCI總線(xiàn)接口設(shè)計(jì)
如圖2所示,設(shè)計(jì)主要由三個(gè)功能部分組成:一個(gè)是PLX9030與CompactPCI總線(xiàn)的接口控制邏輯,一個(gè)是它與局部總線(xiàn)的接口控制邏輯,還有一個(gè)即是與CompactPCI配置存儲(chǔ)器串行EEPROM的接口控制邏輯。
[align=center]
圖2 PLX9030實(shí)現(xiàn)CompactPCI總線(xiàn)接口控制[/align]
PLX9030接口控制芯片把CompactPCI總線(xiàn)和局域總線(xiàn)連接起來(lái),把所有的CompactPCI接口信號(hào)做在芯片內(nèi)部。本模塊局域總線(xiàn)控制單元,用于輸入輸出選通控制,應(yīng)用簡(jiǎn)單譯碼、瑣存和緩沖,最終實(shí)現(xiàn)可分別一一控制的16位數(shù)據(jù)輸入和16位數(shù)據(jù)輸出,控制原理比較簡(jiǎn)單,為了節(jié)約板卡空間,用CPLD7128完成。設(shè)計(jì)方法請(qǐng)?jiān)斠?jiàn)參考文獻(xiàn)3。CompactPCI配置存儲(chǔ)器串行EEPROM的接口控制邏輯是設(shè)計(jì)中的重點(diǎn)。
2.2 配置寄存器
PCI規(guī)范規(guī)定任何PCI設(shè)備必須實(shí)現(xiàn)一定數(shù)目的配置寄存器,以提供必要的配置信息。 9030對(duì)應(yīng)的串行EEPROM容量需大于2Kbit(128words *16bit),并且需要有地址自增功能,在該課題中選用了93LC66芯片。PLX9030提供了與串行 EEPROM管腳—一對(duì)應(yīng)的接口,只需對(duì)應(yīng)連接即可,如圖2。需要配置的寄存器請(qǐng)?jiān)斠?jiàn)參考文獻(xiàn)2。
上電過(guò)程中,PLX9030的內(nèi)部寄存器由PCI BUS的RST#信號(hào)復(fù)位,并給出響應(yīng)信號(hào)RETRY,在LOCAL BUS上輸出LRESET#信號(hào),檢查串行EEPROM是否存在。如果安裝了EEPROM,PLX9030開(kāi)始讀串行EEPROM,若讀出的第一個(gè)字非FFFFH,則PLX9030繼續(xù)讀操作,PLX9030用EEPROM中的值來(lái)配置片內(nèi)的寄存器,否則認(rèn)為EEPROM無(wú)效使用缺省值。對(duì)PLX9030來(lái)講,EEPROM的前四個(gè)字節(jié)應(yīng)該是30H、90H、B5H、10H,其中9030H為設(shè)備號(hào),10B5H為廠(chǎng)商號(hào)。則PLX930用EEPROM中的值來(lái)配置片內(nèi)的寄存器,否則使用缺省值。
3 模塊隔離電路的設(shè)計(jì)
隔離是指使用變壓器、光電或電容耦合等方法在被測(cè)系統(tǒng)與測(cè)試系統(tǒng)之間傳遞信號(hào),避免了直接的電氣或物理連接。光電耦合器以光電轉(zhuǎn)換原理傳輸信息,它不僅使信息發(fā)出端(一次側(cè))與信息接收端(二次側(cè))是電絕緣的,從而對(duì)地電位差干擾有很強(qiáng)的抑制能力,而且有很強(qiáng)的抑制電磁干擾的能力,且速度高,價(jià)格低,接口簡(jiǎn)單,因而得到廣泛的應(yīng)用。
光電耦合器的一次側(cè)都是發(fā)光二極管,但是二次側(cè)有很多種結(jié)構(gòu),如光敏二極管、光敏晶體等,本卡選用光電耦合器的是高速CMOS型的,傳輸率可達(dá)10MHZ,型號(hào)為HCPL2630,原理說(shuō)明請(qǐng)?jiān)斠?jiàn)參考文獻(xiàn)4。它的一次側(cè)與二次側(cè)的延遲時(shí)間只有28 ns,因此速度遠(yuǎn)遠(yuǎn)超過(guò)普通光電三極管型的光電隔離管。內(nèi)部結(jié)構(gòu)原理圖如3。加裝光電隔離電路的方法如圖4。
[align=center]
圖3 HCPL2630內(nèi)部原理[/align]
[align=center]
圖4 光電耦合器的連接圖[/align]
由于光電耦合器的前端是發(fā)光二極管,最大電流不能超過(guò)15mA,因此一定要加上限流電阻R。限流電阻R的阻值的大小,對(duì)光電耦合器的性能影響很大。R過(guò)大,會(huì)導(dǎo)致脈沖邊緣延遲較大,R過(guò)太小,又很容易使光電耦合器前端發(fā)光二極管損壞而縮短光耦壽命。因此需要經(jīng)過(guò)多次反復(fù)的實(shí)踐才能最后確定。由于器件有個(gè)體的差異,在調(diào)試過(guò)程中,也遇到個(gè)別的光電耦合器在運(yùn)行一段時(shí)間后才發(fā)現(xiàn)驅(qū)動(dòng)能力不夠,需要減小限流電阻、增大電流才能使發(fā)光二極管可靠導(dǎo)通的情況。
光電耦合器輸入端和輸出端供電要使用不同電源,于是在板卡上應(yīng)用了DC5V—DC5V電源隔離模塊,自帶∏型濾波器,在增加少量的外加電路后能達(dá)到很小的輸出紋波。
4 模塊的硬件原理
如圖5,當(dāng)數(shù)字信號(hào)從CompactPCI的J2連接器輸入到數(shù)字隔離I/O模塊時(shí),首先經(jīng)過(guò)了光耦隔離器,保證了外部的信號(hào)不對(duì)板上其他信號(hào)造成電壓沖擊;當(dāng)總線(xiàn)發(fā)出讀操作命令時(shí),PLX9030、CPLD接收了讀操作命令,相應(yīng)的控制位把隔離后的信號(hào)送給CompactPCI總線(xiàn)。
[align=center]
圖5 數(shù)字隔離I/O模塊硬件原理[/align]
當(dāng)數(shù)字信號(hào)從CompactPCI總線(xiàn)向局部總線(xiàn)輸出時(shí),首先通過(guò)PLX9030把相應(yīng)的控制位和數(shù)據(jù)送到CPLD中,CPLD接受了命令后,把相應(yīng)的數(shù)據(jù)經(jīng)光耦隔離器及驅(qū)動(dòng)器送出。 外部設(shè)備可以通過(guò)CompactPCI J2自定義針腳根據(jù)需要進(jìn)行控制。
5 WinDriver開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序
?。?)打開(kāi)WinDriver應(yīng)用程序后,出現(xiàn)Driver Wizard,選擇創(chuàng)建新Driver,出現(xiàn)當(dāng)前系統(tǒng)中所有的硬件卡的列表,如圖6所示。
[align=center]
圖6 當(dāng)前系統(tǒng)中所有的硬件卡的列表[/align]
從列表中選擇需要建立驅(qū)動(dòng)程序的硬件設(shè)備,對(duì)于PCI設(shè)備,點(diǎn)擊Generate.INF按鈕建立安裝信息文件1518.inf。然后對(duì)1518.inf中的部分內(nèi)容按照板卡所需信息進(jìn)行修改。
?。?)用Driver Wizard生成操作硬件的應(yīng)用程序級(jí)API函數(shù)。存放于DIO.h文件中。
?。?)啟動(dòng)VC++6,建立一個(gè)DLL工程,將 Wizard產(chǎn)生的部分單元文件包含進(jìn)工程中,在此基礎(chǔ)上加入完成特定任務(wù)的代碼,利用DIO.h中的API函數(shù),完成DIO.c,并提供應(yīng)用程序的調(diào)用接口。
(4)編寫(xiě)接口單元文件DIO.def,將工程編譯成動(dòng)態(tài)鏈接庫(kù)DIO.dll。應(yīng)用程序就可以直接調(diào)用此動(dòng)態(tài)鏈接庫(kù)。在主測(cè)試程序中調(diào)用DIO.dll動(dòng)態(tài)鏈接庫(kù),操縱數(shù)字隔離I/O模塊配合其它模塊運(yùn)行。
6 運(yùn)行結(jié)果及討論
至今為止,基于本方案的數(shù)字隔離I/O模塊已經(jīng)成功地應(yīng)用于內(nèi)場(chǎng)測(cè)試系統(tǒng)中并實(shí)現(xiàn)量產(chǎn)。數(shù)字隔離I/O模塊是CompactPCI結(jié)構(gòu)的內(nèi)場(chǎng)綜合測(cè)試系統(tǒng)的重要模塊之一,能夠同時(shí)實(shí)現(xiàn)數(shù)字信號(hào)輸入和輸出兩大模塊的功能,簡(jiǎn)化了外圍硬件的選擇,也提高了系統(tǒng)的通用性和可擴(kuò)展性;同時(shí)對(duì)輸入輸出采取了光電隔離措施,使系統(tǒng)同外部設(shè)備之間實(shí)現(xiàn)了電絕緣,整個(gè)系統(tǒng)的抗干擾性能大大提高。該模塊的設(shè)計(jì)具有通用性,可以應(yīng)用到其它 CompactPCI總線(xiàn)的系統(tǒng)中,隨著CompactPCI總線(xiàn)在軍事工業(yè)領(lǐng)域的應(yīng)用不斷增多,有廣闊的發(fā)展應(yīng)用前景。
本文作者創(chuàng)新點(diǎn):數(shù)字隔離I/O模塊實(shí)現(xiàn)了數(shù)字信號(hào)輸入和輸出兩大模塊的功能,簡(jiǎn)化了外圍硬件的選擇,提高了系統(tǒng)的通用性和可擴(kuò)展性;同時(shí)對(duì)輸入輸出采取了光電隔離措施,使系統(tǒng)同外部設(shè)備之間實(shí)現(xiàn)了電絕緣,整個(gè)系統(tǒng)的抗干擾性能大大提高。
參考文獻(xiàn)
[1] Tom Shanley , Don Anderson ,Addison Wesley,2000
[2] PCIMG 2.0 D3.0 CompactPCI Specification September, 1999
[3] 宋萬(wàn)杰、羅豐、吳順君,CPLD技術(shù)及其應(yīng)用,西安電子科技大學(xué)出版社,1999
[4] HP,隔離電路設(shè)計(jì)指南,2000
[5] 周多等,PCI協(xié)議接口設(shè)計(jì)與驗(yàn)證, 微計(jì)算機(jī)信息,2005.5. P194-195