張光成 陳 娟 魯曉東
浙江海洋學院 浙江舟山 316000
Matlab環境下用聲卡產生特殊波形
張光成 陳 娟 魯曉東
浙江海洋學院 浙江舟山 316000
介紹了一種在Matlab環境下利用虛擬儀器技術實現聲卡產生特殊波形的方法。該方法以手繪波形或數學圖形為信號數據源,通過調用Matlab DAQ工具控制聲卡D/A轉換器,實現了聲卡在音頻范圍內波形信號的輸出。
虛擬儀器;特殊波形;聲卡;Matlab
1.1 聲卡工作原理
從功能上看,聲卡是一塊完整的音頻數據采集卡,其中模數變換器ADC(Analogue Digital Converter)用于采集音頻信號,數模變換器DAC(Digital Analogue Converter)則負責將數字信號轉換為能被喇叭等設備所使用的模擬信號。由于D/A在轉換時需要一個數據鎖存的過程,使得輸出信號呈階梯形變化。D/A轉換位數、速率越高,階梯效應就不明顯,信號的平滑度就越好。
聲卡在工作時是用DMA方式進行數據傳送的,即先把采集到的數據送到緩沖區,然后將緩沖區的數據整塊讀出來,所以必須預先設置采樣率、數據格式、緩沖區長度等參數,之后就不需要CPU的參與,因此具有較高的工作效率。
1.2 軟件控制原理
虛擬儀器技術是通過計算機軟件控制硬件進行工作的。軟件首先要完成對波形數據的采集,借助Matlab的數據處理函數,使要輸出的任意信號圖形轉換為數據序列,并根據聲卡采樣率裝配成幀,即1秒內的數據,若信號的頻率為f,則要保證1幀內有f個波形,但幀內數據量保持不變;其次是對聲卡的控制,Matlab很多音頻處理函數支持聲卡的運行,其控制的方法是面向對象的,主要完成聲卡的參數設置、信號輸出和停止結束任務。
(1)波形數據的導入
波形可以通過手繪或繪圖軟件描繪,并以圖片文件格式保存,需要時可以隨時調入內存,然后提取圖片中的波形數據。數據提取算法如圖1所示,具體實現可以描述為:①讀入圖片文件到內存;②轉為灰度格式;③計算波形數據,設圖形如圖2所示共M行,則第k列m行位置數據點的波形數據為:
依據美國心臟協會給出的15段分段法實施評估,閉塞即為達到100%狹窄程度;重度狹窄即為處于75至100%之間的狹窄程度;中度狹窄即為處于50至75%之間的狹窄程度;輕度狹窄即為低于50%的狹窄程度;無狹窄即為不存在狹窄程度。

圖1 波形數據的提取

圖2 波形采樣

所要注意的是:圖片中曲線數據的像素點數必須足夠聲卡每次的采樣,若不夠則必須通過插值運算補足。對于超過一次采樣的量,則可以繼續作均勻間隔的抽取。此過程Matlab的控制語句:


(2)聲卡控制
Matlab對外設操作時先建立設備對象,再操作對象的屬性或方法。控制的方法實際是調用軟件工具箱提供的聲卡控制函數,設計者要根據實際情況設置函數所需參數,便能有效地控制聲卡的工作狀態,操作時比其他編程軟件更加簡單。
創建一個設備對象,'winsound’是指聲卡
ao=analogoutput('winsound');
在對象中創建或增加一個信號通道,由于聲卡只有左右2個通道,所以最多可以增加到2個通道
chan=addchannel(ao,1);
設置采樣頻率,即每秒向D/A轉換器發送的數據量Fs=44100;
set(ao,'SampleRate', Fs);
要保證信號的連續性,要不停地發送數據,這兒可以設置為無限次
set(ao,'RepeatOutput',inf);輸出數據操作的函數putdata(ao,yout);
當完成輸出數據操作后,并沒有真正輸出數據,必須啟動聲卡,才能對外輸出信號,啟動并觸發聲卡設備操作的命令如下:
start(ao);
信號輸出完成后,聲卡設備仍然保留在計算機系統中,若不將聲卡設備停止并刪除,計算機系統中仍會保留該設備,在下次啟動虛擬信號發生器系統時將會發出聲卡設備仍然在使用的錯誤信息。從系統中停止和刪除聲卡設備操作的命令分別如下:

2.1 系統結構
由于系統的功能可由軟件實現,使系統的硬件構架得到很大的簡化(如圖3所示)。根據要實現的功能,確定幾種產生波形數據的方式,例如可由函數生成的正弦波、方波等和由圖像產生的自定義波形。為了平滑輸出的波形,一般在輸出端接一個濾波器,最簡單的就是使用一個RC電路。

2.2 軟件設計
由于M a t l a b為用戶提供了一個界面開發環境(GUIDE),使得圖形界面的創建變得簡單。用戶通過一系列用戶控件來實現用戶與應用程序的交互。信號發生系統的功能設計如圖4所示,由下拉框選擇不同波形,custom項表示用戶選擇自定義的任意波形。滑動桿用于調節信號的頻率(Frequency)、幅度(AMP)和占空比(Duty),同時用一個AXES控件顯示要描述的波形,確定后用一個Command按鈕啟動聲卡D/A轉換。

圖4 波形交互界面
先測試系統的各項功能,外部導入一幅Marr小波波形圖如圖5(a)所示,示波器上顯示結果如圖5(b)所示,調節系統界面上的頻率和幅度,示波器上的圖形也隨之變化。為了觀察聲卡的音頻輸出特性,輸入選擇4kHz方波,在沒有濾波器的情況下,示波器上顯示如圖5(c)所示,信號存在明顯的階梯狀。連接RC低通濾波器,選R=1k,C=0.01uF,經濾波平滑后如圖5(d),但響應信號的邊緣存在明顯的震蕩,這說明信號丟失了較多的高次諧波;由傅里葉分析可知,因周期信號的頻譜是離散的,頻譜的譜線只出現在基頻的整數倍上,當基頻是4000Hz時,5次以上的諧波即超出音頻范圍內的信號都被丟棄,因此造成一定的諧波失真。對于諧波不很豐富的信號在基頻接近10000Hz時,圖形也會嚴重失真。所以若要需要表達出信號的細節,要盡量減小基頻。

圖5 實驗測試結果
虛擬技術的優點在于開發者不需要直接操作硬件,有效地降低了程序開發的復雜性,減小了程序開發的周期。實驗中利用了Matlab強大的數據處理能力簡化了波形數據的產生過程,實現了一些特殊波形的輸出。但要輸出任意的波形,顯然聲卡工作的精度和速度略顯不足,特別是表現一些階躍性的信號,失真較嚴重,這時建議使用專用的數據采集卡。
[1]清華大學電子學教研組.模擬電子技術基礎簡明教程[M].北京:高等教育出版社,1990
[2]劉君華,賈惠芹,丁暉,等.虛擬儀器圖形化語言Labview教程[M].陜西:西安電子科技大學出版社,2003
[3]劉靜宜,丁曉亮,黃瑜.基于Labview平臺的任意波形發生器計算機控制[J].國外電子測量技術,2004,6:33~34
[4]潘亞瓊,李斌.基于PC機聲卡的過程類復雜信號發生器[J].自動化儀表,2005,26(9):14~16
[5]王俊國,王永驥,萬淑蕓.Matlab圖形用戶界面環境下的實時控制系統[J].儀表技術與傳感器,2004,9:27~29
[6]鄭君里,應啟衍,楊為理.信號與系統[M].北京:高等教育出版社,2005
Abstract: A method, with virtual instrument technique, realizing the sound card to generate special waveforms based on Matlab is introduced. According to its data source in hand-drawn waveform graph or mathematic plots, the sound card generates waveforms in audio range by controlling the A/D of sound card with Matlab DAQ.
Key words: virtual instrument; special waveform; sound card; Matlab
Using sound card to generate special waveform on Matlab
Zhang Guangcheng, Chen Juan, Lu Xiaodong
Zhejiang ocean university, Zhoushan, 316000, China
2010-11-08
張光成,在讀本科生。通訊作者:魯曉東,碩士,實驗師。