资源描述
,*,北京交通大学 国家工科电工电子教学基地,DSP,应用课程设计,12,北京交通大学,国家电工电子教学基地,利用,DSP,实现信号滤波,1.利用,DSP,进行实时信号滤波,利用,DSP,实现对模拟信号滤波的框图,函数调用格式:,oflag,= short fir(DATA *x, DATA *h, DATA *r,DATA *,dbuffer,ushort,nh,ushort,nx,),功能 用,FIR,滤波器对信号滤波,调用参数说明:,xnx,表示含有,nx,个实数的实输入信号向量;,hnh,表示含有,nh,个实数的系数向量,按自然顺序,排列,即滤波器的单位脉冲响应。,rnx,表示含有,nx,个实数的输出向量;,允许原位运算,即,r=x。,2. 滤波器函数,fir(),说明:,dbuffernh,延迟缓冲区;对存储器的要求同,hnh,。,nx,向量,x,中实数的个数;,nh,向量,h,中系数的个数;,oflag,=1,有溢出 ;,oflag,=0,无溢出,对数组,h,和,dbuffer,的,特殊要求,:,输入数组首地址最低,log2(nx),位,为必须为0。,2.滤波器函数,fir(),说明,oflag,= short fir(DATA *x, DATA *h, DATA *r,DATA *,dbuffer,ushort,nh,ushort,nx,),滤波器函数使用的例,(,a),一次调用处理一个数据,#,pragma,DATA_SECTION(h,coe_buf,),DATA hN;,#,pragma,DATA_SECTION(db,delay_buf,),DATA dbN;,DATA dbN=0;,DATA *,dbp,= ,DATA x,y;,fir(,滤波器函数使用的例,(,b),一次调用处理,L,个数据,#,pragma,DATA_SECTION(h,coe_buf,),DATA hN;,#,pragma,DATA_SECTION(db,delay_buf,),DATA dbN;,DATA dbN=0;,DATA *,dbp,= ,DATA xL,yL;,fir(x,h,y,&dbp,N,L,);,利用,codec,对信号实时,i=0;,while(1),while (!MCBSP_XRDY(HANDSET_CODEC) ) ;,x = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC);,inp_datai,=x;,fir(,out_datai=y;,i=i+1;,if(i=L) i=0;,*(volatile u16*)DXR1_ADDR(HANDSET_CODEC) =y;,利用,Matlab,进行滤波器设计,滤波器设计工具箱,fdatool,工具箱 (,Filter Design and Analysis Tool,),此工具箱提供常用的各种滤波器的设计,并将设计,的滤波器参数提取出来。,调用方法:,在,Matlab,命令窗口键入,fdatool,3.,滤波器设计,4.,直接存储器访问控制器(,DMA),的使用,直接存储器访问(,Direct Memory Access,,简称,DMA),是,C54x DSP,非常重要的片上外设。,DMA,特性:,完成数据传输而不影响,CPU,,因此数据传输速度快。,应用场合:,在要求信号实时采集和处理的系统中常采,用,DMA,方式进行信号采集与传输。,DMA,和,DSP,内核访问存储器的框图,信号采集和滤波的流程图,利用,DMA,进行,FIR,滤波的中断服务程序,interrupt void DMAC2ISR(void),int,*,p_inp,*p_out;,int,i;,p_inp,=,inp_buffer+frame,*0x100;,p_out=out_buffer+frame*0x100;,fir(p_inp,coeffs,p_out,/for (i=0;i256;i+),/*(p_out+i)=*(,p_inp+i,);,init_dma3();,frame=1;,
展开阅读全文