您好,欢迎访问三七文档
有限冲击响应FIR滤波器的设计一、设计目的1使学生加深对DSP芯片TMS320C55x的结构、工作原理的理解;2了解FIR的原理和特性;3熟悉设计FIR数字滤波器的原理和方法;4学习FIR滤波器的DSP实现原理;5学习使用ccs的波形观察窗口观察输入、输出信号波形和频谱变化情况。二、设计原理滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使其能够从信号中提取有用的信号,抑制并衰减不需要的信号,滤波器的设计实质上就是对提出的要求给出相应的性能指标,再通过计算,使物理可实现的实际滤波器响应特性逼近给出的频率响应特性。FIR数字滤波器是一种非递归系统,其传递函数为:ZH=10NnnznbzXzY由此可得到系统的差分方程为:10NIinxihny则,FIR滤波器的结构如下图:其冲激响应nh是有限长序列,它滤波器系数向量nb,N为FIR滤波器的阶数。在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性为了使滤波器满足线性相位条件,要求其单位脉冲响应nh为实序列,且满足偶对称或奇对称条件,即nNhnh1或nNhnh1.这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达为12/0))1((NiinNxinxihny由上可见,FIR滤波器不断地对输入样本nx延时后,再做乘法累加运算,将滤波器结果ny输出。因此,FIR实际上是一种乘法累加运算。而对于线性相位FIR滤波器系数的对称特性,可以采用结构精简的FIR结构将乘法器数目减少一半。应用MATLAB设计FIR滤波器的主要任务就是根据给定的性能指标设计一个zH,使其逼近这一指标,进而计算并确定滤波器的系数nb,再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化,设计完成之后将得到的bN-1bN-2b1b0x(n-N+1)x(n-1)aZ-1Z-1Z-1X(n)y(n)FIR滤波器的单位冲激响应序列nh的各个参数值。三、总体方案设计1启动CCS,在CCS中建立一个汇编源文件、建立一个C源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序2设置波形时域观察窗口,得到其滤波前后波形变化图;3设置频域观察窗口,得到其滤波前后频谱变化图。四、源程序1、新建工程文件打开SetupCCS选择c55芯片,打开CCS软件,选择project/new,命名为myproject。2、添加文件到工程(1)建立文件选择file/new,汇编源程序,如下:.global_fir,_init,_B,_outdata_firbsetfrctamov#_B,xdpmov#_B,cdpmovt0,ac0sub#1,ac0movac0,mmap(csr)addac0,ar0mov#0,ac0rptcsrmacmz*ar0-,*cdp+,ac0movhi(ac0),t0ret_initmovmmap(t0),ac0sub#1,ac0movac0,ar7rptzac0,ar7movac0,*ar0+ret_outdatamovt1,ac0sub#2,ac0movac0,mmap(csr)addac0,ar0rptcsrdelay*ar0-mar*ar0+movt0,*ar0retc文件#includes.h#includemath.h#definesignal_1_f200#definesignal_2_f620#definesignal_sample_f2000#definepi3.1415926#definecoff_L23#definebufer_L256intdata_in[bufer_L];intout[bufer_L];intfirout;intx[coff_L+1];intk=0;intbufer=bufer_L;externintfir(int*,int);externintinit(int*,int);externintoutdata(int*,int,int);voidinputwave();voidmain(){inputwave();init(x,BL);while(1){x[0]=data_in[k];firout=fir(x,BL);outdata(out,firout,bufer);k++;if(k=bufer_L){k=0;}}}voidinputwave(){floatwt1;floatwt2;inti;for(i=0;i=bufer_L;i++){wt1=2*pi*i*signal_1_f;wt1=wt1/signal_sample_f;wt2=2*pi*i*signal_2_f;wt2=wt2/signal_sample_f;data_in[i]=(cos(wt1)+cos(wt2))/2*32768;}}S.h文件intBL=23;intB[23]={-417,342,1961,1692,-762,-1003,1676,1115,-3200,-1159,10335,17562,10335,-1159,-3200,1115,1676,-1003,-762,1692,1961,342,-417};(2)保存文件(3)添加文件右键点击建立的工程,选择Addfiletoproject,在选中建立的文件。3、汇编源程序的链接命令文件:-stack0x500-sysstack0x500-heap0x1000-c-u_Reset-lrts55.libMEMORY{PAGE0:RAM(RWIX):origin=0x000100,length=0x01ff00ROM(RIX):origin=0x020100,length=0x01ff00VECS(RIX):origin=0xffff00,length=0x000200PAGE2:IOPORT(RWI):origin=0x000000,length=0x020000}SECTIONS{.textROMPAGE0.dataROMPAGE0.bssRAMPAGE0.constRAMPAGE0.sysmemRAMPAGE0.stackRAMPAGE0.sysstackRAMPAGE0.switchRAMPAGE0.cinitRAMPAGE0.pinitRAMPAGE0.vectorsVECSPAGE0.ioportIOPORTPAGE2}4、加载可执行文件选择工程,点击file/loadprogram,选择.out文件5、运行执行.out文件6、设置波形时域/频域观察窗口,得到其滤波前后波形变化图;五、实验结果及分析Acquisitionbuffersize:256Displaydatasize:250DSPdatatype:16-bitssignedinteger时域输入输出波形:由时域图可得:滤波前的时域图是带很多毛刺不规则的正弦波,而滤波后的波形是平滑的等幅正弦波且波形振幅相对滤波前的最大振幅有所减小。频域输入输出波形:由频域图可得:滤波前的频域图会出现两个带尖峰的图像,而滤波后的波形只会出现一个带尖峰图像,而且是出现在低频部分,说明信号经过滤波器后,将信号中的高频成分滤除掉了。六、设计总结通过这次基于DSP的数字滤波器设计,我初步学会了应用CCS进行DSP设计的实践操作。熟悉了DSP集成开发环境(CCS),掌握了FIR数字滤波器原理和方法。通过对系统的调试,对线性相位FIR数字滤波器特性及不同阶数对滤波器特性的影响进行了研究。通过观察时域和频域图,对FIR数字滤波器特性进行了验证,在应用DSP对数字滤波器实现的过程中,体会到了DSP在数字滤波实现中的优缺点。用DSP实现FIR数字滤波,具有稳定性好、准确度高、灵活性好、不受环境影响等优点。在这次的课程设计中学会了如何和老师、同学一起交流、探讨问题,在学习的过程中同时培养了和同学之间的合作能力,增进了彼此之间的友谊,感谢在这次设计中给予我帮助的老师还有各位同学。
本文标题:DSP课程设计
链接地址:https://www.777doc.com/doc-5081580 .html