專利名稱:使用軟件仿真信號(hào)產(chǎn)生器的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及使用軟件仿真信號(hào)產(chǎn)生器的方法。
在實(shí)際應(yīng)用中,我們會(huì)需要對(duì)聲卡進(jìn)行測試,除了使用普通的聲音檔案的外,我們還可能會(huì)用到信號(hào)產(chǎn)生器發(fā)出不同頻率的信號(hào)進(jìn)行采集。在以往的測試中,有兩種解決方案方案一通過對(duì)底層硬件設(shè)備FM發(fā)聲器的控制,讓其發(fā)出不同頻率的信號(hào)。有以下缺陷(1)這種方法適用在DOS程序下使用,在Windows中若達(dá)到對(duì)底層暫存器的各種控制是相當(dāng)復(fù)雜的,要知道很多硬件的性能以及操控各種驅(qū)動(dòng)程序(driver)。(2)當(dāng)硬件有變化時(shí)還要做出相應(yīng)的控制變更,不僅復(fù)雜還容易出錯(cuò)。
方案二也可以采用外接信號(hào)產(chǎn)生器的方法,但缺陷是這種方法無疑增加了成本。
為了解決上述問題,本發(fā)明的目的即在提供一種使用軟件發(fā)出不同頻率信號(hào)的方法,簡化了對(duì)硬件的操作,無須使用任何外接設(shè)備,同時(shí)達(dá)到了同等的測試聲卡的效果。
因此,本發(fā)明提供一種在Windows操作系統(tǒng)上的使用軟件仿真信號(hào)產(chǎn)生器的方法,解決在Windows下不能對(duì)底層暫存器的進(jìn)行各種控制和操作的問題,而全部由軟件實(shí)現(xiàn)對(duì)正弦波經(jīng)過調(diào)制產(chǎn)生出不同頻率的正弦波。簡化對(duì)硬件的操作,降低測試成本。
根據(jù)本發(fā)明,一種使用軟件仿真信號(hào)產(chǎn)生器的方法,適用于一計(jì)算機(jī)視窗操作系統(tǒng)中,其中該計(jì)算機(jī)具有至少一個(gè)儲(chǔ)存設(shè)備,該方法包括以下步驟取得用戶設(shè)定的所播放聲音數(shù)據(jù)的頻率和振幅;將此頻率和振幅傳給一初始化模塊;根據(jù)此初始化模塊將此頻率和振幅初始化以得到一初始化聲音數(shù)據(jù);以及調(diào)用一播放模塊以播放此初始化聲音數(shù)據(jù)。
以下就圖式說明本發(fā)明的實(shí)施例。
圖式簡單說明
圖1A至1C示出本發(fā)明的仿真信號(hào)產(chǎn)生器的取樣工作原理。
圖2示出播放模塊的控制流程圖。
圖3示出調(diào)整頻率和振幅模塊的控制流程圖。
實(shí)施例本發(fā)明是一種在Windows操作系統(tǒng)上使用的軟件仿真信號(hào)產(chǎn)生器的方法,其目的是解決在Windows下不能對(duì)底層暫存器的進(jìn)行各種控制和操作的問題,而全部由軟件實(shí)現(xiàn)對(duì)正弦波經(jīng)過調(diào)制產(chǎn)生出不同頻率的正弦波。
本發(fā)明的實(shí)現(xiàn)主要由三個(gè)功能模塊完成(1)初始化模塊于一儲(chǔ)存設(shè)備中開僻一段儲(chǔ)存空間,并對(duì)這段儲(chǔ)存空間依據(jù)傅立葉公式給定一初始值;(2)播放模塊播放此初始值;以及(3)調(diào)整頻率和振幅模塊取得用戶設(shè)定的所播放聲音數(shù)據(jù)的頻率和振幅,根據(jù)初始化模塊將該頻率和振幅初始化以得到一初始化聲音數(shù)據(jù),以及調(diào)用播放模塊以播放初始化聲音數(shù)據(jù)。
下面對(duì)各模塊作詳細(xì)說明(1)初始化模塊本發(fā)明的特征為產(chǎn)生信號(hào)。關(guān)鍵是如何進(jìn)行模擬來產(chǎn)生正弦波,產(chǎn)生信號(hào)先需要開僻一段儲(chǔ)存空間,并對(duì)這段儲(chǔ)存空間進(jìn)行初始化,即對(duì)每個(gè)儲(chǔ)存空間依據(jù)傅立葉公式給定初始值。在使用信號(hào)模擬一個(gè)理想的聲音信號(hào)之前,設(shè)想這個(gè)聲音信號(hào)已存在,而是對(duì)這個(gè)聲音信號(hào)取樣,使用傅立葉公式X*(t)=Xa(t)P6(t)=∑Xa(nT)6(t-nT),(n從負(fù)無窮大到正無窮大)來進(jìn)行取樣。
F(t)=Ao/2+∑(AnSinα Cosnωt+AnCosα Sinnωt),(n>=1)X即為所要產(chǎn)生波形的頻率,取樣周期為T=2π/ω,α為初相位,ω是角頻率,t為采樣時(shí)間。假設(shè)開僻了2K的空間,則n從1到2K,采樣周期為π,振幅為A,假設(shè)初相位為0,如果以11025Hz采樣,而聲音的頻率為100Hz,振幅為1000,把這些數(shù)據(jù)帶到公式里,這2K空間的值即為F(t)=1000*Sin(n2π*100/11025)0<n<2K。
假設(shè)要仿真從20-1000Hz的信號(hào),依據(jù)取樣定律,取樣頻率應(yīng)比信號(hào)的頻率至少要兩倍大,采樣數(shù)據(jù)越多,才能達(dá)到越接近原信號(hào),而不失真,所以取樣頻率可以設(shè)為22050Hz。
取樣的工作原理如第1A至1C圖所示,第1A圖系顯示有一理想的信號(hào),第1B圖系顯示對(duì)第1A圖的信號(hào)取樣,第1C圖系顯示將第1B圖的取樣點(diǎn)連接起來,由圖中可以看出其與第1A圖的理想的信號(hào)波形很相似。
(2)播放模塊請(qǐng)參閱圖2,對(duì)聲卡進(jìn)行一系列操作,取得聲卡設(shè)備,打開設(shè)備,準(zhǔn)備播放已初始化完畢的數(shù)據(jù),開始播放,播放完畢后關(guān)閉設(shè)備。其流程如下(201)開始;(202)取得一放音設(shè)備;(203)取得一聲卡容量;(204)設(shè)定一播放的格式;(205)打開一聲音設(shè)備,取消靜音,設(shè)定播放音量;(206)把所要播放的聲音數(shù)據(jù)傳給一播放設(shè)備;(207)播放聲音數(shù)據(jù);(208)關(guān)閉該播放設(shè)備,還原該聲卡;(209)結(jié)束。
(3)調(diào)整頻率和振幅模塊請(qǐng)參閱圖3,按照(2)的操作播放出的是單調(diào)的按一定頻率和振幅的聲音,如果改變頻率,聲調(diào)就會(huì)變化,如果改變振幅,音量亦會(huì)變化。其流程如下(301)開始;(302)取得用戶設(shè)定的所播放聲音數(shù)據(jù)的頻率和振幅;(303)將該頻率和振幅傳給初始化模塊;(304)根據(jù)初始化模塊將該頻率和振幅帶到傅立葉公式中以得到一初始化聲音數(shù)據(jù);(305)調(diào)用播放模塊以播放該初始化聲音數(shù)據(jù);(306)結(jié)束。
本發(fā)明在使用軟件的方法模擬出各種頻率的信號(hào),相對(duì)于使用信號(hào)產(chǎn)生器要操作簡要,僅在程序內(nèi)部完成發(fā)信號(hào),收信號(hào),改變信號(hào)頻率等一系列的動(dòng)作,同時(shí)成本低。較佳實(shí)施例發(fā)明的具體實(shí)施例本發(fā)明的應(yīng)用實(shí)例對(duì)聲卡的噪音測試原理在對(duì)聲卡的噪音測試時(shí),需要對(duì)從聲卡出發(fā)的聲音再通過聲卡錄回來,用訊噪比公式取得db值,通過對(duì)db值的分析可以辨別聲卡中噪音影響是否嚴(yán)重。其實(shí)施步驟如后首先,給仿真信號(hào)產(chǎn)生器傳遞信號(hào)撥發(fā)的頻率和振幅;接著,打開錄音程序進(jìn)行錄音;其次,使用仿真信號(hào)產(chǎn)生器進(jìn)行發(fā)聲;之后,關(guān)閉錄音程序及仿真信號(hào)產(chǎn)生器;最后,把所錄音的數(shù)據(jù)與仿真信號(hào)產(chǎn)生器的數(shù)據(jù)進(jìn)行比較。由數(shù)據(jù)的比較結(jié)果可得出聲卡的失真度。
具體說明如下(1)噪音數(shù)據(jù)當(dāng)沒有任何聲音播放時(shí)進(jìn)行錄音,錄下2K個(gè)數(shù)據(jù)。而這些數(shù)據(jù)就是聲卡內(nèi)部各個(gè)硬件在工作時(shí)產(chǎn)生的噪音。為了防止能量的損失過多,使用一根回線連在播放和錄音的兩個(gè)插槽上。
(2)數(shù)據(jù)采集在聲音信號(hào)播放之前,還需要做數(shù)據(jù)采集的準(zhǔn)備工作。打開錄音設(shè)備,并取消靜音設(shè)置,準(zhǔn)備進(jìn)行錄音,并準(zhǔn)備2K的內(nèi)存空間放置錄音數(shù)據(jù)。
(3)聲音數(shù)據(jù)在開始播放之前需要對(duì)音量控制進(jìn)行設(shè)置。音量設(shè)為最大值65535,取消音量控制和wave中的靜音設(shè)置。然后確定播放的聲音數(shù)據(jù)。為求得準(zhǔn)確,一般的多選擇幾種頻率進(jìn)行測試。播放一段100Hz,200Hz,400Hz,800Hz到1600Hz的五種頻率的聲音。(這一般是正常人能聽到的聲音),振幅值均設(shè)為32000。這幾種聲音是根據(jù)取樣公式取不同的值而產(chǎn)生的·分五次調(diào)用信號(hào)產(chǎn)生器播放。
(4)信號(hào)播完,關(guān)閉錄音設(shè)備,還原錄音設(shè)置,關(guān)閉放音設(shè)備,還原放音設(shè)置。把錄音的每個(gè)數(shù)據(jù)值求平方,即可以看作是聲音信號(hào)在這一點(diǎn)上的功率值,因?yàn)橥活l率的信號(hào)錄有2K個(gè)點(diǎn),求出這2K個(gè)點(diǎn)的平均功率值。這是聲音信號(hào)的處理,與此一樣處理噪音信號(hào)。運(yùn)用訊噪比公式db=10Log(wi/wo)wi即為信號(hào)的功率,wo即為噪音的功率。將五組不同頻率的平均功率與噪音功率進(jìn)行比值,求得五個(gè)db值。在實(shí)踐中已經(jīng)證實(shí),如果db值在10以上,視聲卡中的噪音影響不大,可以忽略不計(jì)。
雖然本發(fā)明已以較佳實(shí)施例公開如上,但并非用以限定本發(fā)明,本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi)當(dāng)可作出多種修改,因此本發(fā)明的保護(hù)范圍當(dāng)視后附的權(quán)利要求書所界定者為準(zhǔn)。
權(quán)利要求
1.一種使用軟件仿真信號(hào)產(chǎn)生器的方法,適用于一計(jì)算機(jī)視窗操作系統(tǒng),其中該計(jì)算機(jī)具有至少一個(gè)儲(chǔ)存設(shè)備,該方法包括以下步驟取得用戶設(shè)定的所播放聲音數(shù)據(jù)的頻率和振幅;將該頻率和振幅傳給一初始化模塊;根據(jù)該初始化模塊將該頻率和振幅初始化以得到一初始化聲音數(shù)據(jù);以及調(diào)用一播放模塊以播放該初始化聲音數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其中,該初始化模塊的執(zhí)行步驟包括在該至少一個(gè)儲(chǔ)存設(shè)備中開僻一段儲(chǔ)存空間;以及對(duì)該段儲(chǔ)存空間依據(jù)傅立葉公式給定一初始值。
3.如權(quán)利要求1所述的方法,其中,該播放模塊的執(zhí)行步驟包括取得一放音設(shè)備;取得一聲卡容量;設(shè)定一播放的格式;打開一聲音設(shè)備,取消靜音,設(shè)定播放音量;把所要播放的聲音數(shù)據(jù)傳給一播放設(shè)備;播放該聲音數(shù)據(jù);以及關(guān)閉該播放設(shè)備,還原該聲卡。
4.一種軟件仿真信號(hào)產(chǎn)生器,適用于一計(jì)算機(jī)視窗操作系統(tǒng)中,其中該計(jì)算機(jī)具有至少一個(gè)儲(chǔ)存設(shè)備,該軟件仿真信號(hào)產(chǎn)生器,包括一調(diào)整頻率和振幅模塊,取得用戶設(shè)定的所播放聲音數(shù)據(jù)的頻率和振幅;一初始化模塊,將該頻率和振幅初始化以得到一初始化聲音數(shù)據(jù);以及一播放模塊,播放該該初始化聲音數(shù)據(jù)。
5.如權(quán)利要求4所述的軟件仿真信號(hào)產(chǎn)生器,其中,該調(diào)整頻率和振幅模塊的執(zhí)行步驟包括取得用戶設(shè)定的所播放聲音數(shù)據(jù)的頻率和振幅;將該頻率和振幅傳給該初始化模塊;根據(jù)該初始化模塊將該頻率和振幅帶到傅立葉公式中以得到一初始化聲音數(shù)據(jù);以及調(diào)用該播放模塊以播放該初始化聲音數(shù)據(jù)。
6.如權(quán)利要求4所述的軟件仿真信號(hào)產(chǎn)生器,其中,該初始化模塊的執(zhí)行步驟包括于該至少一個(gè)儲(chǔ)存設(shè)備中開僻一段儲(chǔ)存空間;以及對(duì)該段儲(chǔ)存空間依據(jù)傅立葉公式給定一初始值。
7.如權(quán)利要求4所述的軟件仿真信號(hào)產(chǎn)生器,其中,該播放模塊的執(zhí)行步驟包括取得一放音設(shè)備;取得一聲卡容量;設(shè)定一播放的格式;打開一聲音設(shè)備,取消靜音,設(shè)定播放音量;把所要播放的聲音數(shù)據(jù)傳給一播放設(shè)備;播放該聲音數(shù)據(jù);以及關(guān)閉該播放設(shè)備,還原該聲卡。
全文摘要
本發(fā)明提供一種使用軟件仿真信號(hào)產(chǎn)生器的方法,適用于一計(jì)算機(jī)視窗操作系統(tǒng)中,其中該計(jì)算機(jī)具有至少一個(gè)儲(chǔ)存設(shè)備,該方法包括以下步驟:取得用戶設(shè)定的所播放聲音數(shù)據(jù)的頻率和振幅;將此頻率和振幅傳給一初始化模塊;根據(jù)此初始化模塊將此頻率和振幅初始化以得到一初始化聲音數(shù)據(jù);以及調(diào)用一播放模塊以播放此初始化聲音數(shù)據(jù)。
文檔編號(hào)G06F9/455GK1369786SQ0110298
公開日2002年9月18日 申請(qǐng)日期2001年2月12日 優(yōu)先權(quán)日2001年2月12日
發(fā)明者李嘩, 陳玄同, 林光信 申請(qǐng)人:英業(yè)達(dá)股份有限公司