FIR低通数字滤波器的设计_第1页
FIR低通数字滤波器的设计_第2页
FIR低通数字滤波器的设计_第3页
FIR低通数字滤波器的设计_第4页
FIR低通数字滤波器的设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、DSP技术与应用课程设计报告课 题 名 称:基于DSP Builder的FIR数字滤波器的设计与实现学 院: 电子信息工程学院 班 级: 11级电信本01班 学 号: 姓 名: 题 目 基于DSP Builder的FIR数字滤波器的设计与实现摘 要FIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近法设计FIR滤波器的思路和流程。在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1、fir2和remez

2、子函数分别实现窗函数法、频率采样法和等波纹逼近法设计FIR滤波器。然后检验滤波器的滤波效果,采用一段音频进行加噪声然后用滤波器滤,对比三段音频效果进而对滤波器的滤波效果进行检验。仿真结果表明,在相频特性上,三种方法设计的FIR滤波器在通带内都具有线性相位;在幅频特性上,相比窗函数法和频率采样法,等波纹逼近法设计FIR滤波器的边界频率精确,通带和阻带衰减控制。AbstractFIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近

3、法设计FIR滤波器的思路和流程。在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1、fir2和remez子函数分别实现窗函数法、频率采样法和等波纹逼近法设计FIR滤波器。然后检验滤波器的滤波效果,采用一段音频进行加噪声然后用滤波器滤,对比三段音频效果进而对滤波器的滤波效果进行检验。仿真结果表明,在相频特性上,三种方法设计的FIR滤波器在通带内都具有线性相位;在幅频特性上,相比窗函数法和频率采样法,等波纹逼近法FIR digital filter is an important part of digital signal processing, the FIR digi

4、tal filter with linear phase, so it has been widely applied in the collection and processing of information in the course of. This paper introduces the concept of FIR digital filter with linear phase conditions, analysis of the window function method and frequency sampling method and the ripple appr

5、oximation method of FIR filter design ideas and processes. Based on analyzing the principle of three kinds of design methods, by means of fir1, fir2 and Remez function of Matlab simulation software in the Toolbox window function method and frequency sampling method and respectively realize equirippl

6、e approximation method to design FIR filter. Then test the filtering effect of the filter, using an audio add noise and then filter, test three audio effects and comparison of filter filtering effect. Simulation results show that the phase frequency characteristic, three design methods of FIR filter

7、 with linear phase are in the pass band; the amplitude frequency characteristics, compared with the window function method and frequency sampling method, equiripple approximation method设计FIR滤波器的边界频率精确,通带和阻带衰减控制。Design of FIR filter with accurate boundary frequency, the passband and stopband attenuat

8、ion control.目 录一、绪论1二、FIR数字滤波器原理2三、DSP Builder设计流程3四、基于DSP Builder设计FIR数字滤波器8五、课程设计心得11六、参考文献12七、附录13一、绪论随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字滤波是谱分析、雷达信号处理、通信信号处理应用中的基本处理算法。与模拟滤波相比,数字滤波有很多优点,例如它可以满足滤波器对幅度和相位特性的严格要求,可以避免模拟滤波器无法克服的电压漂移、温度漂移和噪声等问题。用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便地改变滤波器的特性。 数字滤波器的功能

9、就是把输入序列通过一定的运算变换成输出序列,因此数字滤波器的结构系统中就必须包括一定数量和性能的运算器件和运算单元,而运算器件和运算单元的配置必须由数字滤波器的结构特点和性能特点来决定。 在现代电子系统中,数字滤波器的好坏对相关的众多工程技术领域影响很大,一个好的数字滤波器会有效的推动众多工程技术领域的技术改造和学科发展。数字滤波器依据冲激响应的宽度划分为有限冲激响应(FIR)滤波器和无限冲激响应滤波器(IIR)。FIR 滤波器在数字通信系统中被大量使用,以实现各种各样的功能,诸如低通滤波、带通滤波、抗混叠、抽样和内插等等。FIR数字滤波器以其良好的线性特性被广泛使用,属于数字信号处理的基本模

10、块之一。它涉及的领域很广,如:通信系统、系统控制、生物医学工程、机械振动、遥感遥测、地质勘探、航空航天、电力系统、故障检测、自动化仪器等。与IIR数字滤波器相比,它的最大优点就是可以实现线性相位滤波,而IIR主要是针对幅频特性进行逼近,相频特性会存在不同程度的非线性。在数字通信和图像传输与处理等应用场合都要求滤波器具有线性相位特性。许多工程技术领域都涉及到信号,这些信号包括电的、磁的、机械的、热的、声的、光的及生物体的等等。如何在较强的背景噪声和干扰信号下提取出真正的信号并将其用于实际工程,这正是信号处理要研究解决的问题。 20世纪60年代,数字信号处理理论得到迅猛发展,理论体系和框架逐渐趋于

11、成熟,到现在它己经成长为一门独立的数字信号处理学科。数字滤波器它可以将输入信号的某些频率成分或某个频带进行压缩,放大,从而改变输入信号的频谱结构,因此也可以说是个频率选择器。另外滤波的概念还包括对信号进行检测和参数估计。数字滤波是提取有用信息非常重要、非常灵活的方法,是现代信号处理的重要内容。因而在数字通信、语音图像处理、谱分析、模式识别、自动控制等领域得到了广泛的应用。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用将会越来越广泛. 二、FIR数字滤波器原理 1.1 FIR数字滤波器

12、的基本原理和结构 设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-1 FIR滤波器的结构图由公式(1-1)、公式(1-2)可见H(z)为z

13、-1的N-1阶多项式,它在z平面上有N-1个 零点并在原点z=0处有N-1重极点。故H(z)永远为稳定系统。所以FIR滤波器具有如下特点: 给h(n)附加一定条件就可以实现严格的线性相位特性; FIR滤波器的稳定性,在设计过程中不必考虑系统的稳定性问题; 由于h(n)为有限长,便于采用FFT进行系统运算,运算效率高; FIR滤波器的阶数由h(n)的长度决定,所以一个具有良好的幅频特性的FIR滤波器的阶数往往都比较高。 1.2 FIR数字滤波器的设计方法 使用FIR滤波器可以实现严格的线性相位特性,但其幅频特性的设计方法与IIR滤波器完全不同。FIR滤波器的设计方法有:窗函数法、频率采样法、切比

14、雪夫等波纹逼近法等。FIR数字滤波器的设计思想是:在保证线性相位条件的前提下,选择合适的h(n)长度N,使其传输函数H(ej)满足技术指标要求。本文采用窗函数法设计FIR数字滤波器。3、 DSP Builder 的FIR数字滤波器设计流程使用DSP Builder可以方便地在图形化环境中涉及FIR数字滤波器,而且滤波器系数的计算可以借助MATLAB强大的计算能力和现成的滤波器设计工具来完成。3.1 12阶FIR滤波器模型设计利用设计4阶FIR滤波器节可以方便地搭成4×n阶直接I型FIR滤波器。比如要实现一个12阶的低通滤波器,可以调用3个4阶FIR滤波器节来实现。1.设计4阶FIR滤

15、波器节子系统建立一个新的DSP Builder模型,复制FIR4tap模型到新模型。由FIR4tap模型建立子系统,并对端口信号进行修改,把子系统更名为fir4tap,如图3.1所示.fir4tap的内部结构如图3.2所示。 图3.1 fir4tap子系统图3.2 fir4tap子系统内部原理图2. 组成12阶FIR滤波器模型复制3个fir4tap,并将他们衔接起来。前一级的输出端口X4接后一级的X输入端口,并附加上12个常数端口,作为FIR滤波器系数的输入。把3个子系统fir4tap的输出端口y连接起来,接入一个3输入端口的加法器,得到FIR滤波器的输出yout。在做好子系统之后,修改其Ma

16、sk参数Mask Type为SubSystem AlteraBlockSet。设计好的12阶FIR滤波器如图3.3所示图3.3 12阶直接I型FIR滤波器模型3.2使用MATLAB的滤波器设计工具1. 滤波器指标设计一个12阶的FIR滤波器(h(0)=0),给定的参数如下:(1) 低通滤波器(2) 采样频率Fs32kHz ,滤波器Fc5kHz(3) 输入位宽序列为9位在此利用MATLAB来完成FIR滤波器系数的确定。2. 打开MATLAB的FDAToolMATLAB集成了一套功能强大的滤波器设计工具FDATOOL,可以完成多种滤波器的设计、分析和性能评估。点击MATLAB主窗口下方的“star

17、t”按钮,选择“ToolBox” “Filter Design”“Filter Design &Analysis Tool”,打开FDATool。3. 滤波器的设计和分析滤波器的设计:选择Design Filter进入设计滤波器界面,进行下列选择:(1) 滤波器类型为低通;(2) 设计方法为FIR,采用窗口法;(3) 滤波器阶数定制为11;(4) Fs为32kHz,Fc为5kH。设计好以上参数,点击Design Filter,让MATLAB计算FIR滤波器系数并作相关分析。滤波器分析:计算完FIR滤波器系数后,往往需要对设计好的FIR滤波器进行相关的性能分析,以便了解该滤波器是否满足设

18、计要求。分析操作步骤如下:选择FDATool的菜单“Analysis”“Magnitude Response”,启动幅频响应分析。图3.4显示了滤波器的幅频响应图图3.4 FIR滤波器的幅频响应选择“Analysis”“Phase Response”,启动相频响应分析。图3.5显示了滤波器的相频响应。图3.5FIR滤波器的相频响应求出滤波器的系数可以通过选择菜单“Analysis”“Filter Coefficients”来观察。4. 量化FDATool计算出的值是一个有符号小数,而在DSP Builder下建立的FIR滤波器模型需要一个整数作为滤波器的系数。所以必须进行量化,并对得到的系数进

19、行归一化。为此,点击FDATool左下侧的工具按钮进行量化参数设置。在设置“Turn quantization”前选择“”。滤波器的设计指标中,已经提到了FIR滤波器的输入位宽为9位,表示为有符号数。5. 导出滤波器系数为导出设计好的滤波器系数,选择FDATool菜单的“File”“Export”,打开导出对话框,如图3.6所示。在该窗口中,选择导出到工作区。这时滤波器系数就存入到了一个一维变量Num中,不过这时Num中的元素是以小数形式出现的。图3.6导出系数对话框若在FIR滤波器模型中使用这些数据,还需将它们转化为整数:在MATLAB主窗口的命令窗口中键入:Num*(29)得到:<&

20、lt;Num*(29)ANS =Columns 1through 10-196293-45-259221221292Columns 11 through 12-256. 修改FIR滤波器模型添加参数把计算机的系数逐个填入到FIR滤波器模型中,见图3.7。这样就完成了一个12阶FIR低通滤波器的设计。图3.7 12阶FIR低通滤波器四、基于DSP Builder设计FIR数字滤波器1、利用DSP Builder库建立DDS模型如图4.1所示。图4.1 DDS模型2、 加入激励,完成系统仿真如图4.2所示。图4.2 仿真结果3、 由Simulink模型转成VHDL如图4.3所示。图4.3Simul

21、ink模型转VHDL4.综合如图4.4和图4.5。图4.4 Quartus II综合图4.5 Quartus II综合5、 利用Modelsim完成功能仿真如图4.6。图4.6功能仿真5、 课程设计心得通过本次课程设计自己对滤波器的设计有了初步的了解和掌握。也对MATLAB有了一定的了解。设计过程中,学习了许多数字信号处理课程中关于数字滤波器的设计的内容,再通过利用参考文献与网络,完成了用MATLAB进行DSP Builder的课程设计。通过课程设计,加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识。同时掌握编程方法和解决实际问题的技巧。MATLAB环境下可以更方便,快捷的设计出具有严格

22、线性相位的FIR滤波器,节省了大量的时间,且参数的修改也十分方便,还可以进一步进行优化设计。通过一星期的课程设计,我复习了MATLAB编程语言的基本概念、语法、语义和数据类型的使用特点,加深了对课堂所学理论知识的理解,掌 握了运用结构化程序设计的基本思想和方法,更重要的是培养了自己的自学能力。 在平时的数字信号处理实验课中我们不少接触MATLAB编程语言,但在这次编写程序以及调试的过程中遇到了很多困难,一次问我通过去图书馆查找资料,请教同学,在自己一点点改善程序,最终编写出一些比较完善的程序,这使我在这次课程设计中学到了很多知识,使我对数字信号这门课程有了更加的了解和掌握。 在这一周的学习中的

23、学习是我对数字信号处理这门课程有了进一步的理解。经过查阅相关资料,逐步的掌握了滤波器的设计过程,使我加强了对实际问题的动手和思考和解决问题的能力。但也暴露了自身的许多不足,如自主解决问题的能力有所欠缺,这在以后学习过程中需要更好的加强。在这一周中每天都是忙碌的,但我觉得很充实,自己学到很多东西,也加深我对数字信号处理的学习兴趣。数字信号里边的公式虽多,但理解了它、掌握了它,就会发现其中也是有规律可循的。这次的课程设计中培养了我如何去学习和掌握新知识的能力,这对以后的学习和工作都有很大的帮助。6、 参考文献·1朱铭锆,赵勇,甘泉.DSP应用系统设计M.北京:电子工业出版社,2002.&

24、#160;·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版.北京:清华大学出版社,20

25、02. 7、 附录实验清单:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;library dspbuilder;use dspbuilder.dspbuilderblock.all;library lpm;use lpm.lpm_components.all;Entity Subsystem2 isPort(clock:in std_logic;sclr :in std_logic:='0'hn1:in std_logic_vector(11 downto 0);hn2:in std

26、_logic_vector(11 downto 0);hn3:in std_logic_vector(11 downto 0);hn4:in std_logic_vector(11 downto 0);xin:in std_logic_vector(11 downto 0);xn4:out std_logic_vector(11 downto 0);yn:out std_logic_vector(19 downto 0);end Subsystem2;architecture aDspBuilder of Subsystem2 issignalSAynO:std_logic_vector(19

27、 downto 0);signalA0W:std_logic_vector(11 downto 0);signalA1W:std_logic_vector(11 downto 0);signalA2W:std_logic_vector(11 downto 0);signalA3W:std_logic_vector(11 downto 0);signalA4W:std_logic_vector(11 downto 0);signalA5W:std_logic_vector(11 downto 0);signalA6W:std_logic_vector(11 downto 0);signalA7W

28、:std_logic_vector(11 downto 0);signalA8W:std_logic_vector(11 downto 0);signalA9W:std_logic_vector(23 downto 0);signalA10W:std_logic_vector(23 downto 0);signalA11W:std_logic_vector(23 downto 0);signalA12W:std_logic_vector(23 downto 0);signalA13W:std_logic_vector(25 downto 0);signal p15A0L0Add:std_log

29、ic_vector(23 downto 0);signal p15B0L0Add:std_logic_vector(23 downto 0);signal p15A1L0Add:std_logic_vector(23 downto 0);signal p15B1L0Add:std_logic_vector(23 downto 0);signal p15A0L1Add:std_logic_vector(24 downto 0);signal p15B0L1Add:std_logic_vector(24 downto 0);Beginassert (1<0) report altversio

30、n severity Note;- Output - I/O assignment from Simulink Block "xn4"xn4<=A8W;yn<=SAynO;- Input - I/O assignment from Simulink Block "hn1"A0W <= hn1;- Input - I/O assignment from Simulink Block "hn2"A1W <= hn2;- Input - I/O assignment from Simulink Block "

31、;hn3"A2W <= hn3;- Input - I/O assignment from Simulink Block "hn4"A3W <= hn4;- Input - I/O assignment from Simulink Block "xin"A4W <= xin;- Sum Operator - Simulink Block "ParallelAdderSubtractor"p15A0L0Add<=A9W;p15B0L0Add<=A10W;p15A1L0Add<=A11W;p1

32、5B1L0Add<=A12W;- Output - I/O assignment from Simulink Block "yn"yni : SBF generic map(width_inl=>26,width_inr=>0,width_outl=>20,width_outr=>0,lpm_signed=>BusIsSigned,round=>0,satur=>0)port map (xin=>A13W,yout=>SAynO);- Delay Element - Simulink Block "Del

33、ay"Delayi : SDelaygeneric map (LPM_WIDTH => 12,LPM_DELAY => 1,SequenceLength => 1,SequenceValue => 1)port map (dataa=>A4W,clock=>clock,ena =>'1',sclr =>sclr,result=>A5W);- Delay Element - Simulink Block "Delay1"Delay1i : SDelaygeneric map (LPM_WIDTH

34、=> 12,LPM_DELAY => 1,SequenceLength => 1,SequenceValue => 1)port map (dataa=>A5W,clock=>clock,ena =>'1',sclr =>sclr,result=>A6W);- Delay Element - Simulink Block "Delay2"Delay2i : SDelaygeneric map (LPM_WIDTH => 12,LPM_DELAY => 1,SequenceLength =>

35、; 1,SequenceValue => 1)port map (dataa=>A6W,clock=>clock,ena =>'1',sclr =>sclr,result=>A7W);- Delay Element - Simulink Block "Delay3"Delay3i : SDelaygeneric map (LPM_WIDTH => 12,LPM_DELAY => 1,SequenceLength => 1,SequenceValue => 1)port map (dataa=>

36、A7W,clock=>clock,ena =>'1',sclr =>sclr,result=>A8W);- Product Operator - Simulink Block "Product"Producti : AltiMult generic map (LPM_WIDTHA=>12,LPM_WIDTHB=>12,PIPELINE=>2,one_input=>0,lpm =>0,lpm_hint=>"UNUSED",cst_val =>"00000000000

37、0",SequenceLength=>1,SequenceValue=>1,dspb_widthr=>24)port map (DATAA=>A5W,DATAB=>A0W,clock=>clock,ena =>'1',sclr =>sclr,result=>A9W);- Product Operator - Simulink Block "Product1"Product1i : AltiMult generic map (LPM_WIDTHA=>12,LPM_WIDTHB=>12,

38、PIPELINE=>2,one_input=>0,lpm =>0,lpm_hint=>"UNUSED",cst_val =>"000000000000",SequenceLength=>1,SequenceValue=>1,dspb_widthr=>24)port map (DATAA=>A6W,DATAB=>A1W,clock=>clock,ena =>'1',sclr =>sclr,result=>A10W);- Product Operator -

39、Simulink Block "Product2"Product2i : AltiMult generic map (LPM_WIDTHA=>12,LPM_WIDTHB=>12,PIPELINE=>2,one_input=>0,lpm =>0,lpm_hint=>"UNUSED",cst_val =>"000000000000",SequenceLength=>1,SequenceValue=>1,dspb_widthr=>24)port map (DATAA=>A7W,DATAB=>A2W,clock=>clock,ena =>'1',s

温馨提示

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

评论

0/150

提交评论