实验四FIR滤波器实验_第1页
实验四FIR滤波器实验_第2页
实验四FIR滤波器实验_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、实验内谷1掌握TMS320C54XDSPLIB函数库中fir函数的使用方法。2、学习并掌握5402DSP片上外设DMA的结构与配置。3、使用DMA数据传输方式在C语言下实现直接型的FIR滤波器二、实验内容1使用查询方式设计一个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);/*数据处理开始*/fir计算fir(inp_ptr,coeffs,out_ptr,&delayptr,16,1);data=out_buffer0&0xfffe;/*数据处理结束*/*(volatileu16*)DXR1_ADDR(HANDSET_CODEC)=data;voiddelay(s16period)inti,j;for(i=0;iperiod;i+)for(j=0;j1;j+);2. 使用DMA方式设计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、滤波器设计中为什么要设有延迟缓冲存储器delaybuff?其大小有什么限制?答:在连续的数据块计算时,延迟缓冲区保存着后一次计算所需要的前一次的输出数据。这个缓冲存储区的起点必须位于Kbit的边界处,即起始地址的最低K=log2nh个有效位必须为零。2、使用查询方式和DMA中断方式设计FIR滤波器时,允许DSP用于数字信号处理程序的最大时间分别是多少?答:查询方式允许DSP用于数字信号处理程序的最大时间是Ts,而DMA中断方式设计FIR滤波器时允许用于数字信号处理程序的最大时间是256Ts。3、如何设置CCS将滤波结果保存在外部数据文件*.dat中?答

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论