基于PCI總線的數(shù)據(jù)采集卡的設(shè)計與實(shí)現(xiàn)
摘要:在虛擬儀器的設(shè)計中,選擇適合的數(shù)據(jù)采集系統(tǒng)是很重要的。文章在對各種現(xiàn)成數(shù)據(jù)采集卡,接口總線的理解對比的基礎(chǔ)上,以ADS8412為核心設(shè)計了集多路選通、模擬信號調(diào)理、A/D轉(zhuǎn)換為一體的模擬信號采集系統(tǒng),借助CPLD時序控制功能以PCI 9054為核心芯片設(shè)計實(shí)現(xiàn)廠基于PCI總線的數(shù)據(jù)采集卡的控制系統(tǒng),用Builder C++編寫了采集卡的動態(tài)鏈接庫,利用LabVIEW提供的調(diào)用庫函數(shù)節(jié)點(diǎn),完成了通過動態(tài)鏈接庫調(diào)用數(shù)據(jù)采集卡的過程。
關(guān)鍵詞:LabVIEW;PCI總線;數(shù)據(jù)采集;動態(tài)鏈接庫
0 引言
LabvIEW是美國NI公司的創(chuàng)新產(chǎn)品,也是目前應(yīng)用最廣、發(fā)展最快、功能最強(qiáng)的圖形化軟件開發(fā)集成環(huán)境。
數(shù)據(jù)采集卡是虛擬儀器的重要組成部件,其性能指標(biāo)直接影響虛擬示波器的采樣速率、精度等主要指標(biāo)。
PCI總線是一個地址/數(shù)據(jù)、命令/字節(jié)選擇信號復(fù)用的總線,它采用主從信號雙向握手的方式來控制數(shù)據(jù)的傳輸。PCI總線具有即插即用、兼容性強(qiáng)的特點(diǎn),能提供32/64位,33/66MHz的DMA(直接內(nèi)存訪問)數(shù)據(jù)傳輸方式,使得它工作時不受計算機(jī)內(nèi)存大小的影響,傳輸速率最高可達(dá)133Mb/s,這些特性使得它的應(yīng)用范圍很廣,能夠適用于多種體系結(jié)構(gòu),多種工作平臺,也很容易升級,為未來的發(fā)展留有足夠的空間。上述這些優(yōu)良特性正是本設(shè)計選擇PCI接口總線的原因。
1 數(shù)據(jù)采集卡的硬件設(shè)計
本系統(tǒng)的總體設(shè)計主要包括:采集模塊設(shè)計、信號調(diào)理模塊設(shè)計、PCI總線接口設(shè)計、FIFO數(shù)據(jù)緩存設(shè)計的實(shí)現(xiàn)等部分。系統(tǒng)框圖如下圖1所示。
1.1 信號調(diào)理模塊設(shè)計
信號調(diào)理模塊實(shí)現(xiàn)信號放大、模擬通道選擇和差分轉(zhuǎn)換,這部分電路對整個系統(tǒng)至關(guān)重要,在設(shè)計的過程中應(yīng)該著重注意降低信號失真,減少系統(tǒng)噪聲。
1.2 采集模塊設(shè)計
模數(shù)轉(zhuǎn)換是采集板卡的核心,系統(tǒng)要求采樣速度至少在250kHz以上,采樣精度16位,動態(tài)范圍也要求足夠?qū)?。綜合各因素,選擇了ADS 8412芯片。
ADS8412使用外部參考電壓工作,與PCI總線接口的原理如圖2所示。
本文中設(shè)置了8路采集通道,控制時序控制8/1模擬開關(guān)依次選通其中一路信號,差分轉(zhuǎn)換電路將單端信號轉(zhuǎn)換成差分信號送入ADS8412中,ADS8412內(nèi)部自帶轉(zhuǎn)換時鐘,無需外接。多通道數(shù)據(jù)采集按照分時采樣,即8通道進(jìn)行輪流采樣,只用一路A/D。
1.3 PCI總線接口設(shè)計
PCI 9054通過PCI總線與計算機(jī)相連,PCI協(xié)議和時序由PCI 9054接口芯片完成,這里只需要對PCI9054接口進(jìn)行設(shè)計即可,無需去了解復(fù)雜的總線協(xié)議,簡化了設(shè)計的過程,這正是用專用芯片實(shí)現(xiàn)總線接口的優(yōu)點(diǎn)。
PCI接口電路應(yīng)當(dāng)完成以下幾種功能:地址譯碼及命令譯碼;地址產(chǎn)生;控制信號的產(chǎn)生。
實(shí)現(xiàn)PCI總線控制器大體有兩種方式:使用可編程器件和專用接口芯片。采用EPLD和FPGA等編程邏輯器件的優(yōu)點(diǎn)在于其靈活的可編程性。專用芯片可以實(shí)現(xiàn)完整的PCI主控模塊和目標(biāo)模塊接口功能,將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對簡單的接口。用戶可以集中精力于應(yīng)用設(shè)計,而不是調(diào)試PCI總線的接口,明顯縮短了開發(fā)時間。本設(shè)計應(yīng)用PLX公司的PCI 9054實(shí)現(xiàn)總線控制器。
PCI接口原理圖如圖3所示。啟動采樣后,PCI 9054作為主控設(shè)備,利用其DMA通道進(jìn)行數(shù)據(jù)傳輸。當(dāng)雙口SRAM采滿1kB數(shù)據(jù)之后,通過控制時序產(chǎn)生局部總線中斷,PCI 9054獲得局部總線的控制權(quán)后,根據(jù)DMA的起始位將1kB的數(shù)據(jù)讀到DMA傳輸?shù)膶S肍IFO中,PCI 9054申請占用PCI總線,獲得PCI總線的控制權(quán)后,將數(shù)據(jù)寫入PCI總線存儲空間,從而實(shí)現(xiàn)一次采樣和傳輸。
圖3中,中斷申請是控制時序電路判斷FIFO滿標(biāo)志端提出的。響應(yīng)中斷期間PCI總線以DMA方式向上位機(jī)傳輸數(shù)據(jù),以便應(yīng)用程序調(diào)用數(shù)據(jù)進(jìn)行分析處理。93S66為配置存儲器,用于PCI設(shè)備卡的識別。圖4是PCI接口控制器工作流程圖。
2 數(shù)據(jù)采集過程的實(shí)現(xiàn)
2.1 動態(tài)鏈接庫的設(shè)計
LabVIEW軟件本身提供了對端口的操作函數(shù),可以對外設(shè)的端口進(jìn)行讀寫,而其他對外設(shè)的實(shí)時控制則需要通過DLL技術(shù)來實(shí)現(xiàn)。
在本系統(tǒng)中,自行應(yīng)用硬件芯片設(shè)計了數(shù)據(jù)采集卡,要實(shí)現(xiàn)系統(tǒng)中的各個硬件與計算機(jī)之間的通信,必須設(shè)計相應(yīng)的動態(tài)鏈接庫。DLL庫的設(shè)計在這里主要包括:設(shè)備初始化;確定設(shè)備名;創(chuàng)建設(shè)備句柄;獲取通道信息;等待客戶軟件信息。
2.2 數(shù)據(jù)采集過程
先對數(shù)據(jù)采集卡有關(guān)的采樣參數(shù)設(shè)置;采樣開始,多路開關(guān)對采樣通道進(jìn)行一次掃描,每個通道采樣一個點(diǎn);接著開始A/D轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)字信號存到數(shù)據(jù)緩存區(qū)中。重復(fù)上述過程直到采集到了所需的采樣次數(shù),全部數(shù)據(jù)順序存儲到緩存區(qū)中,需要時從數(shù)據(jù)采集卡的緩存中讀取數(shù)據(jù)到計算機(jī)的內(nèi)存中進(jìn)行處理。采集流程如圖5所示。
2.3 LabviEW中的動態(tài)鏈接庫調(diào)用
在LabVIEW的編程狀態(tài)下,打開Function Palette工具箱中“調(diào)用動態(tài)鏈接庫功能”,將數(shù)據(jù)采集卡驅(qū)動程序轉(zhuǎn)化為一個圖標(biāo)/連接器,然后在框圖程序中就可以調(diào)用該模塊,通過在其輸入端設(shè)置相應(yīng)的參數(shù),在程序運(yùn)行時,驅(qū)動模塊啟動數(shù)據(jù)采集卡的工作,并將采集數(shù)據(jù)返回。圖6為動態(tài)鏈接庫調(diào)用的一個例子。
圖6中CLF節(jié)點(diǎn)I/O數(shù)據(jù)類型決定于外輸入,采集通道數(shù)輸入控件“channel”、采集次數(shù)輸入控件“times”均為32位無符號長整形,對0~5V電壓經(jīng)采集后的輸出為雙精度浮點(diǎn)型離散的數(shù)值,先送入緩存器中存儲待用。
4 結(jié)論
本文采用硬件芯片設(shè)計的數(shù)據(jù)采集系統(tǒng),在本地總線的晶振頻率為20MHz時,能穩(wěn)定地達(dá)到160Mb/s的采集速率;晶振頻率為40MHz時,能穩(wěn)定的達(dá)到200Mb/s的采集速率。
將虛擬儀器技術(shù)與各種物理信號的采集、分析及結(jié)果顯示結(jié)合起來為新型儀器的開發(fā)提供了一個很好的方向。將先進(jìn)的儀器開發(fā)軟件LabVIEW與普通數(shù)據(jù)采集系統(tǒng)很好地結(jié)合起來又將使虛擬儀器技術(shù)在各個領(lǐng)域得到更廣泛的應(yīng)用。