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