FIR低通数字滤波器设计.docx
- 文档编号:23257782
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:24
- 大小:694.76KB
FIR低通数字滤波器设计.docx
《FIR低通数字滤波器设计.docx》由会员分享,可在线阅读,更多相关《FIR低通数字滤波器设计.docx(24页珍藏版)》请在冰豆网上搜索。
FIR低通数字滤波器设计
《DSP技术及应用》
课程设计报告
课题名称:
基于DSPBuilder的FIR数字滤波器的设计及实现
学院:
电子信息工程学院
班级:
11级电信本01班
学号:
姓名:
题目基于DSPBuilder的FIR数字滤波器的设计及实现
摘要
FIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。
本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近法设计FIR滤波器的思路和流程。
在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1、fir2和remez子函数分别实现窗函数法、频率采样法和等波纹逼近法设计FIR滤波器。
然后检验滤波器的滤波效果,采用一段音频进行加噪声然后用滤波器滤,对比三段音频效果进而对滤波器的滤波效果进行检验。
仿真结果表明,在相频特性上,三种方法设计的FIR滤波器在通带内都具有线性相位;在幅频特性上,相比窗函数法和频率采样法,等波纹逼
近法设计FIR滤波器的边界频率精确,通带和阻带衰减控制。
Abstract
FIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。
本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近法设计FIR滤波器的思路和流程。
在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1、fir2和remez子函数分别实现窗函数法、频率采样法和等波纹逼近法设计FIR滤波器。
然后检验滤波器的滤波效果,采用一段音频进行加噪声然后用滤波器滤,对比三段音频效果进而对滤波器的滤波效果进行检验。
仿真结果表明,在相频特性上,三种方法设计的FIR滤波器在通带内都具有线性相位;在幅频特性上,相比窗函数法和频率采样法,等波纹逼近法
FIRdigitalfilterisanimportantpartofdigitalsignalprocessing,theFIRdigitalfilterwithlinearphase,soithasbeenwidelyappliedinthecollectionandprocessingofinformationinthecourseof.ThispaperintroducestheconceptofFIRdigitalfilterwithlinearphaseconditions,analysisofthewindowfunctionmethodandfrequencysamplingmethodandtherippleapproximationmethodofFIRfilterdesignideasandprocesses.Basedonanalyzingtheprincipleofthreekindsofdesignmethods,bymeansoffir1,fir2andRemezfunctionofMatlabsimulationsoftwareintheToolboxwindowfunctionmethodandfrequencysamplingmethodandrespectivelyrealizeequirippleapproximationmethodtodesignFIRfilter.Thentestthefilteringeffectofthefilter,usinganaudioaddnoiseandthenfilter,testthreeaudioeffectsandcomparisonoffilterfilteringeffect.Simulationresultsshowthatthephasefrequencycharacteristic,threedesignmethodsofFIRfilterwithlinearphaseareinthepassband;theamplitudefrequencycharacteristics,comparedwiththewindowfunctionmethodandfrequencysamplingmethod,equirippleapproximationmethod
设计FIR滤波器的边界频率精确,通带和阻带衰减控制。
DesignofFIRfilterwithaccurateboundaryfrequency,thepassbandandstopbandattenuationcontrol.
一、绪论
随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。
数字滤波是谱分析、雷达信号处理、通信信号处理应用中的基本处理算法。
及模拟滤波相比,数字滤波有很多优点,例如它可以满足滤波器对幅度和相位特性的严格要求,可以避免模拟滤波器无法克服的电压漂移、温度漂移和噪声等问题。
用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便地改变滤波器的特性。
数字滤波器的功能就是把输入序列通过一定的运算变换成输出序列,因此数字滤波器的结构系统中就必须包括一定数量和性能的运算器件和运算单元,而运算器件和运算单元的配置必须由数字滤波器的结构特点和性能特点来决定。
在现代电子系统中,数字滤波器的好坏对相关的众多工程技术领域影响很大,一个好的数字滤波器会有效的推动众多工程技术领域的技术改造和学科发展。
数字滤波器依据冲激响应的宽度划分为有限冲激响应(FIR)滤波器和无限冲激响应滤波器(IIR)。
FIR滤波器在数字通信系统中被大量使用,以实现各种各样的功能,诸如低通滤波、带通滤波、抗混叠、抽样和内插等等。
FIR数字滤波器以其良好的线性特性被广泛使用,属于数字信号处理的基本模块之一。
它涉及的领域很广,如:
通信系统、系统控制、生物医学工程、机械振动、遥感遥测、地质勘探、航空航天、电力系统、故障检测、自动化仪器等。
及IIR数字滤波器相比,它的最大优点就是可以实现线性相位滤波,而IIR主要是针对幅频特性进行逼近,相频特性会存在不同程度的非线性。
在数字通信和图像传输及处理等应用场合都要求滤波器具有线性相位特性。
许多工程技术领域都涉及到信号,这些信号包括电的、磁的、机械的、热的、声的、光的及生物体的等等。
如何在较强的背景噪声和干扰信号下提取出真正的信号并将其用于实际工程,这正是信号处理要研究解决的问题。
20世纪60年代,数字信号处理理论得到迅猛发展,理论体系和框架逐渐趋于成熟,到现在它己经成长为一门独立的数字信号处理学科。
数字滤波器它可以将输入信号的某些频率成分或某个频带进行压缩,放大,从而改变输入信号的频谱结构,因此也可以说是个频率选择器。
另外滤波的概念还包括对信号进行检测和参数估计。
数字滤波是提取有用信息非常重要、非常灵活的方法,是现代信号处理的重要内容。
因而在数字通信、语音图像处理、谱分析、模式识别、自动控制等领域得到了广泛的应用。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用将会越来越广泛......
二、FIR数字滤波器原理
1.1FIR数字滤波器的基本原理和结构
设h(n)(n=0,1,2,…N一1)为滤波器的冲激响应,输入信号为x(n),则滤波器FIR就是要实现差分方程:
(1-1)
公式(1-1)就是FIR滤波器的差分方程。
N为滤波器的阶数。
它的单位脉冲响应h(n)是一个有限长序列。
由上面的方程可见,FIR滤波算法实际上是一种乘法累加运算,它不断地输入样
本x(n),经延时(z-1),做乘法累加,再输出滤波结果y(n)]。
对公式(1-1)进行z变换,整理后可得FIR滤波器的传递函数为
(1-2)
从公式(1-2)可以看出,FIR滤波器的一般结如图1-1所示:
图1-1FIR滤波器的结构图
由公式(1-1)、公式(1-2)可见H(z)为z-1的N-1阶多项式,它在z平面上有N-1个零点并在原点z=0处有N-1重极点。
故H(z)永远为稳定系统。
所以FIR滤波器具有如下特点:
①给h(n)附加一定条件就可以实现严格的线性相位特性;
②FIR滤波器的稳定性,在设计过程中不必考虑系统的稳定性问题;
③由于h(n)为有限长,便于采用FFT进行系统运算,运算效率高;
④FIR滤波器的阶数由h(n)的长度决定,所以一个具有良好的幅频特性的FIR滤波器的阶数往往都比较高。
1.2FIR数字滤波器的设计方法
使用FIR滤波器可以实现严格的线性相位特性,但其幅频特性的设计方法及IIR滤波器完全不同。
FIR滤波器的设计方法有:
窗函数法、频率采样法、切比雪夫等波纹逼近法等。
FIR数字滤波器的设计思想是:
在保证线性相位条件的前提下,选择合适的h(n)长度N,使其传输函数H(ejω)满足技术指标要求。
本文采用窗函数法设计FIR数字滤波器。
三、DSPBuilder的FIR数字滤波器设计流程
使用DSPBuilder可以方便地在图形化环境中涉及FIR数字滤波器,而且滤波器系数的计算可以借助MATLAB强大的计算能力和现成的滤波器设计工具来完成。
3.112阶FIR滤波器模型设计
利用设计4阶FIR滤波器节可以方便地搭成4×n阶直接I型FIR滤波器。
比如要实现一个12阶的低通滤波器,可以调用3个4阶FIR滤波器节来实现。
1.设计4阶FIR滤波器节子系统
建立一个新的DSPBuilder模型,复制FIR4tap模型到新模型。
由FIR4tap模型建立子系统,并对端口信号进行修改,把子系统更名为fir4tap,如图3.1所示.fir4tap的内部结构如图3.2所示。
图3.1fir4tap子系统图3.2fir4tap子系统内部原理图
2.组成12阶FIR滤波器模型
复制3个fir4tap,并将他们衔接起来。
前一级的输出端口X4接后一级的X输入端口,并附加上12个常数端口,作为FIR滤波器系数的输入。
把3个子系统fir4tap的输出端口y连接起来,接入一个3输入端口的加法器,得到FIR滤波器的输出yout。
在做好子系统之后,修改其Mask参数MaskType为SubSystemAlteraBlockSet。
设计好的12阶FIR滤波器如图3.3所示
图3.312阶直接I型FIR滤波器模型
3.2使用MATLAB的滤波器设计工具
1.滤波器指标
设计一个12阶的FIR滤波器(h(0)=0),给定的参数如下:
(1)低通滤波器
(2)采样频率Fs32kHz,滤波器Fc5kHz
(3)输入位宽序列为9位
在此利用MATLAB来完成FIR滤波器系数的确定。
2.打开MATLAB的FDATool
MATLAB集成了一套功能强大的滤波器设计工具FDATOOL,可以完成多种滤波器的设计、分析和性能评估。
点击MATLAB主窗口下方的“start”按钮,选择“ToolBox”→“FilterDesign”→“FilterDesign&AnalysisTool”,打开FDATool。
3.滤波器的设计和分析
滤波器的设计:
选择DesignFilter进入设计滤波器界面,进行下列选择:
(1)滤波器类型为低通;
(2)设计方法为FIR,采用窗口法;
(3)滤波器阶数定制为11;
(4)Fs为32kHz,Fc为5kH。
设计好以上参数,点击DesignFilter,让MATLAB计算FIR滤波器系数并作相关分析。
滤波器分析:
计算完FIR滤波器系数后,往往需要对设计好的FIR滤波器进行相关的性能分析,以便了解该滤波器是否满足设计要求。
分析操作步骤如下:
选择FDATool的菜单“Analysis”→“MagnitudeResponse”,启动幅频响应分析。
图3.4显示了滤波器的幅频响应图
图3.4 FIR滤波器的幅频响应
选择“Analysis”→“PhaseResponse”,启动相频响应分析。
图3.5显示了滤波器的相频响应。
图3.5FIR滤波器的相频响应
求出滤波器的系数可以通过选择菜单“Analysis”→“FilterCoefficients”来观察。
4.量化
FDATool计算出的值是一个有符号小数,而在DSPBuilder下建立的FIR滤波器模型需要一个整数作为滤波器的系数。
所以必须进行量化,并对得到的系数进行归一化。
为此,点击FDATool左下侧的工具按钮
进行量化参数设置。
在设置“Turnquantization”前选择“√”。
滤波器的设计指标中,已经提到了FIR滤波器的输入位宽为9位,表示为有符号数。
5.导出滤波器系数
为导出设计好的滤波器系数,选择FDATool菜单的“File”→“Export…”,打开导出对话框,如图3.6所示。
在该窗口中,选择导出到工作区。
这时滤波器系数就存入到了一个一维变量Num中,不过这时Num中的元素是以小数形式出现的。
图3.6导出系数对话框
若在FIR滤波器模型中使用这些数据,还需将它们转化为整数:
在MATLAB主窗口的命令窗口中键入:
Num*(2^9)
得到:
< ANS= Columns1through10 -196293-45-259221221292 Columns11through12 -25 6.修改FIR滤波器模型添加参数 把计算机的系数逐个填入到FIR滤波器模型中,见图3.7。 这样就完成了一个12阶FIR低通滤波器的设计。 图3.712阶FIR低通滤波器 四、基于DSPBuilder设计FIR数字滤波器 1、利用DSPBuilder库建立DDS模型如图4.1所示。 图4.1DDS模型 2、加入激励,完成系统仿真如图4.2所示。 图4.2仿真结果 3、由Simulink模型转成VHDL如图4.3所示。 图4.3Simulink模型转VHDL 4.综合如图4.4和图4.5。 图4.4QuartusII综合 图4.5QuartusII综合 5、利用Modelsim完成功能仿真如图4.6。 图4.6功能仿真 五、课程设计心得 通过本次课程设计自己对滤波器的设计有了初步的了解和掌握。 也对MATLAB有了一定的了解。 设计过程中,学习了许多数字信号处理课程中关于数字滤波器的设计的内容,再通过利用参考文献及网络,完成了用MATLAB进行DSPBuilder的课程设计。 通过课程设计,加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识。 同时掌握编程方法和解决实际问题的技巧。 MATLAB环境下可以更方便,快捷的设计出具有严格线性相位的FIR滤波器,节省了大量的时间,且参数的修改也十分方便,还可以进一步进行优化设计。 通过一星期的DSP课程设计,我复习了MATLAB编程语言的基本概念、语法、语义和数据类型的使用特点,加深了对课堂所学理论知识的理解,掌握了运用结构化程序设计的基本思想和方法,更重要的是培养了自己的自学能力。 在平时的数字信号处理实验课中我们不少接触MATLAB编程语言,但在这次编写程序以及调试的过程中遇到了很多困难,一次问我通过去图书馆查找资料,请教同学,在自己一点点改善程序,最终编写出一些比较完善的程序,这使我在这次课程设计中学到了很多知识,使我对数字信号这门课程有了更加的了解和掌握。 在这一周的学习中的学习是我对数字信号处理这门课程有了进一步的理解。 经过查阅相关资料,逐步的掌握了滤波器的设计过程,使我加强了对实际问题的动手和思考和解决问题的能力。 但也暴露了自身的许多不足,如自主解决问题的能力有所欠缺,这在以后学习过程中需要更好的加强。 在这一周中每天都是忙碌的,但我觉得很充实,自己学到很多东西,也加深我对数字信号处理的学习兴趣。 数字信号里边的公式虽多,但理解了它、掌握了它,就会发现其中也是有规律可循的。 这次的课程设计中培养了我如何去学习和掌握新知识的能力,这对以后的学习和工作都有很大的帮助。 六、参考文献 ·[1]朱铭锆,赵勇,甘泉.DSP应用系统设计[M].北京: 电子工业出版社,2002. ·[2]程佩青.数字信号处理教程[M].第2版.北京: 清华大学出版社,2002. ·[3]楼顺天,李博菡.基于MATLAB的系统分析及设计——信号处理[M].北京: 西安电子科技大学出版社,1998. ·[4]胡广书.数字信号处理——理论、算法及实现[M].北京: 清华大学出版社,1997. ·[5]伍小芹,吴秋丽.FIR数字滤波器在DSP上的实现[J].现代电子技术,2007 (1): 85-87. ·[6]朱铭锆,赵勇,甘泉,等.DSP应用系统设计[M].北京: 电子工业出版社,2002. ·[8]程佩青.数字信号处理教程[M].2版.北京: 清华大学出版社,2002. 七、附录 实验清单: libraryieee; useieee.std_logic_1164.all; useieee.std_logic_signed.all; librarydspbuilder; usedspbuilder.dspbuilderblock.all; librarylpm; uselpm.lpm_components.all; EntitySubsystem2is Port( clock: instd_logic; sclr: instd_logic: ='0'; hn1: instd_logic_vector(11downto0); hn2: instd_logic_vector(11downto0); hn3: instd_logic_vector(11downto0); hn4: instd_logic_vector(11downto0); xin: instd_logic_vector(11downto0); xn4: outstd_logic_vector(11downto0); yn: outstd_logic_vector(19downto0) ); endSubsystem2; architectureaDspBuilderofSubsystem2is signalSAynO: std_logic_vector(19downto0); signalA0W: std_logic_vector(11downto0); signalA1W: std_logic_vector(11downto0); signalA2W: std_logic_vector(11downto0); signalA3W: std_logic_vector(11downto0); signalA4W: std_logic_vector(11downto0); signalA5W: std_logic_vector(11downto0); signalA6W: std_logic_vector(11downto0); signalA7W: std_logic_vector(11downto0); signalA8W: std_logic_vector(11downto0); signalA9W: std_logic_vector(23downto0); signalA10W: std_logic_vector(23downto0); signalA11W: std_logic_vector(23downto0); signalA12W: std_logic_vector(23downto0); signalA13W: std_logic_vector(25downto0); signalp15A0L0Add: std_logic_vector(23downto0); signalp15B0L0Add: std_logic_vector(23downto0); signalp15A1L0Add: std_logic_vector(23downto0); signalp15B1L0Add: std_logic_vector(23downto0); signalp15A0L1Add: std_logic_vector(24downto0); signalp15B0L1Add: std_logic_vector(24downto0); Begin assert(1<0)reportaltversionseverityNote; --Output-I/OassignmentfromSimulinkBlock"xn4" xn4<=A8W; yn<=SAynO; --Input-I/OassignmentfromSimulinkBlock"hn1" A0W<=hn1; --Input-I/OassignmentfromSimulinkBlock"hn2" A1W<=hn2; --Input-I/OassignmentfromSimulinkBlock"hn3" A2W<=hn3; --Input-I/OassignmentfromSimulinkBlock"hn4" A3W<=hn4; --Input-I/OassignmentfromSimulinkBlock"xin" A4W<=xin; --SumOperator-SimulinkBlock"ParallelAdderSubtractor" p15A0L0Add<=A9W; p15B0L0Add<=A10W; p15A1L0Add<=A11W; p15B1L0Add<=A12W; --Output-I/OassignmentfromSimulinkBlock"yn" yni: SBFgenericmap( width_inl=>26, width_inr=>0, width_outl=>20, width_outr=>0, lpm_signed=>BusIsSigned, round=>0, satur=>0) portmap( xin=>A13W, yout=>SAynO); --DelayElement-SimulinkB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FIR 数字滤波器 设计