用MATLAB和聲卡實(shí)現(xiàn)T型波信號(hào)發(fā)生器
MATLAB有強(qiáng)大的音頻處理函數(shù)和強(qiáng)大的數(shù)據(jù)處理功能,能夠方便地產(chǎn)生各種波形的數(shù)據(jù)數(shù)組,同時(shí)通過(guò)音頻處理函數(shù)又可以很方便的將數(shù)據(jù)數(shù)組傳遞給聲音設(shè)備,并以特定的采樣頻率和傳輸比特位由聲卡輸出。本文以MATLAB6.5版和Waveterminal 192L聲卡為例,介紹了實(shí)現(xiàn)T型波信號(hào)發(fā)生器的方法。
在進(jìn)行通訊和DSP等試驗(yàn)過(guò)程中,信號(hào)源是不可缺少的一個(gè)工具,很多設(shè)備是使用信號(hào)源來(lái)模擬檢測(cè)實(shí)際目標(biāo),來(lái)驗(yàn)證設(shè)備的功能及可靠性。通常,對(duì)于研制單一產(chǎn)品的廠家來(lái)說(shuō),需要某一固定的信號(hào)源即可,在市場(chǎng)上也可以找到性價(jià)比合適的產(chǎn)品。但對(duì)于某些開(kāi)發(fā)人員來(lái)說(shuō),單一的信號(hào)源遠(yuǎn)遠(yuǎn)滿足不了要求,他們可能需要各種頻率、各種包絡(luò)和精度的信號(hào)源來(lái)驗(yàn)證設(shè)計(jì)的可靠性。設(shè)計(jì)者通常很難找到完全符合要求的產(chǎn)品,而且價(jià)格一般也極為昂貴。此外,大多數(shù)信號(hào)源可能用一兩天,從而造成極大的浪費(fèi)。因此,自己研制出符合要求、高性價(jià)比的信號(hào)源成為很多廠家的選擇。
使用硬件也可以完成過(guò)數(shù)字信號(hào)源的設(shè)計(jì),其實(shí)現(xiàn)的大致思路是:先分析信號(hào)源的波形,對(duì)波形的一周期數(shù)據(jù)進(jìn)行采樣,存儲(chǔ)到ROM中,再使用可編程邏輯器件對(duì)采樣數(shù)據(jù)進(jìn)行重復(fù)讀取、A/D轉(zhuǎn)換、濾波、放大;如想監(jiān)測(cè)信號(hào)質(zhì)量,對(duì)輸出進(jìn)行A/D轉(zhuǎn)換,反饋到可編程邏輯器件進(jìn)行分析、顯示和校正。很多工程師會(huì)選擇這樣的設(shè)計(jì)思路,所得波形具有可靠性高、易于實(shí)現(xiàn)和精度高的優(yōu)點(diǎn)。然而,是從選擇思路、繪制原理圖、設(shè)計(jì)電路板、制版、編程、調(diào)試和更改的整個(gè)設(shè)計(jì)周期可能達(dá)2、3個(gè)月之久,而用MATLAB和聲卡去實(shí)現(xiàn)則更方便有效。
設(shè)計(jì)思路和軟件實(shí)現(xiàn)方法
聲卡是將音頻輸入數(shù)據(jù)轉(zhuǎn)換為立體聲輸出的一種設(shè)備,輸入信號(hào)同時(shí)也設(shè)定了聲卡的采樣頻率和采樣位數(shù),普通聲卡采樣頻率通??蛇x值為8,000Hz、11,000Hz、16,000Hz、22,000Hz和44,100Hz,而高性能的專業(yè)聲卡的A/D采樣頻率最高可達(dá)96,000Hz,D/A轉(zhuǎn)換頻率最高可達(dá)192,000Hz。聲卡的采樣頻率可以通過(guò)專業(yè)軟件來(lái)進(jìn)行更改和設(shè)置的。聲卡輸出位數(shù)為固定值,包括8位、16位和24位,這個(gè)參數(shù)標(biāo)志聲卡進(jìn)行D/A轉(zhuǎn)換時(shí)的轉(zhuǎn)換精度,但要使輸出信號(hào)更接近理想值,還需要高采樣頻率來(lái)做保障。
由于輸出是一個(gè)T形波信號(hào),具有一定的周期,在T形波以外輸出零電平,因此界面設(shè)計(jì)(見(jiàn)圖1)中應(yīng)包括:中心頻率、T形波上升段、平穩(wěn)段、下降段時(shí)間間隔,T形波信號(hào)周期、采樣頻率的選擇或輸入/輸出信號(hào)位數(shù)的選擇,以及信號(hào)發(fā)送、演示、清除、發(fā)送暫停、繼續(xù)和退出系統(tǒng)。其實(shí)還有很多軟件可以對(duì)音頻文件進(jìn)行播放,因此又增加了一個(gè)按鈕用于產(chǎn)生音頻文件。將信號(hào)參數(shù)輸入完全后,可以通過(guò)信號(hào)演示按鈕對(duì)波形進(jìn)行查看。對(duì)數(shù)據(jù)進(jìn)行修改時(shí),可先用信號(hào)清除按鈕清空數(shù)據(jù),或直接對(duì)數(shù)據(jù)進(jìn)行修改,對(duì)信號(hào)發(fā)送暫停或繼續(xù)也可進(jìn)行控制。
a. 音頻數(shù)據(jù)的產(chǎn)生方法
在應(yīng)用界面中,共設(shè)置了中心頻率、T形波上升段、平穩(wěn)段、下降段時(shí)間間隔、T形波信號(hào)周期、采樣頻率和傳輸位共七個(gè)參數(shù)源,通過(guò)MATLAB強(qiáng)大的計(jì)算函數(shù)將其轉(zhuǎn)換成聲卡所能接受的音頻數(shù)據(jù)向量、D/A采樣頻率以及數(shù)據(jù)向量的寬度。
Vs:一周期信號(hào)數(shù)據(jù)向量
Vup:上升段信號(hào)數(shù)據(jù)向量,
Vstb:平穩(wěn)段信號(hào)數(shù)據(jù)向量,
Vdown:下降段信號(hào)數(shù)據(jù)向量;
Vs=[Vup,Vstb,Vdown]
Vup=sin(w×Pup),
Vstb=sin(w×Pstb),
Vdown=sin(w×Pdown),
w=2×3.1416×f。
Pup:上升段信號(hào)采樣點(diǎn),
Pstb:平穩(wěn)段信號(hào)采樣點(diǎn),
Pdown:下降段信號(hào)采樣點(diǎn)。
w:輸出信號(hào)的角頻率,
f:輸出信號(hào)頻率,由應(yīng)用界面取得。
Pup=[0:point:tup-point]
Pstb=[tup:point:tup+tstb-point]
Pdown=[tup+tstb:point:tup+tstb+tdown-point]
Pt=[Pup,Pstb,Pdown]
point=1/fspl,為采樣頻率的倒數(shù),中括號(hào)及內(nèi)部數(shù)據(jù)表示由起始時(shí)間到結(jié)束時(shí)間以point為間隔而產(chǎn)生的數(shù)據(jù)向量,Pt為采樣時(shí)間點(diǎn)。
b. 對(duì)T型波信號(hào)進(jìn)行演示和信號(hào)清除
這兩個(gè)功能分別由信號(hào)演示和信號(hào)清除兩個(gè)按鈕來(lái)完成,信號(hào)演示的實(shí)現(xiàn)方法是將采樣時(shí)間點(diǎn)一周期信號(hào)數(shù)據(jù)向量使用plot函數(shù),以二維圖形的形式將信號(hào)顯示在坐標(biāo)軸上。坐標(biāo)軸設(shè)置為自動(dòng)調(diào)節(jié),圖形界面設(shè)置為系統(tǒng)菜單模式,這樣可以方便對(duì)信號(hào)進(jìn)行編輯、縮放和其它管理。信號(hào)清除只是在回調(diào)子函數(shù)中將中心頻率、T形波上升段、平穩(wěn)段、下降段時(shí)間間隔和T形波信號(hào)周期這5個(gè)文本框清零,并對(duì)坐標(biāo)軸進(jìn)行一個(gè)缺省設(shè)置,因此所顯示的信號(hào)在座標(biāo)軸中就會(huì)消失。
c. 對(duì)T型波信號(hào)進(jìn)行發(fā)送、暫停和繼續(xù)控制
信號(hào)發(fā)送是采用MATLAB“sound”函數(shù),該函數(shù)的輸入?yún)⒘渴且纛l數(shù)據(jù)向量、采樣頻率和轉(zhuǎn)換位數(shù),數(shù)據(jù)產(chǎn)生方法如上所述。由于信號(hào)是連續(xù)發(fā)送,因此需要使用一個(gè)循環(huán)對(duì)產(chǎn)生的音頻信號(hào)向量反復(fù)讀取發(fā)送,需要注意的是在函數(shù)sound后面需要加一個(gè)pause(T)語(yǔ)句,T的單位為秒,為一個(gè)信號(hào)的周期。加該語(yǔ)句是由于MATLAB是連續(xù)執(zhí)行循環(huán)段語(yǔ)句的,并不管聲卡是否已執(zhí)行完一周期信號(hào)的D/A轉(zhuǎn)換。發(fā)送暫停和發(fā)送繼續(xù)是由一個(gè)全局變量對(duì)信號(hào)發(fā)送進(jìn)行控制,當(dāng)此全局變量為1時(shí),發(fā)送繼續(xù),否則發(fā)送禁止,但應(yīng)用此方法的缺點(diǎn)是信號(hào)并不能在暫停的時(shí)間點(diǎn)繼續(xù)發(fā)送,而是從新的周期開(kāi)始重復(fù)讀取音頻信號(hào)向量。
d. 輸出波形文件和退出系統(tǒng)
這個(gè)功能由輸出文件按鈕來(lái)完成,是應(yīng)用MATLAB的wavwrite函數(shù)將音頻信號(hào)轉(zhuǎn)換成.wav文件,文件中也包含了采樣頻率和數(shù)據(jù)寬度選項(xiàng),增加此項(xiàng)的目的是為了能讓更專業(yè)的音頻處理軟件對(duì)信號(hào)進(jìn)行分析。通過(guò)執(zhí)行應(yīng)用程序和MATLAB的退出操作,使用“quit”命令退出系統(tǒng)。采用MATLAB的一點(diǎn)不足就是不能將所有的M文件轉(zhuǎn)換成能脫離MATLAB而獨(dú)立運(yùn)行的應(yīng)用程序。
聲卡輸出波形分析
下面采用界面缺省參數(shù)輸出信號(hào),即信號(hào)周期為29.5kHz,上升段時(shí)間為15ms,平穩(wěn)段時(shí)間為70ms,下降段時(shí)間為15ms,周期為1s,也可以推算出每周期有900ms是沒(méi)有信號(hào)輸出。對(duì)信號(hào)的采樣波形如圖2所示,經(jīng)過(guò)儀器分析,時(shí)間誤差可達(dá)到小于0.1ms。
對(duì)周期信號(hào)的傅立葉頻譜分析如圖3所示,信號(hào)的能量主要集中在29.5kHz的窄帶范圍內(nèi),是符合設(shè)計(jì)要求的。
信號(hào)的信噪比分析:通過(guò)對(duì)輸出0伏值段分析即可判斷信號(hào)信噪比和噪音信號(hào)類型,從而找出消除噪音的方法。對(duì)噪音波形進(jìn)行局部放大,可看出此噪音為頻率大于1M的鋸齒波,波形如圖4所示。
聲卡輸出噪音分析
Waveterminal 192L聲卡的輸出信號(hào)峰峰值為6V,而噪音信號(hào)的峰峰值為40mV,因而信噪比為20log(6000/40)=43.5dB,當(dāng)數(shù)據(jù)寬度為8位時(shí),D/A精度為1位;數(shù)據(jù)寬度為16位時(shí),D/A精度為9位;數(shù)據(jù)寬度為24位時(shí),D/A精度為17位。而Waveterminal 192L聲卡的信噪比為104位,因此,噪音信號(hào)主要為電腦本身、電腦輻射和環(huán)境噪音。電腦本身的噪音主要來(lái)自于主機(jī)電源,聲卡的電源信號(hào)取自計(jì)算機(jī)主板,因此主機(jī)電源的噪音會(huì)引入聲卡。另外,接收T型波的設(shè)備,如被檢驗(yàn)設(shè)備和示波器等,往往就放在主機(jī)旁邊,主機(jī)的高頻輻射會(huì)通過(guò)機(jī)箱縫隙而形成噪音。環(huán)境噪音是最容易被忽視的一個(gè)部分,因?yàn)檫@是一個(gè)頻率僅有50赫茲的噪音分量,對(duì)于低頻輸出信號(hào)會(huì)有很大的影響。
降低噪音的解決方法
a. 通過(guò)消除噪聲源來(lái)減小噪音分量
通過(guò)上述分析可知,噪音源主要來(lái)自于電腦本身、電腦輻射和環(huán)境噪音。選擇信噪比較高的主機(jī)電源將會(huì)對(duì)消除噪音源起到重要作用。另外,測(cè)試設(shè)備再利用信號(hào)源時(shí)應(yīng)盡量與主機(jī)保持1米以外的距離,以減少電磁輻射對(duì)設(shè)備的影響。對(duì)于環(huán)境噪音,當(dāng)信號(hào)頻率與50赫茲相差很大時(shí)可以忽略環(huán)境噪音對(duì)設(shè)備的影響,但當(dāng)信號(hào)頻率接近50赫茲時(shí),應(yīng)對(duì)被檢測(cè)設(shè)備采取適當(dāng)?shù)钠帘未胧?
b. 采用濾波消除聲卡輸出的噪音
經(jīng)實(shí)驗(yàn)測(cè)定,聲卡輸出的噪音大于1MHz,因此對(duì)于29.5kHz的T形波來(lái)說(shuō),通過(guò)濾波可以輕易地將噪音濾掉,同時(shí)還應(yīng)考慮到環(huán)境噪音的影響,因此使用帶通濾波器會(huì)得到更好的效果。當(dāng)然,是否采取措施減小噪音,還應(yīng)根據(jù)試驗(yàn)的要求決定,對(duì)于要求特別嚴(yán)格的信號(hào)源來(lái)說(shuō),靠MATLAB和聲卡也是難以實(shí)現(xiàn)的。
本文小結(jié)
采用MATLAB和聲卡來(lái)實(shí)現(xiàn)信號(hào)源,使設(shè)計(jì)者能快速實(shí)現(xiàn)多種方案,對(duì)信號(hào)源進(jìn)行采集、分析和處理都帶來(lái)了極大的方便。MATLAB有豐富的數(shù)據(jù)處理函數(shù),可提供任意形式的數(shù)據(jù)源,同時(shí)也有很多音頻處理函數(shù)支持聲卡的運(yùn)行。MATLAB強(qiáng)大的圖形可視化功能可以做出友好的操作界面。使用這種方法實(shí)現(xiàn)信號(hào)源的不足是受采樣頻率的限制、噪音的影響較大,因此實(shí)際應(yīng)用時(shí)還需使用專門(mén)的濾波儀器對(duì)輸出信號(hào)進(jìn)行處理。所以,用這種方案實(shí)現(xiàn)信號(hào)源,更適合與對(duì)輸出信號(hào)質(zhì)量要求不是很高,又需要在很短時(shí)間內(nèi)得到一種或多種信號(hào)源的技術(shù)人員。
參考文獻(xiàn):
【1】 Shi Xiaohong, Zhou Jia, master GUI graph interface, Peking univ. press,2003.
【2】 Xue Dingyu, Chen Yangquan, System Simulation technology and application based on MATLAB/simulink, Tsinghua press, 2002.
【3】 Fan Yingle, Yang Shengtian, Li Tie, simulink application in detail of MATLAB, people's post-electronics press,2001.
【4】 James R.Armstrong F.Gail Gray,VHDL Design representation and Synthesis(Second Edition),China Machine Press,2002.
【5】 Hou Boting, Gu Xin,VHDL program and digital logic electronics design, XiAn electeonics science institute,1997.
模擬信號(hào)相關(guān)文章:什么是模擬信號(hào)
負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理 離子色譜儀相關(guān)文章:離子色譜儀原理
評(píng)論