張光成 陳 娟 魯曉東
浙江海洋學(xué)院 浙江舟山 316000
Matlab環(huán)境下用聲卡產(chǎn)生特殊波形
張光成 陳 娟 魯曉東
浙江海洋學(xué)院 浙江舟山 316000
介紹了一種在Matlab環(huán)境下利用虛擬儀器技術(shù)實(shí)現(xiàn)聲卡產(chǎn)生特殊波形的方法。該方法以手繪波形或數(shù)學(xué)圖形為信號(hào)數(shù)據(jù)源,通過調(diào)用Matlab DAQ工具控制聲卡D/A轉(zhuǎn)換器,實(shí)現(xiàn)了聲卡在音頻范圍內(nèi)波形信號(hào)的輸出。
虛擬儀器;特殊波形;聲卡;Matlab
1.1 聲卡工作原理
從功能上看,聲卡是一塊完整的音頻數(shù)據(jù)采集卡,其中模數(shù)變換器ADC(Analogue Digital Converter)用于采集音頻信號(hào),數(shù)模變換器DAC(Digital Analogue Converter)則負(fù)責(zé)將數(shù)字信號(hào)轉(zhuǎn)換為能被喇叭等設(shè)備所使用的模擬信號(hào)。由于D/A在轉(zhuǎn)換時(shí)需要一個(gè)數(shù)據(jù)鎖存的過程,使得輸出信號(hào)呈階梯形變化。D/A轉(zhuǎn)換位數(shù)、速率越高,階梯效應(yīng)就不明顯,信號(hào)的平滑度就越好。
聲卡在工作時(shí)是用DMA方式進(jìn)行數(shù)據(jù)傳送的,即先把采集到的數(shù)據(jù)送到緩沖區(qū),然后將緩沖區(qū)的數(shù)據(jù)整塊讀出來,所以必須預(yù)先設(shè)置采樣率、數(shù)據(jù)格式、緩沖區(qū)長(zhǎng)度等參數(shù),之后就不需要CPU的參與,因此具有較高的工作效率。
1.2 軟件控制原理
虛擬儀器技術(shù)是通過計(jì)算機(jī)軟件控制硬件進(jìn)行工作的。軟件首先要完成對(duì)波形數(shù)據(jù)的采集,借助Matlab的數(shù)據(jù)處理函數(shù),使要輸出的任意信號(hào)圖形轉(zhuǎn)換為數(shù)據(jù)序列,并根據(jù)聲卡采樣率裝配成幀,即1秒內(nèi)的數(shù)據(jù),若信號(hào)的頻率為f,則要保證1幀內(nèi)有f個(gè)波形,但幀內(nèi)數(shù)據(jù)量保持不變;其次是對(duì)聲卡的控制,Matlab很多音頻處理函數(shù)支持聲卡的運(yùn)行,其控制的方法是面向?qū)ο蟮?,主要完成聲卡的參?shù)設(shè)置、信號(hào)輸出和停止結(jié)束任務(wù)。
(1)波形數(shù)據(jù)的導(dǎo)入
波形可以通過手繪或繪圖軟件描繪,并以圖片文件格式保存,需要時(shí)可以隨時(shí)調(diào)入內(nèi)存,然后提取圖片中的波形數(shù)據(jù)。數(shù)據(jù)提取算法如圖1所示,具體實(shí)現(xiàn)可以描述為:①讀入圖片文件到內(nèi)存;②轉(zhuǎn)為灰度格式;③計(jì)算波形數(shù)據(jù),設(shè)圖形如圖2所示共M行,則第k列m行位置數(shù)據(jù)點(diǎn)的波形數(shù)據(jù)為:
依據(jù)美國(guó)心臟協(xié)會(huì)給出的15段分段法實(shí)施評(píng)估,閉塞即為達(dá)到100%狹窄程度;重度狹窄即為處于75至100%之間的狹窄程度;中度狹窄即為處于50至75%之間的狹窄程度;輕度狹窄即為低于50%的狹窄程度;無狹窄即為不存在狹窄程度。
圖1 波形數(shù)據(jù)的提取
圖2 波形采樣
所要注意的是:圖片中曲線數(shù)據(jù)的像素點(diǎn)數(shù)必須足夠聲卡每次的采樣,若不夠則必須通過插值運(yùn)算補(bǔ)足。對(duì)于超過一次采樣的量,則可以繼續(xù)作均勻間隔的抽取。此過程Matlab的控制語句:
(2)聲卡控制
Matlab對(duì)外設(shè)操作時(shí)先建立設(shè)備對(duì)象,再操作對(duì)象的屬性或方法??刂频姆椒▽?shí)際是調(diào)用軟件工具箱提供的聲卡控制函數(shù),設(shè)計(jì)者要根據(jù)實(shí)際情況設(shè)置函數(shù)所需參數(shù),便能有效地控制聲卡的工作狀態(tài),操作時(shí)比其他編程軟件更加簡(jiǎn)單。
創(chuàng)建一個(gè)設(shè)備對(duì)象,'winsound’是指聲卡
ao=analogoutput('winsound');
在對(duì)象中創(chuàng)建或增加一個(gè)信號(hào)通道,由于聲卡只有左右2個(gè)通道,所以最多可以增加到2個(gè)通道
chan=addchannel(ao,1);
設(shè)置采樣頻率,即每秒向D/A轉(zhuǎn)換器發(fā)送的數(shù)據(jù)量Fs=44100;
set(ao,'SampleRate', Fs);
要保證信號(hào)的連續(xù)性,要不停地發(fā)送數(shù)據(jù),這兒可以設(shè)置為無限次
set(ao,'RepeatOutput',inf);輸出數(shù)據(jù)操作的函數(shù)putdata(ao,yout);
當(dāng)完成輸出數(shù)據(jù)操作后,并沒有真正輸出數(shù)據(jù),必須啟動(dòng)聲卡,才能對(duì)外輸出信號(hào),啟動(dòng)并觸發(fā)聲卡設(shè)備操作的命令如下:
start(ao);
信號(hào)輸出完成后,聲卡設(shè)備仍然保留在計(jì)算機(jī)系統(tǒng)中,若不將聲卡設(shè)備停止并刪除,計(jì)算機(jī)系統(tǒng)中仍會(huì)保留該設(shè)備,在下次啟動(dòng)虛擬信號(hào)發(fā)生器系統(tǒng)時(shí)將會(huì)發(fā)出聲卡設(shè)備仍然在使用的錯(cuò)誤信息。從系統(tǒng)中停止和刪除聲卡設(shè)備操作的命令分別如下:
2.1 系統(tǒng)結(jié)構(gòu)
由于系統(tǒng)的功能可由軟件實(shí)現(xiàn),使系統(tǒng)的硬件構(gòu)架得到很大的簡(jiǎn)化(如圖3所示)。根據(jù)要實(shí)現(xiàn)的功能,確定幾種產(chǎn)生波形數(shù)據(jù)的方式,例如可由函數(shù)生成的正弦波、方波等和由圖像產(chǎn)生的自定義波形。為了平滑輸出的波形,一般在輸出端接一個(gè)濾波器,最簡(jiǎn)單的就是使用一個(gè)RC電路。
2.2 軟件設(shè)計(jì)
由于M a t l a b為用戶提供了一個(gè)界面開發(fā)環(huán)境(GUIDE),使得圖形界面的創(chuàng)建變得簡(jiǎn)單。用戶通過一系列用戶控件來實(shí)現(xiàn)用戶與應(yīng)用程序的交互。信號(hào)發(fā)生系統(tǒng)的功能設(shè)計(jì)如圖4所示,由下拉框選擇不同波形,custom項(xiàng)表示用戶選擇自定義的任意波形。滑動(dòng)桿用于調(diào)節(jié)信號(hào)的頻率(Frequency)、幅度(AMP)和占空比(Duty),同時(shí)用一個(gè)AXES控件顯示要描述的波形,確定后用一個(gè)Command按鈕啟動(dòng)聲卡D/A轉(zhuǎn)換。
圖4 波形交互界面
先測(cè)試系統(tǒng)的各項(xiàng)功能,外部導(dǎo)入一幅Marr小波波形圖如圖5(a)所示,示波器上顯示結(jié)果如圖5(b)所示,調(diào)節(jié)系統(tǒng)界面上的頻率和幅度,示波器上的圖形也隨之變化。為了觀察聲卡的音頻輸出特性,輸入選擇4kHz方波,在沒有濾波器的情況下,示波器上顯示如圖5(c)所示,信號(hào)存在明顯的階梯狀。連接RC低通濾波器,選R=1k,C=0.01uF,經(jīng)濾波平滑后如圖5(d),但響應(yīng)信號(hào)的邊緣存在明顯的震蕩,這說明信號(hào)丟失了較多的高次諧波;由傅里葉分析可知,因周期信號(hào)的頻譜是離散的,頻譜的譜線只出現(xiàn)在基頻的整數(shù)倍上,當(dāng)基頻是4000Hz時(shí),5次以上的諧波即超出音頻范圍內(nèi)的信號(hào)都被丟棄,因此造成一定的諧波失真。對(duì)于諧波不很豐富的信號(hào)在基頻接近10000Hz時(shí),圖形也會(huì)嚴(yán)重失真。所以若要需要表達(dá)出信號(hào)的細(xì)節(jié),要盡量減小基頻。
圖5 實(shí)驗(yàn)測(cè)試結(jié)果
虛擬技術(shù)的優(yōu)點(diǎn)在于開發(fā)者不需要直接操作硬件,有效地降低了程序開發(fā)的復(fù)雜性,減小了程序開發(fā)的周期。實(shí)驗(yàn)中利用了Matlab強(qiáng)大的數(shù)據(jù)處理能力簡(jiǎn)化了波形數(shù)據(jù)的產(chǎn)生過程,實(shí)現(xiàn)了一些特殊波形的輸出。但要輸出任意的波形,顯然聲卡工作的精度和速度略顯不足,特別是表現(xiàn)一些階躍性的信號(hào),失真較嚴(yán)重,這時(shí)建議使用專用的數(shù)據(jù)采集卡。
[1]清華大學(xué)電子學(xué)教研組.模擬電子技術(shù)基礎(chǔ)簡(jiǎn)明教程[M].北京:高等教育出版社,1990
[2]劉君華,賈惠芹,丁暉,等.虛擬儀器圖形化語言Labview教程[M].陜西:西安電子科技大學(xué)出版社,2003
[3]劉靜宜,丁曉亮,黃瑜.基于Labview平臺(tái)的任意波形發(fā)生器計(jì)算機(jī)控制[J].國(guó)外電子測(cè)量技術(shù),2004,6:33~34
[4]潘亞瓊,李斌.基于PC機(jī)聲卡的過程類復(fù)雜信號(hào)發(fā)生器[J].自動(dòng)化儀表,2005,26(9):14~16
[5]王俊國(guó),王永驥,萬淑蕓.Matlab圖形用戶界面環(huán)境下的實(shí)時(shí)控制系統(tǒng)[J].儀表技術(shù)與傳感器,2004,9:27~29
[6]鄭君里,應(yīng)啟衍,楊為理.信號(hào)與系統(tǒng)[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
張光成,在讀本科生。通訊作者:魯曉東,碩士,實(shí)驗(yàn)師。