第13,14次課DSP綜合設計應用實例_第1頁
第13,14次課DSP綜合設計應用實例_第2頁
第13,14次課DSP綜合設計應用實例_第3頁
第13,14次課DSP綜合設計應用實例_第4頁
第13,14次課DSP綜合設計應用實例_第5頁
已閱讀5頁,還剩51頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用1 120222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用3 3( )1* (1)2* (2)y nay nay n00012cos, 21,2/saaff0( 1)0, ( 2)sinyyA 20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用4 420222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用5 520222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用6 6開始DSK板初始化設置D/A轉換器的分辨率為15位及轉換速率8000Hz計算各鍵

2、行頻系數及初始條件計算各鍵列頻系數及初始條件取出發送的DTMF按鍵號碼轉換為數組下標查表得到鍵值的行頻列頻系數和初始值DTMF編碼流程20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用7 7計算本次輸出的樣點值(行頻+列頻)更新行頻列頻的初值,計算下一個樣點值樣點數轉換為Q15格式如果D/A準備好發送數據則將樣點值寫入DTMF樣點數是否發送完成?發送400點靜音樣點0至D/ADTMF編碼流程#include #include #include #include void delay(s16 period);HANDLE hHandset;/CODEC句柄變量s16 dat

3、a;s16 buffer400;/輸出緩沖區,用于圖形窗口觀察輸出信號#define PI 3.1415926float fs=8000;s16 tele_number16=1,2,3,4,5,6,7,8,9,0,A,B,C,D,*,#float dtmf_freq162=941,1336,/鍵值0對應的行頻和列頻697,1209,697,1336,941,1663,941,1209,941,1447/鍵值#對應的行頻和列頻;f32 row_freq162=0;/行頻系數及初始條件f32 column_freq162=0;/列頻系數及初始條件f32 ax1,ay1;/行頻列頻的系數f32 x_

4、n,x_n_1,x_n_2;/行頻的二階差分方程樣點f32 y_n,y_n_1,y_n_2; /列頻頻的二階差分方程樣點f32 z_n;/雙音多頻樣點void main()/DTMF發送主程序s16 cnt=2;f32 f0;s16 num;s16 i=0,n=0;if(brd_init(100) /初始化DSK板return;while(cnt-)/發光二極管閃爍兩次,表明程序運行正常brd_led_toggle(BRD_LED0);delay(1000);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED1);delay(

5、1000);20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用1111hHndset=codec_open(HANDSET_CODEC);/打開CODEC,獲得句柄code_dac_mode(hHandset,CODEC_DAC_15BIT);/D/A工作在15-bit模式code_aout_gain(hHandset,CODEC_AOUT_MINUS_6dB ) ;/增益為-6dB code_sample_rate(hHandset,SR_8000); /D/A轉換速率為/計算各鍵值的行頻系數COS(2*PI*F0/FS)和初始條件SIN(2*PI*F0/FS)for(

6、i=0;i16;i+)f0=dtmf_freqi0;row_freqi0=cos(2*PI*f0/fs);row_freqi1=sin(2*PI*f0/fs); /計算各鍵值的列頻系數COS(2*PI*F0/FS)和初始條件SIN(2*PI*F0/FS)for(i=0;i16;i+)f0=dtmf_freqi1;column_freqi0=cos(2*PI*f0/fs);column_freqi1=sin(2*PI*f0/fs);20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用1212/循環發送DTMF按鍵緩沖區中的鍵值while(1)for(i=0;i16;i+)nu

7、m=tele_numberi;/取出當前要發送的DTMF按鍵號碼20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用1313switch(num)/將DTMF按鍵號轉換為數組下標case0:num=0;break;case1:num=1;break;case*:num=14;break;case#:num=15;break;ax1=row_freqnum0;/行頻系數x_n_2=row_freqnum1;/行頻的初始條件,x(-2)ay1=column_freqnum0;/列頻系數y_n_2=column_freqnum1;/列頻的初始條件,y(-2)x_n_1=0;y_n

8、_1=0;/輸出DTMF信號,持續時間為50msn=0;cnt=400;20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用1414while(cnt-)/計算本次輸出的樣點值x_n=2*ax1*x_n_1-x_n_2;/行頻樣點值y_n=2*ax1*y_n_1-y_n_2;/列頻樣點值z_n=x_n+y_n;/DTMF信號樣點值x_n_2=x_n_1;/更新x_n_1=x_n;y_n_2=y_n_1;y_n_1=y_n;data=16384.0*z_n;/將樣點數轉換為整數/等待D/A轉換器準備好發送while(!MCBSP_XRDY(HANDEST_CODEC);*(v

9、olatile u16*)DXR1_ADDR(HANDSET_CODEC)=data;buffern=data;n+;20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用1515cnt=400;/輸出靜音符號,持續時間為50mswhile(cnt-)while(!MCBSP_XRDY(HANDEST_CODEC);*(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=0;voiddelay(s16 period)int i,j;for(i=0;iperiod;i+)for(j=0;j1;j+)20222022年年6 6月月8 8日日DSPDSP技

10、術及應用技術及應用16162/1121( )1 2cos(2/)jk NezH zk N zz20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用171720222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用181822222|( )|()|()(1)2cos()()(1)kkkkkkX kyNvNvNvN vNN20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用1919開始DSK板初始化設置D/A轉換器的分辨率為15位及轉換速率為8000Hz讀樣點除以16384后存入數據接收緩沖區A/D轉換器輸出數據準備好?否是20222022年年

11、6 6月月8 8日日DSPDSP技術及應用技術及應用2020調用DTMF檢測判決程序初始化Vk(n-1),Vk(n-2),重新開始檢測是否接收到125個DTMF樣點?否是計算行頻和列頻共8個頻率的Vk(n)20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2121開始計算 頻譜的平方幅度搜索幅度大于門限的行頻和列頻是否已檢測到靜音信號?否是2|( )|X n是否有兩個幅度達標的頻率?如果沒有檢測到任何頻率置檢測到靜音標志否是20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2222置已檢測到DTMF信號標志返回DTMF鍵值判決DTMF鍵值存儲,存滿2

12、56個鍵之后顯示20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2323#include #include #include #include #include #include HANDLE hHandset;float buffer125;/DTMF樣點緩沖區float pi=3.1415926s16 data;int k=0; /vk(n)=2*coef*vk(n-1)-vk(n-2)+x(n),coef為w8,x(n)為 buffer256 /vk(n-2)為ai0, vk(n-1)為ai1, vk(n)為ai2 loat w8,a83; float amp8;

13、/頻譜的平方幅度int i,j,x,y;int dtmf_flag=0; /DTMF檢測進程,0為檢測到靜音符號,1為檢測到1次DTMFint detect_result256=0;/緩存DTMF檢測結果20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2424int l=0;void delay(int period);void dtmf_detect(void);void main()/主程序/初始化各行頻列頻的系數w0=2*cos(2*pi*11/125);w1=2*cos(2*pi*12/125);w2=2*cos(2*pi*13/125);w3=2*cos(2*

14、pi*15/125);w4=2*cos(2*pi*19/125);w5=2*cos(2*pi*21/125);w6=2*cos(2*pi*23/125);w7=2*cos(2*pi*26/125);/初始化vk(n-1),vk(n-2)for(i=0;i8;i+);ai0=0;20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2525aj1=0;if(brd_init(100)return;while(cnt-)/發光二級管閃爍兩次,表明程序正常運行brd_led_toggle(BRD_LED0);delay(1000);brd_led_toggle(BRD_LED1);

15、delay(1000);brd_led_toggle(BRD_LED2);delay(1000);hHandset=code_open(HANDSET_CODEC);/獲得句柄codec_ade_mode(hHandset,CODEC_ADC_15BIT);/ADC為15bit模式codec_ain_gain(hHandset,CODEC_AIN_0dB);/輸入增益為0dB20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2626codec_sample_rate(hHandset,SR_8000);/取樣率為8000while(1)/等待A/D轉換器輸出數據準備好wh

16、ile(!MCBSP_RRDY(HANDSET_CODEC);data=*(volatile u16*)DRR1_ADDR(HANDSET_CODEC);bufferk=data/16384.0;/增益控制,防止后續溢出for(i=0;i8;i+)/計算vk(n)-ai2/計算vk(n),vk(n-1),vk(n-2)ai2=wi*ai1-ai0+bufferk;ai0=ai1;ai1=ai2;k+;if(k=125)/讀取125個樣點,15ms時間k=0;dtmf_detect();/調用檢測判決函數20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2727for(i=

17、0;i18;i+)/初始化vk(n-1),vk(n-2)ai0=0;ai1=0;void dtmf_detect(void)/計算頻譜的平方幅度for(i=0;i8;i+)ampi=ai1*ai1+ai0*ai0-wi*ai1*ai0;/printf(“the amplitude%dis%f.rn”,i,ampi );j=0;20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2828j=0;for(i=0;i1500)j+;if(j=1)x=i;else if(j=2)y=i;/如果在靜音之后檢測到兩個幅度達到門限的頻率,則進行判決i=-1;if(demf_flag=0)

18、if(j=2)20222022年年6 6月月8 8日日DSPDSP技術及應用技術及應用2929if(j=2)if(x=0&y=4)i=1;else if(x=0&y=5)i=2;else if(x=0&y=6)else if(x=2&y=7)i=C;else if(x=3&y=7)i=D;if(i!=-1)detect_resultl=i;l+;if(l=256)for(l=0;l,256;l+)/顯示判決結果printf(“the DTMF signal is%c.rn”,detect_resultl;dtmf_flag+;/已經檢測到一次DTMF信號else if(j=0)dtmf_flag=0;/檢測到靜音信號void delay(int per

溫馨提示

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

評論

0/150

提交評論