基于高速數據采集卡的虛擬示波器設計
摘要:基于PCI接口的compuScope 82G型高速數據采集卡和Visual c++編程工具.設計了一種快速虛擬示波器試驗系統,為了保證數據采集和波形顯示的實(shí)時(shí)性,設計中采用了多線(xiàn)程技術(shù)。該系統集波形采集、數據分析、輸出、顯示為一體,實(shí)現了高速數據的采集和動(dòng)態(tài)波形的顯示,并且在此基礎上實(shí)現了傳統示波器無(wú)法實(shí)現的頻譜分析和數字濾波功能。
關(guān)鍵詞:虛擬儀器;虛擬示波器;數據采集;CompuScope 82G
1 引言
虛擬儀器(VI-ViItuaIInstrument)是指通過(guò)應用程序將通用計算機與功能化硬件結合起來(lái),用戶(hù)可通過(guò)友好的圖形界面操作計算機,就像在操作自己定義、自己設計的單個(gè)儀器一樣,從而完成對被測量的采集、處理、分析、判斷、顯示、數據存儲等。在這種儀器系統中,各種復雜測試功能、數據分析和結果顯示都完全由計算機軟件完成,在很多方面較傳統儀器有無(wú)法比擬的優(yōu)點(diǎn),如使用靈活方便、測試功能豐富、價(jià)格低廉、一機多用等,這些使得虛擬儀器成為未來(lái)電子測量?jì)x器發(fā)展的主要方向之一。
當今虛擬儀器系統開(kāi)發(fā)采用的總線(xiàn)包括傳統的Rs232串行總線(xiàn)、GPIB通用接口總線(xiàn)、VXI總線(xiàn)、PCI總線(xiàn)和IEEE 1394總線(xiàn)即Firewire(也叫做火線(xiàn))。
本文介紹基于PCI總線(xiàn)接口的CompuS,cope82G型高速數據采集卡和Visual C++編程工具的快速虛擬示波器試驗系統,該系統集波形采集、數據分析、輸出、顯示為一體。為了保證數據采集和波形顯示的實(shí)時(shí)性,設計中還采用了多線(xiàn)程技術(shù)。
2 系統組成和采集卡的硬件結構
2.1 系統組成
虛擬示波器系統主要由數據采集卡、計算機和專(zhuān)用軟件組成,其中,數據采集卡完成對輸入測量信號的調理采集和緩存,并通過(guò)計算機PCI總線(xiàn)送入內存;計算機在應用程序控制下對數據進(jìn)行處理、運算,最后完成各種電量測試并在屏幕上用圖形或數據形式顯示。這一切均在人機交互方式下完成。
2.2 數據采集卡的硬件結構
本虛擬示波器采用Gage公司的CompuScope82G型高速數據采集卡作為PCI接口。采集卡的硬件結構如圖1所示。
該數據采集卡主要由前置濾波器、可程控衰減器、可程控模擬放大電路、A/D轉換器、D/A轉換器、計數,定時(shí)電路、振蕩電路、時(shí)序控制電路及PCI接口電路組成,其功能電路由數字控制邏輯電路統一控制。該卡是具有2個(gè)模擬量輸入通道的標準的PCI總線(xiàn)插卡,卡上集成的2個(gè)高速8位ADC的工作頻率高達IGHz,在單通道工作模式下,2個(gè)ADC同時(shí)工作,分別在脈沖的上升沿和下降沿進(jìn)行轉換,所以最高采樣頻率可以達到2GHz??ㄉ吓渲糜?6M的高速存儲器,解決了高采樣率和相對較低PCI總線(xiàn)數據傳輸速率的匹配問(wèn)題。在使用之前必須對采集卡的硬件進(jìn)行配置,這些控制程序用到相應的底層DAQ驅動(dòng)程序。通過(guò)采集卡自帶的DLL可以在程序中靈活地對硬件進(jìn)行控制,比如輸入阻抗、輸入電壓范圍、放大器增益、采樣頻率、每次采樣點(diǎn)數等。
3 系統的軟件設計
3.1 虛擬示波器的軟件開(kāi)發(fā)環(huán)境
虛擬儀器最核心的技術(shù)是軟件技術(shù)。目前,用于虛擬儀器開(kāi)發(fā)的軟件開(kāi)發(fā)平臺主要有二大類(lèi):一類(lèi)是通用的可視化軟件編程環(huán)境,主要有Microsoft公司的Visual C++和Visual Basic、Inprise公司的Delphi和C++Builder等;另一類(lèi)是一些公司推出的專(zhuān)用于虛擬儀器開(kāi)發(fā)軟件的編程環(huán)境,主要有NI公司的圖形化編程環(huán)境LabView及文本編程環(huán)境IabWindows/CVI、Agilent公司的圖形化編程環(huán)境Agilent VEE??紤]到軟件的靈活性、高效性和可移植性,本設計中采用visual C++作為虛擬示波器的開(kāi)發(fā)環(huán)境。
3.2 軟件功能模塊
該虛擬示波器有5大功能模塊:信號采集、用戶(hù)界面、頻譜分析、數字濾波、波形顯示。
3.2.1信號采集模塊
信號采集模塊主要完成數據的采集,根據采集信號的不同選用不同的采樣頻率。該模塊中的應用程序通過(guò)采集卡的驅動(dòng)程序和硬件進(jìn)行通信,如果把該模塊放在程序主線(xiàn)程中實(shí)現,那么,當應用程序與驅動(dòng)程序進(jìn)行數據通信時(shí)主界面就會(huì )凍結。為了解決這個(gè)問(wèn)題,本文直接創(chuàng )建一種子線(xiàn)程來(lái)單獨完成與驅動(dòng)程序的通信任務(wù),讓主界面專(zhuān)用于響應視窗界面的信息。在子線(xiàn)程中通過(guò)調用gage_start_capture()函數進(jìn)行數據的采集。圖2示出數據采集流程。數據采集的主要代碼如下:
3.2.2用戶(hù)界面模塊
界面主要切分為3個(gè)視圖:主視圖基類(lèi)為ScrollView,用于顯示波形;2個(gè)視圖基類(lèi)為For-mView,1個(gè)用于動(dòng)態(tài)顯示采集數據的特征參數,另1個(gè)用于對示波器進(jìn)行操作。整個(gè)軟件的主界面設計如圖3所示。
3.2.3頻譜分析模塊
本軟件利用快速傅里葉變換(FFT)進(jìn)行頻譜分析。頻譜分析采用按時(shí)間抽取FFT算法,然后將幅值頻譜分析結果在用戶(hù)界面上以坐標曲線(xiàn)形式顯示。進(jìn)行FFT時(shí)可以選擇點(diǎn)數,有1024、2048、4096 3種選擇,如果點(diǎn)數不夠,程序自動(dòng)補零。
3.2.4數宇濾波模塊
本軟件可以對所采集的信號進(jìn)行低通和高通濾波。首先根據給定通帶截止頻率、阻帶截止頻率、通帶衰減和阻帶衰減設計出巴特沃思(Butter-worth)模擬濾波器,再用雙線(xiàn)性變換法設計出數字濾波器。
3.2.5波形顯示模塊
虛擬示波器的工作原理是對信號波形進(jìn)行高速采樣,采樣值被數字化后存儲起來(lái),當重建波形時(shí)便從緩沖區取數,然后用清晰、均勻一致的軌跡映像在屏幕上。由于采集的模擬波形經(jīng)數字化后成為一串離散數據,因此,如何重建信號波形是虛擬示波器設計中的關(guān)鍵問(wèn)題之一。當前的波形顯示主要有分段顯示和滾動(dòng)顯示。這里采用滾動(dòng)顯示,并且提出一種新的滾動(dòng)顯示算法,突破了滾動(dòng)顯示只能觀(guān)察變化緩慢的信號的限制。算法核心思想如下:
(1)得到所采集數據塊的第1個(gè)和最后1個(gè)數據點(diǎn)的橫坐標m_xMin和rn_xMax,m_xMax-m_xMin為波形的邏輯寬度。
(2)m_xMax-m_xMin的值為邏輯坐標,把它轉化為設備坐標cx,用cx設定整個(gè)滾
動(dòng)視圖的寬度。
(3)為了提高畫(huà)圖的效率,只需畫(huà)出滾動(dòng)視圖可視部分的圖形,也就是剪裁區的圖形,因此要得到剪裁區。
(4)畫(huà)出坐標及剪裁區內的一段波形。
(5)利用CSplitterWnd::DoSerollBy()函數,根據采樣間隔的大小決定斷滾動(dòng)視圖速度的快慢。這樣視圖滾動(dòng)以后相應的剪裁區也會(huì )發(fā)生改變,促使動(dòng)態(tài)畫(huà)出新的波形。
主要代碼如下:
4 實(shí)驗與討論
在實(shí)驗中使用該系統對正弦信號和鋸齒波信號進(jìn)行了采集,并對2個(gè)通道的信號分別進(jìn)行了頻譜分析。實(shí)驗時(shí)示波器參數設置如下:采樣模式為雙通道,其中通道1對正弦信號進(jìn)行采樣,通道2對鋸齒波信號進(jìn)行采樣;采樣率為120Ms/s;采樣深度為16 000點(diǎn);觸發(fā)源為軟件觸發(fā);觸發(fā)時(shí)間極限為20ms;輸入信號電壓范圍為~5V。實(shí)驗結果如圖4所示。達到了預定的效果。
本文基于Gage公司的CompuScope 82G型高速數據采集卡,用Visual C++編程工具設計出一種快速虛擬示波器試驗系統,實(shí)現了高速數據的采集和動(dòng)態(tài)波形的顯示。同時(shí)提出一種新的波形滾動(dòng)算法,大大改觀(guān)了滾動(dòng)波形的動(dòng)態(tài)顯示效果。在此基礎上實(shí)現了傳統示波器無(wú)法實(shí)現的頻譜分析和數字濾波功能。采用Visual c++作為儀器編程語(yǔ)言使得編寫(xiě)的程序通用性和可移植性強。
評論