您好,欢迎访问三七文档
1DSP技术课程设计课程题目:FIR滤波器设计姓名:学号:专业:通信工程2011级学院:电气信息学院指导教师:时间:2目录摘要---------------------------------------------------------------31.设计题目---------------------------------------------------------42.系统功能介绍-----------------------------------------------------43.设计原理及算法研究-----------------------------------------------43.1设计原理-----------------------------------------------------43.2算法设计-----------------------------------------------------54.相应参数设计-----------------------------------------------------64.1低通滤波器的滤波系数的计算-----------------------------------64.2滤波器输入信号参数-------------------------------------------65.编写程序---------------------------------------------------------65.1部分源程序---------------------------------------------------65.20119.cmd程序------------------------------------------------75.3滤波器系数测试程序和图形-------------------------------------85.4滤波器输入信号生成程序和图形--------------------------------96.调试过程--------------------------------------------------------106.1调试前的准备------------------------------------------------106.2MATLAB的使用-----------------------------------------------106.3编写及编译程序----------------------------------------------106.4观察点设置--------------------------------------------------117.实验结果--------------------------------------------------------117.1运行结果----------------------------------------------------117.2输入信号频谱图----------------------------------------------138.设计总结--------------------------------------------------------14参考文献----------------------------------------------------------153摘要:在TMS320C54x系统开发环境CCS下对FIR滤波器的DSP实现原理进行了讨论。利用Matlab中的FIR数字滤波器的函数设计相应的滤波器,对得到的滤波器系数采用Q15格式表示,并用C语言产生模拟输入信号。将获取的系数和输入信号通过相应的指令调到DSP芯片的数据存储器中,运用MAC指令,循环缓冲寄存器、块循环寄存器实现已知混合信号的滤波,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。关键字:CCS开发环境;DSP;FIR;Matlab41.设计题目FIR滤波器设计:设计一个FIR低通(或高通、带通)滤波器,通带边界频率为1500Hz,通带波纹小于1dB;阻带边界频率为2000Hz,阻带衰减大于40dB;采样频率大于8000Hz。FIR滤波器的设计可以用MATLAB窗函数法进行。2.系统功能介绍任何一个实际的应用系统中,都存在着各种各样的干扰。数字滤波器是使用最为广泛的信号处理算法之一。数字滤波器在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像信号等各种信号处理中都有广泛的应用。在本设计中,先使用MATLAB模拟产生合成信号,然后再利用CCS进行滤波处理。将模拟信号的采样频率设定为12000Hz,设计一个FIR低通滤波器。3.设计原理及算法研究3.1设计原理FIR数字滤波器是一种非递归系统,其传递函数为:H(z)=Y(z)/X(z)=∑b(n)z-n由此可得到系统的差分方程为:y(n)=∑h(i)x(n-i),其冲击响应h(n)是有限长序列,它其实就是滤波器系数向量b(n),N为FIR滤波器的阶数。为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),这样,当N为偶数时,偶对称线性相位FIR滤波器的差分5方程表达式为:y(n)=∑h(i)x(n-i)+x((N-1-n-i)应用MATLAB设计FIR滤波器的主要任务就是根据给定的性能指标设计一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化,设计完成之后将得到FIR滤波器的单位冲击响应序列h(n)的各个参数值。用fir1函数设计FIR滤波器:fir1函数用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。具体语法如下:b=fir1(n,Wn)b=fir1(n,Wn,‘ftype’)其中n为滤波器的阶数;Wn为滤波器的截止频率;ftype为用来决定滤波器的类型,当ftype=high时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器。当没有ftype没有的时候,可以设计低通滤波器,本次实验就是设计的低通滤波器。3.2算法设计1.设N=16,FIR滤波器算法设计如下:y(n)=h(0)x(16)+h(1)x(15)+,…,+h(15)x(1)+h(16)x(0)2.AR4,FIR_DATA_PAR6,INBUF_PAR7,OUTBUF_P程序分别用AR4指向FIR_DATA_PC,AR6指向INBUF_P,AR7指向OUTBUF_P64.相应参数计算4.1低通滤波器的滤波系数的计算round(fir1(16,1500/12000)*32768)4.2滤波器输入信号参数5.编写程序5.1部分源程序75.20119.cmd程序MEMORY{PAGE0:PROG:o=100h,l=2000hPAGE1:DATA1:o=2600h,l=1000hDATA2:o=2100h,l=100hDATA3:o=2200h,l=100hDATA4:o=2300h,l=100hDATA5:o=2400h,l=100hDATA6:o=2500h,l=100h8}SECTIONS{coff_fir:{}PROGPAGE0fir_prog:{}PROGPAGE0fir_vars:{}DATA1PAGE1fir_coff:{}DATA2PAGE1fir_bfr:{}DATA3PAGE1}5.3滤波器系数测试程序和图形freqz(b,1,512)95.4滤波器输入信号生成程序和图形00.10.20.30.40.50.60.70.80.91-800-600-400-2000NormalizedFrequency(rad/sample)Phase(degrees)00.10.20.30.40.50.60.70.80.91-50050100NormalizedFrequency(rad/sample)Magnitude(dB)106.调试过程6.1调试前的准备(1)启动SETUP并选择芯片。(2)在CCS的安装目录myproject子目录下创建一个文件夹。6.2MATLAB的使用(1)使用MATLAB工具编写滤波器系数测试程序,生成0119.inc文件并保存在0119文件夹中。(2)使用MATLAB工具编写输入信号生成程序,并生成0119.dat文件保存在0119文件夹中。6.3编写及编译程序(1)选中Project菜单中New命令新建一个工程并命名为0119。(2)选中File菜单中New-SourceFile命令,并编写源程序,然后以.asm格式保存在0119文件夹里。(3)再选中File菜单中New-SourceFile命令,并编写链接程序,00.10.20.30.40.50.60.70.80.91-15000-10000-500005000NormalizedFrequency(rad/sample)Phase(degrees)00.10.20.30.40.50.60.70.80.916080100120140NormalizedFrequency(rad/sample)Magnitude(dB)11然后以.asm格式保存在0119文件夹里。(4)选中Project菜单中AddFileToProject…命令,将以上程序加载到工程目录下(5)编译并链接程序,如果有错就修改,然后再编译链接直到无误为止。6.4观察点设置(1)选中Project菜单中New命令新建一个工程并命名为0119。(2)设置断点:在标号fir_loop下面的Nop语句设置软件断点(Togglebreakpoint)探针(ToggleProbepoint)。(3)选中File菜单中FileI/O命令,将会看到FileI/O对话框按照下图操作然后选中AddProbePoint…再按以前的试验方法操作。(4)打开观察窗口,选择菜单“View”、“Graph”、“Time/Frequency…”按照下面所示操作:地址分别为:input和output;buffersize:1,display,data;size:200,DSP,Data;Type:16-bitsignedinteger;SamplingRate:1Hz。(5)运行并观察结果7.实验结果7.1运行结果输入时域12输入频域输出时域13输出频域7.2输入信号频谱图148.设计总结通过这将近一周的数字信号处理的课程设计,我对FIR滤波器的性质又有了一个更加充分的认识,同时也对它的应用有了一个大体的认识。这样将会更加激励我学习相关的知识,不断的将所学的知识用于实践。这让我感受到只有在了解课本知识的前提下,才能更好的应用这个工具。这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。在设计的过程中,我也认识到了自己所学知识的不足。这也让我再次认识到知识是无尽的,只有不断的充实自己、完善自己的知识理论体系,才能够更好的胜任自己以后的工作。00.10.20.30.40.50.60.70.80.91-15000-10000-500005000NormalizedFrequency(rad/sample)Phase(degrees)00.10.20.30.40.50.60.70.80.916080100120140NormalizedFrequency(rad/sample)Magnitude(dB)15参考文献[1].DSP技术及应用实验指导书曹玉英编[2].DSP原理及应用(修订版)邹彦主编[3].网上资源
本文标题:FIR滤波器设计
链接地址:https://www.777doc.com/doc-2871834 .html