實驗四FIR濾波器實驗_第1頁
實驗四FIR濾波器實驗_第2頁
實驗四FIR濾波器實驗_第3頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、一、實驗內(nèi)谷1掌握TMS320C54XDSPLIB函數(shù)庫中fir函數(shù)的使用方法。2、學習并掌握5402DSP片上外設(shè)DMA的結(jié)構(gòu)與配置。3、使用DMA數(shù)據(jù)傳輸方式在C語言下實現(xiàn)直接型的FIR濾波器二、實驗內(nèi)容1使用查詢方式設(shè)計一個fir低通濾波器,通帶頻率為2400Hz。Fpass=2400,fstop=3000,fs=16000-ftlD|怖比斫費if8MagrituRm勺punmmriJBFr-qijflnirYjltllji#inelude#inelude#inelude#inelude#inelude#ineludevoiddelay(s16period);HANDLEhHandset

2、;s16data;/*Createspecificdatasectionforcoeffiecients*/#pragmaDATA_SECTION(coeffs,coefficients);/*LowPassFilter*/shortcoeffs16=2810,985,-906,-2112,-1653,2005,6878,10556,10556,6878,2005,-1653,-2112,-906,985,2810;#pragmaDATA_SECTION(delaybuff,delay);shortdelaybuff16=0;short*delayptr=&(delaybuff0);short

3、inp_buffer1;shortout_buffer1;short*inp_ptr=inp_buffer;short*out_ptr=out_buffer;voidmain()s16cnt=2;if(brd_init(100)return;/*blinktheledsacoupletimes*/while(cnt-)brd_led_toggle(BRD_LED0);/*brd_delay_msec(1000);*/delay(1000);brd_led_toggle(BRD_LED1);/*brd_delay_msec(1000);*/delay(1000);brd_led_toggle(B

4、RD_LED2);/*brd_delay_msec(1000);*/delay(1000);/*OpenHandsetCodec*/*Acquirehandle/*DACin15-bit/*ADCin15-bit/*6dBgainon/*-6dBgainon/*16KHzsamplingratehHandset=codec_open(HANDSET_CODEC);tocodec*/*Setcodecparameters*/codec_dac_mode(hHandset,CODEC_DAC_15BIT);mode*/codec_adc_mode(hHandset,CODEC_ADC_15BIT)

5、;mode*/codec_ain_gain(hHandset,CODEC_AIN_6dB);analoginputtoADC*/codec_aout_gain(hHandset,CODEC_AOUT_MINUS_6dB);analogoutputfromDAC*/codec_sample_rate(hHandset,SR_16000);*/*Pollinganddigitalloopback*/while(1)/*Waitforsamplefromhandset*/while(!MCBSP_RRDY(HANDSET_CODEC);/*Readsamplefromandwritebacktoha

6、ndsetcodec*/inp_buffer0=*(volatileu16*)DRR1_ADDR(HANDSET_CODEC);/*數(shù)據(jù)處理開始*/fir計算fir(inp_ptr,coeffs,out_ptr,&delayptr,16,1);data=out_buffer0&0xfffe;/*數(shù)據(jù)處理結(jié)束*/*(volatileu16*)DXR1_ADDR(HANDSET_CODEC)=data;voiddelay(s16period)inti,j;for(i=0;iperiod;i+)for(j=0;j1;j+);2. 使用DMA方式設(shè)計FIR低通濾波器,通帶截頻為4000Hz。從5402

7、DSK板的MIC端口輸入頻率為3000Hz和5000Hz正弦信號的疊加信號,使用示波器在SPEAKERS口觀察輸出信號波形。Fpass=4000,fstop=5000,fs=16000-I/lwrirlluclfr(dBFr|UfiC(kht)#include#include#include#include#includevoiddelay(s16period);externvoidDMAC2ISR();HANDLEhHandset;unsignedintdmsefc,dmmcr,dmctr,src_addr,dst_addr;unsignedintdmpre,dmsrcp,dmdstp,dm

8、idx0,dmidx1,dmfri0,dmfri1,dmgsa,dmgda,dmgcr,dmgfr;/*Createspecificdatasectionforbuffer(symbol,section_name)*/#pragmaDATA_SECTION(buffer,audio_buffer);intbuffer0x500;/*Createspecificdatasectionforcoeffiecients*/#pragmaDATA_SECTION(coeffs,coefficients);/*LowPassFilter*/intcoeffs16=560,-1842,-686,1948,

9、-282,-3838,3221,16103,16103,3221,-3838,-282,1948,-686,-1842,560;#pragmaDATA_SECTION(delaybuff,delay);intdelaybuff16=0;/*declareandinitializetwovariablesforDMACISRs*/intframe=0;intflag=0;inttemp;intcurrbuff=0;/*delayptrholdstheaddressofthestartofthedelaybuffer*/int*delayptr1=&(delaybuff0);voidmain()s

10、16cnt=1;/*ThesearetheitemsthatBIOSwillsetwhenweuseit*/BSCR=0x8806;XPC=0;PMST=0xA0;brd_set_cpu_freq(50);TIMER_HALT(0);brd_set_wait_states(7,7,9);TIMER_RESET(0);if(brd_init_bios()return;/*Acquirehandleto/*OpenHandsetCodec*/hHandset=codec_open(HANDSET_CODEC);codec*/*Setcodecparameters*/*DACin15-bitmode

11、/*DACin15-bitmode/*ADCin15-bitmode/*6dBgainonanalog/*-6dBgainonanalog/*16KHzsamplingrate*/codec_dac_mode(hHandset,CODEC_DAC_15BIT);*/codec_adc_mode(hHandset,CODEC_ADC_15BIT);*/codec_ain_gain(hHandset,CODEC_AIN_6dB);inputtoADC*/codec_aout_gain(hHandset,CODEC_AOUT_MINUS_6dB);outputfromDAC*/codec_sampl

12、e_rate(hHandset,SR_16000);/*ClearIFR*/INTR_CLR_FLAG(DMAC2);/*ResetallDMAchannels*/dma_reset_all();/*InitializeDMAchannel2*/dmsefc=(DSYNC_REVT112);dmmcr=(AUTOINIT_ENABLE15)|(DINM_ENABLE14)|(IMOD_HALFBLOCK13)|(CTMOD_DEC12)|(INDEXMODE_NOMOD8)|(SPACE_DATA6)|(INDEXMODE_INC2)|(SPACE_DATA);dmctr=0xFF;src_a

13、ddr=DRR1_ADDR(HANDSET_CODEC);dst_addr=(unsignedint)&buffer;dma_init(DMA_CH2,dmsefc,dmmcr,dmctr,SPACE_DATA,src_addr,SPACE_DATA,dst_addr);/*Setnumberofframesforchannel2*/DMA_FRAMECOUNT(DMA_CH2,2);/*SetupglobalautoinitregistersforDMACH2Input*/dmgsa=src_addr;dmgda=dst_addr;dmgcr=0xFF;dmgfr=2;/*Setupglob

14、alpriorityandenablecontrolregisterforCh2*/dmpre=(HIGH_PRIORITY10)|(INTSEL_016);dmsrcp=SPACE_DATA;dmdstp=SPACE_DATA;dmidx0=0;dmidx1=0;dmfri0=0;dmfri1=0;dma_global_init(dmpre,dmsrcp,dmdstp,dmidx0,dmidx1,dmfri0,dmfri1,dmgsa,dmgda,dmgcr,dmgfr);/*Enablechannel2*/DMA_ENABLE(DMA_CH2);/*primetheserialportto

15、begininputbufferstream*/temp=*(volatileu16*)DRR1_ADDR(HANDSET_CODEC);/*EnableDMAC2interrupt*/INTR_ENABLE(DMAC2);/*EnableGlobalInterrupts*/INTR_GLOBAL_ENABLE;/*EndlessloopwaitingforDMAC2interrupt*/for(;);voiddelay(s16period)inti,j;for(i=0;iperiod;i+)for(j=0;j1;j+);三、思考題1、濾波器設(shè)計中為什么要設(shè)有延遲緩沖存儲器delaybuff?其大小有什么限制?答:在連續(xù)的數(shù)據(jù)塊計算時,延遲緩沖區(qū)保存著后一次計算所需要的前一次的輸出數(shù)據(jù)。這個緩沖存儲區(qū)的起點必須位于Kbit的邊界處,即起始地址的最低K=log2nh個有效位必須為零。2、使用查詢方式和DMA中斷方式設(shè)計FIR濾波器時,允許DSP用于數(shù)字信號處理程序的最大時間分別是多少?答:查詢方式允許DSP用于數(shù)字信號處理程序的最大時間是Ts,而DMA中斷方式設(shè)計FIR濾波器時允許用于數(shù)字信號處理程序的最大時間是256Ts。3、如何設(shè)置CCS將濾波結(jié)果保存在外部數(shù)據(jù)文件*.dat中?答

溫馨提示

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

最新文檔

評論

0/150

提交評論