摘要:信號處理領域中實驗測試常因電子測試儀器不足而帶來了教學和工程中的很大不便。該文所設計的虛擬典型儀器,實現了存儲示波器、頻譜分析儀及波形發生器的基本功能,可為實驗測試提供一種高效的解決方案。該儀器軟件部分采用VC++開發,硬件部分為計算機聲卡連通現實世界之間的電壓轉換模塊。
關鍵詞:虛擬儀器;VC++;存儲示波器;頻譜分析儀;波形發生器
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)26-1834-03
Design and Implementation of Virtual Typical Instrument
LU Ying1, XU Quan-yuan1, LV Hao2
(1.Department of Computer and Informatin Science, SouthWest Forestry College, Kunming 650024, China; 2.Yunnan Province software center,Kunming 650051, China)
Abstract: Testing on the signal processing field is very inconvenient in teaching and engineering area just because of the lack of the electronic test equipments. Design and implementation of virtual typical instrument which may supply an efficient solution is discussed in this paper. It implements the functions of Virtual Storage Oscilloscope、Spectrum Analyzer、Wave Generator. The software part uses VC++ development. The hardware part uses voltage converter module which can connect computer sound card and the real world.
Key words: virtual equipment; VC++; virtual storage oscilloscope; spectrum analyzer; wave generator
1 引言
傳統電子測試儀器是電子行業的基礎,但由于功能固定,研制生產周期長等缺點,越來越不能滿足信息時代的要求。這就給一種新型的測量儀器——虛擬儀器提供了極大的發展空間。虛擬儀器主要利用PC技術,只是添加A/D及D/A變換等少許硬件和以軟件為主的儀器,它通過應用程序將通用計算機與功能化硬件結合起來,用戶可通過友好的圖形界面來操作計算機,就像在操作自己定義、自己設計的一臺儀器一樣,從而完成對被測試量的采集、分析、判斷、顯示、數據儲存等。它是在PC技術的基礎上發展起來的,能在數據導入磁盤的同時,實時地進行復雜的分析。具有高效的性能、強大的擴展功能、節約開發時間,以及完美的集成性能等技術優勢。“軟件就是儀器”開辟了“虛擬儀器技術”的全新電子測試概念,成為現代測試技術的發展方向。和傳統儀器相比,虛擬儀器不僅開發與維護費用低,而且系統性能升級方便,運用靈活。
在信號處理中經常遇到信號頻譜、相位譜、信噪比等的研究與測量,采用傳統儀器進行研究學習有很大的局限性,所頻繁使用的傳統電子測試儀器諸如示波器、頻譜分析儀和波形發生器等由于價格昂貴,搬移困難以及其它諸多原因,使得信號處理的理論學習和實驗嚴重脫節。為從一定程度上緩和這種現象,可借助現在最為流行的計算機技術來進行虛擬儀器的開發與研究。
此外, 隨著計算機多媒體的發展,可視化編程已成為當今程序設計的主流,其中Visual C++更是可視化編程語言中的佼佼者。采用VC++6.0開發主要基于下面三點原因考慮:1)VC++的核心—MFC類庫已是事實上的業界標準;2)VC++與Visual Studio中的其它可視化開發工具緊密集成,可用于開發非常專業的Windows應用程序;3)VC++具有強大的底層操作如端口操作,便于實現對硬件的操作。
2 虛擬儀器的功能及界面說明
采用VC++開發了功能強大的集示波器,頻譜分析儀與波形發生器功能為一體的虛擬典型儀器。儀器整體功能如圖1所示,從計算機聲卡接收任意音頻信號的軟件界面如圖2,圖3所示。
以下是儀器界面及功能的詳細介紹。
1)儀器界面:儀器左右兩個窗口分別為時域視圖和頻域視圖。所有功能可通過菜單欄、工具欄和快捷鍵實現。任務欄可實時獲得信號數據值(時域視圖:顯示時間和幅度值;頻域窗口:顯示頻率、幅度值)。
2)波形顯示具有波形存儲;幅度\\時域擴展;實時獲取數據;添加網格坐標,動/靜態分析波形的功能。
3)波形發生可產生11種參數可調的基本波形:正弦波、方波、三角波、噪聲、調幅(AM)、調頻(FM)、調相(PM)、雙邊帶(DSB)、幅移鍵控(ASK)、頻移鍵控(FSK)以及相移鍵控(PSK)。可在通過示波功能觀察產生的各種信號時域波形的同時,通過頻譜分析功能觀察其相應的頻譜。如圖5至圖7所示。
4)頻譜分析顯示具有頻域波形存儲;幅度\\頻域擴展;實時獲取數據;添加網格坐標,動/靜態分析波形,多種視圖分析(四種基本視圖:連續視圖,離散視圖,分貝視圖,相位視圖及視圖疊加)的功能。
5)電壓轉換模塊:計出虛擬儀器的硬件模塊完成現實世界中的0~5V轉換成音頻接口可接受的電壓10mV~100mV,從而使設計的虛擬儀器的信號源不受計算機音頻接口電壓限制。
3 軟件實現
3.1 程序結構
程序由10個類構成:CAboutDlg, CMainFrm, CSndDoc, CSndApp, CSndView ,CFreView, CFft, CSoundIn,
CSplashWnd,CLyDlg。 其中CSndView是時域窗口視圖類,CFreView是頻域窗口視圖類,CFft是FFT計算實現類,CSoundIn是音頻輸入輸出實現類,CSplashWnd是起始屏實現類,CLyDlg是波形產生的實現類。
3.2 時域視圖編程原理
在時域視圖的編程采用了VC++的低層音頻函數進行編程,在CSoundIn類實現。這是因為較高層音頻服務函數來說,低層音頻服務函數的功能更為強大,諸如對聲音進行實時處理,對聲音波形實時控制等等。
對波形設備而言,無論是播放還是錄制波形,系統要處理的數據量都很大,為了少占用內存,低層音頻服務以數據塊為單位進行處理。它要求應用程序自己分配內存,并將內存塊的地址、大小等信息告訴低層音頻驅動程序,使其為錄放音頻操作做好準備。
音頻播放時,應用程序將要播放的數據填充到這個內存塊,然后通知驅動程序播放該塊。驅動程序播放數據在后臺進行,應用程序可以在前臺繼續做自己的工作。當一塊音頻播放完時,應用程序再向驅動程序提供新的數據,如此反復,直到音頻數據播放完畢。音頻錄制的過程與播放類似,不同之處在于應用程序向驅動程序提供的內存塊是供驅動程序錄制音頻數據的緩沖區,當驅動程序錄制充滿了給定的緩沖區后,會以某種方式通知應用程序做一定的處理,如將數據存盤等。
采用的基本低層音頻函數有:WaveOut(In)Open;WaveOut(In)Close;WaveInStop;WaveOut(In);
PrepareHeader;WaveOut(In)UnPrepareHeader;WaveOut(In)Write;WaveInReset;WaveInAddBuffer;WaveOut(In)GetNumDevs;WaveOut(In)GetDeviceCaps。
3.3 頻域視圖編程原理[9]
在信號分析中,為了簡化信號特征參數的提取,經常將信號從時域轉換到頻域上表示。采用FFT(快速付里葉變換)算法將在時域視圖中顯示的音頻波形經過CFft類編程后轉化為相應波形在頻域上的幅度譜、相位譜,或功率譜,并實時地顯示在頻域視圖中。對于一般輸入的音頻信號或噪聲無法求出其付里葉變換,則可以按下面兩種分析方法進行頻譜分析。一種是通過加一窗函數或帶通濾波截取一段有限的連續時間函數,從而隨機信號可以轉化為非周期信號進行頻譜密度分析。另一種分析是將隨機的功率型信號以功率譜進行分析。確定信號f(t)的自相關函數R(τ)與其功率譜密度Ps(w)之間有確定的付里葉變換關系,即
其中fT(t)?圳FT(w)。
而對功率型的平穩隨機過程ξ(t),雖然每個過程中的信號ξT(t)也可由功率譜 Ps(W)表示。但每個過程功率譜 Ps(W)并不代表所有過程的功率譜pξ(w)。過程功率譜應看作是每個過程功率譜的統計平均,即隨機過程功率譜可寫成
從而ξ(t)的平均功率
即 pξ(w)?圳R(τ)。
從而對于功率型平穩隨機過程的信號,如ASK、FSK、PSK等,可由自相關函數求出其功率譜。另外得出的功率譜頻域圖可轉為分貝表示,以便于觀察。
4 硬件實現
利用多媒體計算機的通用外設——聲卡,作為波形采集和輸出設備,配合連通現實世界的電壓轉換模塊,以完成對計算機聲卡外界現實世界中5伏以內信號的衰減或放大處理,以滿足計算機聲卡音頻口輸入輸出電壓指標,從而使本虛擬儀器的采集信號源可擴展到現實世界中更多的信號。該硬件模塊主要包括對應于計算機音頻輸入口的信號增益衰減部分和對應于計算機音頻輸出口的信號增益放大部分,如圖8所示。
5 結語
該虛擬典型儀器采用通用計算機的聲卡進行采集,集存儲示波器、頻譜分析儀及波形發生器的功能于一體。由于采用類的概念,該儀器通用性強,移植性好,擴張性好,很容易增加和修改功能,且無需特殊硬件支持,成本低,十分便于推廣,為信號處理領域中實驗測試提供一種高效的解決方案。目前,該儀器已經在某高校教學和實驗中得到使用和推廣,深受學習者的青睞。
參考文獻:
[1] 李博軒.Visual C++6.0多媒體開發指南[M].北京:清華大學出版社,2000:36-75.
[2] 丁玉美,高西全.數字信號處理[M].2版.西安:西安電子科技大學出版社,2001:97-103.
[3] 樊昌信,張甫翊,徐炳祥,等.通信原理[M].5版.北京:國防工業出版社,2001:63-187.