張大為 李建海 劉迪
(海軍航空工程學院控制系,山東煙臺 264001)
信號發生器是在科學研究和工程設計中廣泛應用的一種通用儀器,通常用于電子電路的性能測試和參數測量[1]。傳統的信號發生器是封閉的系統,具有信號輸入、輸出的能力,并有固定的用戶界面,但普遍存在著接口不靈活,系統封閉,功能固定,不易開發、升級、維護等缺陷。虛擬儀器(Virtual Instrument,VI)是二十世紀90年代發展起來的一項新技術,它將計算機與功能化硬件模塊有機結合,用戶可通過圖形界面操作計算機[2]。在虛擬儀器中,圖像和數據采集、分析控制、結果輸出等功能均由軟件完成,硬件僅僅用于解決信號的輸入輸出,體現了 “軟件即儀器”的思想。LabVIEW是由美國國家儀器公司創立的一種功能強大而又靈活的儀器和分析軟件應用開發工具,它提供一系列工具用于數據顯示、用戶界面設計、Web信息發布、報告生成、數據管理及軟件連接。利用 LabVIEW 可以方便快捷地建立自己的虛擬儀器,進行原理研究、設計、測試,并實現儀器系統,極大提高了工作效率[3,4]。本文設計的信號發生器硬件部分采用技術成熟可靠的聲卡作為數據采集設備;軟件部分依托LabVIEW 2009虛擬儀器開發平臺進行功能模塊開發。
信號發生器總體結構如圖1所示。硬件部分采用普通計算機的聲卡作為數據采集設備,軟件部分采用圖形化編程語言LabVIEW。

圖1 虛擬信號發生器的總體結構
虛擬信號發生器產生的波形通過聲卡轉換輸出,經過適當的電壓調節電路,就可作為實驗電路的激勵信號源,同時,實驗電路的輸出信號經過電壓調節后,送入聲卡轉換,再由虛擬示波器分析和顯示。
虛擬示波器采集信號時,信號通過聲卡的Line In輸入;虛擬信號發生器輸出信號時,信號通過聲卡的Line Out輸出。系統中的電壓調節只對超出聲卡電壓范圍的信號進行調節,對于滿足電壓范圍的一般信號則不需調節。
信號采集時,輸入電壓不能太大,一般聲卡接受的上限是1.5 V,若測量大于1.5 V的信號時,需外接信號調理電路,把信號衰減到聲卡的量程范圍之內;信號輸出時,輸出電壓一般較小,若需輸出高于1.5 V的電壓信號時,則需要外接信號調理電路,按比例調整信號。
利用虛擬儀器技術設計開發信號發生器實際是利用采集卡的模擬輸出功能來連續產生由軟件設定好的仿真信號。仿真信號是指按照信號變化規律,采用時間間隔取樣函數值的方法得到的用離散時間序列表示的數字信號,可用于取代實際模擬信號的離散值。
聲卡作為語音信號與計算機的通用接口,其主要功能是經過DSP音效芯片的處理,進行模擬音頻信號和數字信號的轉換,因此,就其功能看,聲卡完全可作為一塊數據采集卡來使用[5]。并且聲卡價格低廉、性能穩定,現在普通計算機上均已集成了聲卡,在教學實驗中以聲卡取代常規的數據采集設備不失為一種很好的選擇,而且LabVIEW中提供了很多用于聲卡操作的函數,所以用聲卡搭建數據采集系統是非常方便的。聲卡主要由聲音控制/處理芯片、功放芯片、聲音輸入/輸出接口三部分組成。其工作流程如圖2所示。聲卡錄音工作流程為:模擬音頻信號經過聲卡前置處理器及A/D轉換后送入緩沖區,通過各種數字信號處理手段對出入緩存區的數據進行處理,完成聲音降噪、音效處理等工作,最后將處理好的數據保存到儲存設備。
聲卡聲音信號回放流程為:把處理好的數據傳送到輸出緩沖區,經由聲卡的D/A轉化,將數字信號轉換成模擬信號,經功率放大送到揚聲器。

圖2 聲卡工作流程
在實際數據采集和信號輸出時,分別選用Line In和Line Out接口,通過3.5 mm音頻插頭將信號從聲卡的Line In接口輸入,從Line Out接口輸出。
本文信號發生器設計中考慮到實驗儀器的實際操作特點,采用了如圖3所示的連續模擬信號輸出機制。首先,創建任務并完成通道配置,然后將初始信號模板寫入要輸出的緩存中,繼而啟動任務開始模擬輸出,接下來進入循環,在循環中繼續生成信號模板并寫入輸出緩存。這樣在硬件設備將緩存數據連續輸出到數模轉換器的同時,程序定時將一段新的信號模板寫入緩存,只要設置合適的緩存大小,就能使寫入和輸出互不干擾,此時,只要保持前后輸入的信號模板連續,輸出信號也即連續。采用此種機制,信號模板無需是整周期的,而且信號參數的改變也不會影響任務的執行。

圖3 虛擬信號發生器信號生成流程圖
LabVIEW圖形化程序設計語言編程簡單、直觀、開發效率高,適用于構建簡單的虛擬儀器,因而選擇LabVIEW作為開發平臺。LabVIEW應用程序稱為VI,每個VI都由程序前面板、框圖程序和圖標連接三部分組成[6]。程序前面板模擬真實儀表的前面板,用于設置輸入數值和觀察輸出量。每塊程序前面板都對應一段框圖程序,框圖程序采用 LabVIEW 圖形編程語言編寫,圖標連接器是調用子程序的接口,利用連線工具即可與其它程序模塊相連.利用框圖程序編輯好三個VI,建成信號發生器圖標、系統圖標、示波器圖標。這樣,實驗時只需調用這幾個圖標,在框圖程序編輯面板上用連線工具連接即可組成虛擬試驗系統。實驗時,首先選擇系統類型和參數,然后在程序前面板上的信號發生器中選擇激勵信號與頻率值,虛擬示波器即可得到輸出波形。
本文設計的軟件程序調用了幾個有關聲卡的重要子VI,具體構造過程如下:
第一,調用Sound Out Configure.vi配置聲卡并開始進行信號的輸出,程序默認設置采樣速率為44.1 kHz,通道數為2,采樣位數為16位,緩存大小為每通道5000個樣本。
第二,循環結束后,調用 Sound Output Write.vi,向緩存中寫入由仿真信號發生模塊產生的仿真信號,在外面加一個While循環,實現連續寫入數據。
第三,循環結束后,調用 Sound output Clear.vi,停止輸出并執行相應的其它操作。
虛擬信號發生器的前面板主要分為三個部分:公共參數設置部分、各類信號參數設置部分和輸出波形顯示部分。
公共參數設置部分可以設置聲卡的采樣參數、采樣速率、采樣位數、輸出通道和緩存區容量,同時實現信號發生器功能的選擇;在公共參數設置部分選擇想要得到的波形,然后在信號參數設置部分對波形參數進行設定;輸出波形顯示部分可以清楚的看到當前輸出信號的理論波形。
系統調試表明,設計的信號發生器可實現如下功能:有標準的正弦波、方波、三角波、鋸齒波波形輸出;有疊加正弦波、高斯白噪聲及各種自定義波形輸出;可以將波形保存在文本文件中;能夠從波形的文本文件中讀出波形并在前面板顯示;可以方便地調整各類波形的參數設置。
以LabView為開發平臺,設計了一種性能良好的虛擬信號發生器。該信號發生器采用聲卡作為數據采集設備,軟件部分依托LabView進行模塊化設計。設計的虛擬信號發生器能出色地完成各種信號的生成功能,充分發揮了虛擬儀器技術在數據采集和信號生成中的優勢,具有結構簡單、操作簡便、擴展性強等優點。
:
[1]陳小橋, 黃恩民, 張雪濱等. 基于單片機與 AD9851的信號發生器[J]. 實驗室研究與探索, 2011, 30 (8):98-102.
[2]黃松嶺, 吳靜. 虛擬儀器設計基礎教程[M]. 北京:清華大學出版社, 2008.
[3]陳永明, 王紅超, 李繼芳等. 基于 LabVIEW 的波形發生器[J]. 電子測量技術, 2006, 29(5): 84-86.
[4]張桐, 陳國順. 精通LabVIEW程序設計[M]. 北京:電子工業出版社, 2008.
[5]肖立, 盧再奇, 付強. 利用聲卡形成正弦波函數發生器[J]. 微處理機, 2003, (3): 54-56.
[6]郭山國, 王國章, 王建軍等. 基于LabVIEW的虛擬信號發生器的設計研究[J]. 機械工程與自動化,2011, 166(3): 10-11.