DSP-DTMF信號(hào)的產(chǎn)生于檢測(cè)概述_第1頁(yè)
DSP-DTMF信號(hào)的產(chǎn)生于檢測(cè)概述_第2頁(yè)
DSP-DTMF信號(hào)的產(chǎn)生于檢測(cè)概述_第3頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

DSP課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告DTMF信號(hào)的產(chǎn)生及檢測(cè)院(系):設(shè)計(jì)人員:黃煒 學(xué)號(hào):07291039成績(jī):工程設(shè)計(jì)50報(bào)告20答辯30總分曹成績(jī):工程設(shè)計(jì)50報(bào)告20答辯30總分評(píng)語(yǔ):日期:--PAGE19-目錄一、設(shè)計(jì)任務(wù)書(shū)… 1二、設(shè)計(jì)內(nèi)容… 5三設(shè)計(jì)方案算法原理說(shuō)明… 10四程序設(shè)計(jì)調(diào)試與結(jié)果分析… 15五設(shè)(安裝與調(diào)試的體會(huì)… 25六參考文獻(xiàn)… 26一、實(shí)驗(yàn)?zāi)康模菏煜CS的編程環(huán)境和基本試驗(yàn)調(diào)試流程和方法;了解并掌握DTMF信號(hào)的產(chǎn)生和檢測(cè)遠(yuǎn)離核試驗(yàn)流程;編寫C語(yǔ)言程序,并在CCS集成開(kāi)發(fā)環(huán)境下調(diào)試通過(guò);熟練使用軟件CCS5000對(duì)程序的完整調(diào)試過(guò)程。二、實(shí)驗(yàn)內(nèi)容:利用DTMF信號(hào)產(chǎn)生的原理合成數(shù)字信號(hào)并分析其時(shí)域波形和頻譜;生成各個(gè)按鍵信號(hào);分析0~9,A~D,*、#幾個(gè)撥號(hào)信息的頻譜,觀察頻譜圖中的峰值點(diǎn)的幅值以及它們出現(xiàn)的位置。根據(jù)譜峰的幅值和位置,識(shí)別各DTMF信號(hào)所對(duì)應(yīng)對(duì)應(yīng)的數(shù)字;編寫Goertzel算法的程序,識(shí)別各DTMF信號(hào)所對(duì)應(yīng)對(duì)應(yīng)的數(shù)字。生成一串撥號(hào)音,例如8位電話號(hào)碼,進(jìn)行識(shí)別;三、實(shí)驗(yàn)原理及程序設(shè)計(jì):1、DTMF(雙音多頻)信號(hào)簡(jiǎn)介雙音多頻DTMF(DualToneMulti—Frequency)信號(hào)在全世界范圍內(nèi)得到廣DTMF(DSP是一項(xiàng)較有價(jià)值的工程應(yīng)用。雙音多頻DTMF(DualToneMulti—Frequency)信DTMFATMDTMF(DSP)的系統(tǒng)中,是一項(xiàng)較有價(jià)值的工程應(yīng)用。CCITT(國(guó)際電報(bào)電話咨詢委員會(huì))建議,國(guó)際上采用697Hz、770Hz852Hz、941Hz、1209Hz、1336Hz、1477Hz、1633Hz12具有16種組合形式,讓其代表數(shù)字和功率,如下圖電話機(jī)鍵盤的頻率矩陣所列。TMS320C52DTMFDTMF號(hào)組成,該雙音頻由按鍵所在的行和列對(duì)應(yīng)的頻率決定(如圖所示)。電話中的雙音多頻信號(hào)(DTMF)DTMF2、DTMFDTMF發(fā)生器基于兩個(gè)二階數(shù)字正弦振蕩器,一個(gè)用于產(chǎn)生行頻,一個(gè)用于DSP需的八種音頻信號(hào)。典型的DTMF700~1700Hz,8000Hz設(shè)x[k]為DTMF信號(hào),產(chǎn)生方式為:x[k]=Asin(Whk)+Bsin(Wlk)式中Wh=2*pi*fh/fsam和Wl2*pi*fl/fsam分別表示高頻和低頻頻率,A、B振蕩器實(shí)現(xiàn)過(guò)程中,首先將每個(gè)頻率的常數(shù)存在一個(gè)表中,用來(lái)初始化給定樣速率.雙音頻中的每一個(gè)音調(diào)之后是同樣長(zhǎng)度的無(wú)音周期,從而可以檢測(cè)到按鍵的釋放。CCITT對(duì)DTMF/接收率為每秒10字100ms55ms100ms他時(shí)間為靜音(無(wú)信號(hào)),以便區(qū)別連續(xù)的兩個(gè)按鍵信號(hào)。下圖為DTMF頻率及其對(duì)應(yīng)的鍵值3、DTMF信號(hào)的識(shí)別常用的多頻信號(hào)檢測(cè)手段主要有FFT變換、濾波器組和線性濾波法三種。DTMFDFTFFT,DTMFGoertzelFFTGoertzelDTFTDFTFFT可以計(jì)算得到信號(hào)所有譜線,了解信號(hào)整個(gè)頻域信息,而對(duì)于DTMF8個(gè)行頻/列頻及其二次諧波信息即可(信號(hào)與聲音信號(hào)區(qū)別開(kāi)Goertzel譜信息。Goertzel算法實(shí)質(zhì)是一個(gè)兩極點(diǎn)的IIR濾波器。如圖知,DFT計(jì)算可以等價(jià)為:DTMFDFT(本算法為平方幅度)了。對(duì)于實(shí)序列x(nGoertzelv(n)也為實(shí)數(shù)。因此計(jì)k算如下DTMFN=205N=205DFTX[m]。N=205時(shí)頻率對(duì)應(yīng)的抽樣信息69717.861180.13977019.731200.26985221.833220.16794124.113240.113120930.981310.019133634.235340.235147737.848380.152基頻準(zhǔn)確值m 最近的整m值基頻準(zhǔn)確值m 最近的整m值兩點(diǎn)的絕對(duì)誤差4、DTMF檢測(cè)C54x的MCBSP接收DTMF信號(hào),每采到一個(gè)新樣點(diǎn),樣點(diǎn)值代入式,迭代計(jì)算8個(gè)行頻列頻的中間變量 (k為8個(gè)行頻列頻分別對(duì)應(yīng)的數(shù)字頻率,直到采到N=205個(gè)樣點(diǎn)(在8kHz采樣頻率下,約為25ms。此時(shí)再按8/決出有效的音頻信號(hào)。四、實(shí)驗(yàn)程序及注釋:#include"stdio.h" //#include"math.h"#include"type.h"#include"board.h"/函數(shù)原型

。接下來(lái)將 與門限作比較,判voiddelay(intperiod); //定義延時(shí)子程序voidgenerate(floatdtmf[16*800],intstart,intnum0]itF信號(hào)產(chǎn)生子程序voiddetect(floatdtmf[16*800],intstart); //定義DTMF檢測(cè)子程序intdata;floatfreq[16][2]={{941,1336},{697,1209},{697,1336},{697,1447},{770,1209},{770,1336},{770,1447},{852,1209},{852,1336},{852,1447},{697,1633},{770,1633},{852,1633},{941,1633},{941,1209},{941,1477}};floatpi=3.1415926;intn;intnum[10];s16cnt=2;

/按順序,每一行代表0~9,A~D,*,//voidmain(){

主程序inti;intnum[10]={0,0,0,0,0,0,0,0,0,0};/初始化數(shù)組floatdtmf[16*800];charch[22];// if(brd_init(100))return;while(cnt--) /循環(huán)閃燈{brd_led_toggle(BRD_LED0);delay(1000);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED2);delay(1000);}//scanf("%d",&n);n0-9ABC或D*,或#\r\n");n=2*n;for(i=0;i<n;i++) /輸入字符存放在數(shù)組ch[22{scanf("%c",&ch[i]);}for(i=1;i<n;i++,i++) /將輸入轉(zhuǎn)化成相應(yīng)的數(shù)字存放在數(shù)組num[10{if(ch[i]=='*')'{num[(i-1)/2]=14;'}elseif(ch[i]=='#') //1{

15代表信號(hào)'#'num[(i-1)/2]=15;}elseif(ch[i]<='9'&&ch[i]>='0'){num[(i-1)/2]=(int)(ch[i])-48; //0~'0'~'9'}elseif(ch[i]<='D'&&ch[i]>='A'){num[(i-1)/2]=(int)(ch[i])-65+10; 'A'~'D'}}for(i=0;i<(n/2);i++) /循環(huán)產(chǎn)生所輸入字符的雙音信號(hào){generate(dtmf,i*800,num,i);}for(i=0;i<(n/2);i++){detect(dtmf,800*i); /信號(hào)的識(shí)別檢測(cè)}return;}// 遲

程序 voiddelay(intperiod){inti,j;for(i=0;i<period;i++){for(j=0;j<period>>1;j++);}}//voidgenerate(floatdtmf[],intstart,intnum[],intm){floatx=0,y=0,z=0;intj; /模擬數(shù)字頻率的轉(zhuǎn)換。x=freq[num[m]][0]/8000*2*pi; /低頻音與采樣頻率之比。y=freq[num[m]][1]/8000*2*pi; /高頻音與采樣頻率之比。for(j=1;j<=400;j++) /設(shè)產(chǎn)生信號(hào)的持續(xù)時(shí)間為100ms所以j為40{z=sin(x*j)+sin(y*j); //DTMF信號(hào)為一個(gè)高頻音和一個(gè)低頻音的組合。dtmf[start+j-1]=z; /采樣值的裝入前四百個(gè)點(diǎn)為雙音信號(hào)采樣值dtmf[start+j-1+400]=0; /后四百個(gè)點(diǎn)為(即靜音信號(hào)。}}// 信號(hào)識(shí)別子程 voiddetect(floatdtmf[],intstart){inti,j,x,y;charch;floatw[8],b[8][3],result[8];w[0]=2*cos(2*pi*18/205);w[1]=2*cos(2*pi*20/205);w[2]=2*cos(2*pi*22/205);w[3]=2*cos(2*pi*24/205);w[4]=2*cos(2*pi*31/205);w[5]=2*cos(2*pi*34/205);w[6]=2*cos(2*pi*37/205);w[7]=2*cos(2*pi*42/205);for(i=0;i<8;i++) //i8{b[i][0]=0;b[i][1]=0;for(j=1;j<=205;j++){b[i][2]=w[i]*b[i][1]-b[i][0]+dtmf[starb[i][0]=b[i][1]; /迭代算法b[i][1]=b[i][2];}

8個(gè)頻率點(diǎn)的值result[i]=b[i][1]*b[i][1]+b[i][0]*b[i][0]-w[i]*b[i][*0} 的幅度平方值j=0;for(i=0;i<8;i++){if(result[i]>300) /對(duì)resu

的值進(jìn)行檢測(cè),與300比較{ /當(dāng)超過(guò)300j++;printf("dtmf[%d]:%f\r\n",i,result[i]);if(j==1) i的值賦給x,代表低頻的信息{x=i;}elseif(j==2){

//j=2時(shí)i的值賦給y,代表高頻的信息y=i;}}}ch='e';if(j==2){

if(x==0&&y==4){

/若x=0,y=4697Hz1209Hzch='1';}

/這兩個(gè)頻率所對(duì)應(yīng)的數(shù)為1elseif(x==0{ch='2';&&y==5)/若x=0,y=5697Hz1336Hz/這兩個(gè)頻率所對(duì)應(yīng)的數(shù)為2}elseif(x==0&&y==6)/以下都依次類推{ch='3';}elseif(x==1&&y==4){ch='4';}elseif(x==1&&y==5){ch='5';}elseif(x==1{&&y==6)ch='6';}elseif(x==2&&y==4){ch='7';}elseif(x==2&&y==5){ch='8';}elseif(x==2&&y==6){ch='9';}elseif(x==3&&y==5){ch='0';}elseif(x==3&&y==4){ch='*';}elseif(x==3&&y==6){ch='#';}elseif(x==0&&y==7){ch='A';}elseif(x==1&&y==7){ch='B';}elseif(x==2&&y==7){ch='C';}elseif(x==3&&y==7){ch='D';}}if(ch!='e') /滿足以上一種情況,則輸出檢測(cè)的信號(hào){printf("TheDTMFsignalis\"%c\".\r\n",ch);}else /以上情況都不滿足,則輸出錯(cuò)誤信息提示{printf("Thenumberinputtedisinwrong!\n");}}五、CCS5000程序調(diào)試1、編譯過(guò)程、工程架構(gòu)、編譯環(huán)境設(shè)置創(chuàng)建新的工程向工程中添加文件從Project/AddFilestoProject,分別選擇DTMF.c,5402.cmd(片段映射到存儲(chǔ)器中),rts.lib(這個(gè)庫(kù)提供目標(biāo)DSP運(yùn)行時(shí)間支持(runtime-support))等文件。.hProjectViewLibraries自動(dòng)到:當(dāng)前目錄(源文件所在)或預(yù)編譯器的“includeSearchPath(-i)”optionProject—>showdtmf.pjt,ScanAllDependencies.編譯與運(yùn)行程序Project/RebuildAll(RebuildAll)菜單條按鈕,CCS編輯、匯編、連接工程里的所有文件。得到結(jié)果:File/LoadProgram.dtmf.out,Open。CCSDisassembly選擇Debug/GoMain。從主程序開(kāi)始執(zhí)行程序執(zhí)行過(guò)程需輸入數(shù)據(jù)2、程序運(yùn)行結(jié)果及圖像:觀察信號(hào)時(shí)域圖觀察信號(hào)頻域圖信號(hào)檢測(cè)輸出六、實(shí)驗(yàn)總結(jié)及感想:通過(guò)此次DSP課程設(shè)計(jì),使我對(duì)上課學(xué)過(guò)的知識(shí)有了進(jìn)一步的認(rèn)識(shí)。CCS程中

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論