劉龍飛 張彥軍 朱思敏
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051)
美國(guó)國(guó)家儀器公司(簡(jiǎn)稱NI公司)是全球著名研制生產(chǎn)信號(hào)采集設(shè)備和虛擬儀器的專業(yè)機(jī)構(gòu),1997年,NI公司在PCI基礎(chǔ)上開發(fā)了PXI(PCIextensions for instrumentation)總線。在儀器擴(kuò)展方面,PXI總線已成為工業(yè)標(biāo)準(zhǔn);在數(shù)據(jù)傳遞方面,PXI的性能較早期的系統(tǒng)有了顯著的提高。目前,全世界有近60個(gè)研究機(jī)構(gòu)推出約500種PXI產(chǎn)品[1]。PXI在我國(guó)航天航空領(lǐng)域的應(yīng)用也比較廣泛,但引進(jìn)設(shè)備的接口和信號(hào)參數(shù)等大多與實(shí)際需求不符。為更方便地應(yīng)用與推廣由PXI總線構(gòu)成的信號(hào)采集和信號(hào)源等系統(tǒng),必須根據(jù)技術(shù)要求來開發(fā)符合標(biāo)準(zhǔn)的產(chǎn)品。本文提出了一種基于PXI總線的多通道數(shù)據(jù)采集卡,并介紹了各功能模塊的工作原理。
本數(shù)據(jù)采集系統(tǒng)由PCI9054總線控制器、FPGA、外部FIFO、數(shù)模轉(zhuǎn)換電路、信號(hào)調(diào)理電路、多路信號(hào)選通電路等部分組成。其中,PCI9054總線控制器實(shí)現(xiàn)PXI總線接口功能,ADS8041用于對(duì)輸入模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換,F(xiàn)IFO存儲(chǔ)器在前后數(shù)據(jù)傳輸過程中起到數(shù)據(jù)緩沖的作用,F(xiàn)PGA對(duì)數(shù)模轉(zhuǎn)換器、FIFO、PCI9054、多路模擬信號(hào)選通進(jìn)行控制。系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖Fig.1 Block diagram of the system structure
本系統(tǒng)工作原理如下:多路模擬信號(hào)經(jīng)過調(diào)理電路后,在FPGA的控制下通過ADG706進(jìn)行選通;然后送入ADS8041進(jìn)行模數(shù)轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)字量存儲(chǔ)到FIFO中;當(dāng)FIFO存儲(chǔ)器中的數(shù)據(jù)量達(dá)到半滿時(shí),數(shù)據(jù)通過PCI9054傳遞給PXI總線并存儲(chǔ)到PC機(jī)內(nèi)存中,通過上位機(jī)軟件進(jìn)行存盤、顯示、繪圖。
整個(gè)系統(tǒng)采集過程采用FPGA進(jìn)行嚴(yán)格的時(shí)序控制。
PXI總線規(guī)范具有PCI的性能和特點(diǎn),其兼容CompactPCI的技術(shù)規(guī)范,故PXI總線接口芯片采用了PLX公司的PCI通用接口芯片(PCI9054)。PCI9054支持主模式、從模式和DMA傳輸方式,能夠廣泛地應(yīng)用到各種適配卡和嵌入式系統(tǒng)中。
PCI9054提供了PCI總線接口、LOCAL總線接口和串行EPROM接口這3種物理總線接口。PCI總線接口信號(hào)主要有RST#、FRAME#、AD[31∶0]、C/BE[3∶0]#、IRDY#、CLK、TRDY#、DEVSEL#和 INTA#;串行 EEPROM 接口信號(hào)有EECS、EEDI、EESK和EEDO;本地總線接口信號(hào)有ADS#、BLAST#、CS0#、LA[5∶2]、LW/R#、LRESET#、READY#和 L INTi1[2]。PCI總線接口與 PXI接口對(duì)應(yīng)端口相連即可。串行EEPROM接口信號(hào)只需要連接到NM93CS56芯片對(duì)應(yīng)的引腳即可,而本地總線信號(hào)則要根據(jù)系統(tǒng)設(shè)計(jì)的需要進(jìn)行選擇。PCI9054有C、M和J模式[3]這3種工作模式。本設(shè)計(jì)采用的是C模式下PCI Initiotor操作,本地處理器或本地總線主控設(shè)備能夠直接通過 PCI9054訪問 PXI總線,從而進(jìn)行數(shù)據(jù)傳輸。PCI9054接口示意圖如圖2所示。
圖2 PCI9054接口示意圖Fig.2 Schematic diagram of PCI9054 interface
串行EEPROM采用93CS56芯片,用于存放PCI9054的重要配置信息,如廠商ID、器件型號(hào)ID、局部空間基地址、局部空間大小及映射類型、中斷控制和響應(yīng)等信息。當(dāng)系統(tǒng)上電時(shí),這些配置信息將被自動(dòng)加載到PCI9054的PCI配置寄存器和本地配置寄存器中,用于對(duì)系統(tǒng)進(jìn)行初始化。主控計(jì)算機(jī)將根據(jù)PCI9054內(nèi)部相關(guān)配置寄存器的內(nèi)容分配系統(tǒng)所需要的資源。
各種接口芯片都需要外接串行EEPROM芯片來加載配置數(shù)據(jù)。EEPROM配置芯片存儲(chǔ)了PCI9054的配置信息,只有正確加載了EEPROM內(nèi)部的正確信息,才能夠順利進(jìn)入系統(tǒng)。
針對(duì)EEPROM配置芯片的選型問題,PLX公司在相應(yīng)資料中已經(jīng)給出了若干推薦的型號(hào),要求EEPROM配置芯片必須同時(shí)滿足以下兩個(gè)條件:芯片必須支持串行連續(xù)讀寫模式;3.3 V供電時(shí)芯片能夠保證最大支持的串行時(shí)鐘速率大于1 MHz。本文選擇了由Fairchild Semiconductor公司生產(chǎn)的NM93CS56。PCI9054提供了4個(gè)管腳與串行EEPROM相連接,它們分別是 PEECS、PEEDI、PEEDO、PEESK,對(duì)應(yīng) 于NM93CS56的 CS、DI、DO、SK 這4個(gè)管腳,這4對(duì)管腳一一對(duì)應(yīng)連接[4]。PCI9054與EEPROM的接口電路設(shè)計(jì)如圖3所示。
圖3 PCI9054與EEPROM的接口電路Fig.3 Interface circuit between PCI9054 and EEPROM
值得注意的是,當(dāng)PCI在沒有使用EEPROM時(shí),應(yīng)該使用1 kΩ下拉電阻才能進(jìn)入系統(tǒng);當(dāng)使用空的EEPROM或者已經(jīng)燒好的EEPROM時(shí),則需要使用3.9 kΩ上拉電阻才能夠進(jìn)入系統(tǒng)。因此,設(shè)計(jì)時(shí)應(yīng)將此引腳根據(jù)實(shí)際需要焊接上拉或下拉電阻。
PCI板卡模塊的上電工作流程如下:PCI卡插到PC機(jī)插槽中→系統(tǒng)上電自檢→PCI9054的RST#復(fù)位→PCI9054檢測(cè)EEPROM是否存在→PCI9054根據(jù)EEPROM的配置信息初始化其內(nèi)部寄存器→BIOS根據(jù)PCI9054配置寄存器的內(nèi)容進(jìn)行系統(tǒng)資源分配→進(jìn)入系統(tǒng),安裝 PCI9054 驅(qū)動(dòng)[5]。
A/D轉(zhuǎn)換電路采用ADS8401芯片來實(shí)現(xiàn)。ADS8401是一個(gè)16位、1.25 MHz的A/D轉(zhuǎn)換芯片,它具有零遲緩、片上基準(zhǔn)、低功耗等特性。調(diào)理選通后的輸入信號(hào)首先進(jìn)入ADS8401并轉(zhuǎn)換為16位數(shù)字信號(hào),在FPGA的控制下依次取高8位與低8位進(jìn)行編幀;然后存入FIFO存儲(chǔ)器中;當(dāng)達(dá)到半滿狀態(tài)時(shí),在FPGA的控制下,F(xiàn)IFO輸出的HF#信號(hào)產(chǎn)生一個(gè)低電平信號(hào),用于驅(qū)動(dòng)PCI9054的本地總線中斷信號(hào)有效;產(chǎn)生PXI總線中斷后,將FIFO存儲(chǔ)器中的數(shù)據(jù)送入PC機(jī)進(jìn)行處理,這樣就實(shí)現(xiàn)了整個(gè)系統(tǒng)的采集工作[6]。
PCI9054的讀寫時(shí)序是狀態(tài)編寫VHDL代碼的參考關(guān)鍵,一些關(guān)鍵信號(hào)如READY#等的狀態(tài)控制稍有失誤,就會(huì)造成讀寫數(shù)據(jù)不正確,甚至?xí)斐捎?jì)算機(jī)死機(jī)、藍(lán)屏等嚴(yán)重后果[7]。本文詳細(xì)研究了PCI9054的讀寫時(shí)序狀態(tài)機(jī),并按照狀態(tài)機(jī)的邏輯編寫VHDL代碼,實(shí)現(xiàn)了PCI總線對(duì)本地總線的讀寫操作。系統(tǒng)仿真結(jié)果如圖4所示。
圖4 系統(tǒng)仿真結(jié)果界面圖Fig.4 Interface of system simulation result
圖4中,rst為全局復(fù)位信號(hào);clk為外部50 MHz時(shí)鐘信號(hào);lhold為本地總線請(qǐng)求信號(hào);lholda為本地總線請(qǐng)求應(yīng)答信號(hào);ads為本地總線觸發(fā)信號(hào);blast#為突發(fā)傳輸信號(hào);lwr為本地讀寫信號(hào)(高電平為寫,低電平為讀);ready為本地總線準(zhǔn)備好的信號(hào);data為PCI寫入的多通道參數(shù)數(shù)據(jù);ram_id為定義的通道計(jì)數(shù)器。
采用LabVIEW軟件對(duì)輸入信號(hào)采集模塊進(jìn)行了實(shí)際測(cè)試。實(shí)際測(cè)試結(jié)果如圖5所示。
圖5 實(shí)際測(cè)試結(jié)果圖Fig.5 The actual test results
本文在PXI-1031硬件平臺(tái)上,設(shè)計(jì)實(shí)現(xiàn)了多通道PXI總線數(shù)據(jù)采集卡。該卡采用PCI9054芯片作為與PXI總線信號(hào)連接的接口芯片。本采集卡已成功應(yīng)用于航空航天中大型設(shè)備的測(cè)試,并取得了很好的效果。
[1] 吳曉琳,鞏偉.PXI6534數(shù)字采集卡的原理與應(yīng)用[J].信息技術(shù),2012(1):154-158.
[2] 尹勇,李宇.PCI總線設(shè)備開發(fā)寶典[M].北京:北京航空航天大學(xué)出版社,2005.
[3] 張秀峰,毛先萍,阿米妮古.基于Matlab的PCI數(shù)據(jù)采集在過程控制系統(tǒng)中的應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2012,25(8):11-13.
[4] 馬超,皮亦鳴.基于PCI9054的PCI接口數(shù)據(jù)通信系統(tǒng)[J].中國(guó)科技論文在線,2008,3(1):70-73.
[5] 安冬.基于 PCI9054從模式的數(shù)據(jù)采集卡設(shè)計(jì)與應(yīng)用[J].北京:計(jì)算機(jī)測(cè)量與控制,2010:2439-2440.
[6] 方慶山.基于PCI總線的數(shù)據(jù)采集卡設(shè)計(jì)[D].南京:南京理工大學(xué),2008.
[7] 羊三周.基于FPGA的PCI數(shù)據(jù)采集卡設(shè)計(jì)[D].太原:中北大學(xué),2006.