MATLAB有強大的音頻處理函數和強大的數據處理功能,能夠方便地產生各種波形的數據數組,同時通過音頻處理函數又可以很方便的將數據數組傳遞給聲音設備,并以特定的采樣頻率和傳輸比特位由聲卡輸出。本文以MATLAB6.5版和Waveterminal 192L聲卡為例,介紹了實現T型波信號發生器的方法。 在進行通訊和DSP等試驗過程中,信號源是不可缺少的一個工具,很多設備是使用信號源來模擬檢測實際目標,來驗證設備的功能及可靠性。通常,對于研制單一產品的廠家來說,需要某一固定的信號源即可,在市場上也可以找到性價比合適的產品。但對于某些開發人員來說,單一的信號源遠遠滿足不了要求,他們可能需要各種頻率、各種包絡和精度的信號源來驗證設計的可靠性。設計者通常很難找到完全符合要求的產品,而且價格一般也極為昂貴。此外,大多數信號源可能用一兩天,從而造成極大的浪費。因此,自己研制出符合要求、高性價比的信號源成為很多廠家的選擇。 使用硬件也可以完成過數字信號源的設計,其實現的大致思路是:先分析信號源的波形,對波形的一周期數據進行采樣,存儲到ROM中,再使用可編程邏輯器件對采樣數據進行重復讀取、A/D轉換、濾波、放大;如想監測信號質量,對輸出進行A/D轉換,反饋到可編程邏輯器件進行分析、顯示和校正。很多工程師會選擇這樣的設計思路,所得波形具有可靠性高、易于實現和精度高的優點。然而,是從選擇思路、繪制原理圖、設計電路板、制版、編程、調試和更改的整個設計周期可能達2、3個月之久,而用MATLAB和聲卡去實現則更方便有效。 設計思路和軟件實現方法 聲卡是將音頻輸入數據轉換為立體聲輸出的一種設備,輸入信號同時也設定了聲卡的采樣頻率和采樣位數,普通聲卡采樣頻率通常可選值為8,000Hz、11,000Hz、16,000Hz、22,000Hz和44,100Hz,而高性能的專業聲卡的A/D采樣頻率最高可達96,000Hz,D/A轉換頻率最高可達192,000Hz。聲卡的采樣頻率可以通過專業軟件來進行更改和設置的。聲卡輸出位數為固定值,包括8位、16位和24位,這個參數標志聲卡進行D/A轉換時的轉換精度,但要使輸出信號更接近理想值,還需要高采樣頻率來做保障。 由于輸出是一個T形波信號,具有一定的周期,在T形波以外輸出零電平,因此界面設計(見圖1)中應包括:中心頻率、T形波上升段、平穩段、下降段時間間隔,T形波信號周期、采樣頻率的選擇或輸入/輸出信號位數的選擇,以及信號發送、演示、清除、發送暫停、繼續和退出系統。其實還有很多軟件可以對音頻文件進行播放,因此又增加了一個按鈕用于產生音頻文件。將信號參數輸入完全后,可以通過信號演示按鈕對波形進行查看。對數據進行修改時,可先用信號清除按鈕清空數據,或直接對數據進行修改,對信號發送暫停或繼續也可進行控制。 a. 音頻數據的產生方法 在應用界面中,共設置了中心頻率、T形波上升段、平穩段、下降段時間間隔、T形波信號周期、采樣頻率和傳輸位共七個參數源,通過MATLAB強大的計算函數將其轉換成聲卡所能接受的音頻數據向量、D/A采樣頻率以及數據向量的寬度。 Vs:一周期信號數據向量 Vup:上升段信號數據向量, Vstb:平穩段信號數據向量, Vdown:下降段信號數據向量; Vs=[Vup,Vstb,Vdown] Vup=sin(w×Pup), Vstb=sin(w×Pstb), Vdown=sin(w×Pdown), w=2×3.1416×f。 Pup:上升段信號采樣點, Pstb:平穩段信號采樣點, Pdown:下降段信號采樣點。 w:輸出信號的角頻率, f:輸出信號頻率,由應用界面取得。 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,為采樣頻率的倒數,中括號及內部數據表示由起始時間到結束時間以point為間隔而產生的數據向量,Pt為采樣時間點。 b. 對T型波信號進行演示和信號清除 這兩個功能分別由信號演示和信號清除兩個按鈕來完成,信號演示的實現方法是將采樣時間點一周期信號數據向量使用plot函數,以二維圖形的形式將信號顯示在坐標軸上。坐標軸設置為自動調節,圖形界面設置為系統菜單模式,這樣可以方便對信號進行編輯、縮放和其它管理。信號清除只是在回調子函數中將中心頻率、T形波上升段、平穩段、下降段時間間隔和T形波信號周期這5個文本框清零,并對坐標軸進行一個缺省設置,因此所顯示的信號在座標軸中就會消失。 c. 對T型波信號進行發送、暫停和繼續控制 信號發送是采用MATLAB“sound”函數,該函數的輸入參量是音頻數據向量、采樣頻率和轉換位數,數據產生方法如上所述。由于信號是連續發送,因此需要使用一個循環對產生的音頻信號向量反復讀取發送,需要注意的是在函數sound后面需要加一個pause(T)語句,T的單位為秒,為一個信號的周期。加該語句是由于MATLAB是連續執行循環段語句的,并不管聲卡是否已執行完一周期信號的D/A轉換。發送暫停和發送繼續是由一個全局變量對信號發送進行控制,當此全局變量為1時,發送繼續,否則發送禁止,但應用此方法的缺點是信號并不能在暫停的時間點繼續發送,而是從新的周期開始重復讀取音頻信號向量。 d. 輸出波形文件和退出系統 這個功能由輸出文件按鈕來完成,是應用MATLAB的wavwrite函數將音頻信號轉換成.wav文件,文件中也包含了采樣頻率和數據寬度選項,增加此項的目的是為了能讓更專業的音頻處理軟件對信號進行分析。通過執行應用程序和MATLAB的退出操作,使用“quit”命令退出系統。采用MATLAB的一點不足就是不能將所有的M文件轉換成能脫離MATLAB而獨立運行的應用程序。 聲卡輸出波形分析 下面采用界面缺省參數輸出信號,即信號周期為29.5kHz,上升段時間為15ms,平穩段時間為70ms,下降段時間為15ms,周期為1s,也可以推算出每周期有900ms是沒有信號輸出。對信號的采樣波形如圖2所示,經過儀器分析,時間誤差可達到小于0.1ms。 對周期信號的傅立葉頻譜分析如圖3所示,信號的能量主要集中在29.5kHz的窄帶范圍內,是符合設計要求的。 信號的信噪比分析:通過對輸出0伏值段分析即可判斷信號信噪比和噪音信號類型,從而找出消除噪音的方法。對噪音波形進行局部放大,可看出此噪音為頻率大于1M的鋸齒波,波形如圖4所示。 聲卡輸出噪音分析 Waveterminal 192L聲卡的輸出信號峰峰值為6V,而噪音信號的峰峰值為40mV,因而信噪比為20log(6000/40)=43.5dB,當數據寬度為8位時,D/A精度為1位;數據寬度為16位時,D/A精度為9位;數據寬度為24位時,D/A精度為17位。而Waveterminal 192L聲卡的信噪比為104位,因此,噪音信號主要為電腦本身、電腦輻射和環境噪音。電腦本身的噪音主要來自于主機電源,聲卡的電源信號取自計算機主板,因此主機電源的噪音會引入聲卡。另外,接收T型波的設備,如被檢驗設備和示波器等,往往就放在主機旁邊,主機的高頻輻射會通過機箱縫隙而形成噪音。環境噪音是最容易被忽視的一個部分,因為這是一個頻率僅有50赫茲的噪音分量,對于低頻輸出信號會有很大的影響。 降低噪音的解決方法 a. 通過消除噪聲源來減小噪音分量 通過上述分析可知,噪音源主要來自于電腦本身、電腦輻射和環境噪音。選擇信噪比較高的主機電源將會對消除噪音源起到重要作用。另外,測試設備再利用信號源時應盡量與主機保持1米以外的距離,以減少電磁輻射對設備的影響。對于環境噪音,當信號頻率與50赫茲相差很大時可以忽略環境噪音對設備的影響,但當信號頻率接近50赫茲時,應對被檢測設備采取適當的屏蔽措施。 b. 采用濾波消除聲卡輸出的噪音 經實驗測定,聲卡輸出的噪音大于1MHz,因此對于29.5kHz的T形波來說,通過濾波可以輕易地將噪音濾掉,同時還應考慮到環境噪音的影響,因此使用帶通濾波器會得到更好的效果。當然,是否采取措施減小噪音,還應根據試驗的要求決定,對于要求特別嚴格的信號源來說,靠MATLAB和聲卡也是難以實現的。 本文小結 采用MATLAB和聲卡來實現信號源,使設計者能快速實現多種方案,對信號源進行采集、分析和處理都帶來了極大的方便。MATLAB有豐富的數據處理函數,可提供任意形式的數據源,同時也有很多音頻處理函數支持聲卡的運行。MATLAB強大的圖形可視化功能可以做出友好的操作界面。使用這種方法實現信號源的不足是受采樣頻率的限制、噪音的影響較大,因此實際應用時還需使用專門的濾波儀器對輸出信號進行處理。所以,用這種方案實現信號源,更適合與對輸出信號質量要求不是很高,又需要在很短時間內得到一種或多種信號源的技術人員。 |