《基于FPGA的数字滤波器的设计_毕业设计论文(39页).docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字滤波器的设计_毕业设计论文(39页).docx(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于FPGA的数字滤波器的设计_毕业设计论文-第 34 页重庆大学本科学生毕业设计(论文)基于FPGA的数字滤波器的设计学 生:黄建华学 号:20094719指导教师:杨力生专 业:电子信息工程重庆大学通信工程学院二O一三年六月Graduation Design(Thesis) of Chongqing UniversityDesign of Digital Filter Based on FPGAUndergraduate: Huang JianhuaSupervisor: Yang LishengMajor: Electronic Information EngineeringColle
2、ge of Communication EngineeringChongqing UniversityJune 2013摘 要数字信号处理在通信、雷达、声纳等中有着广泛的应用。数字滤波器的设计是数字信号处理的关键技术之一,有着十分重要的理论和实际意义。随着数字技术的不断发展,在许多场合,数字滤波器正在快速取代模拟滤波器。FPGA(现场可编程门阵列)在现代数字电路设计中发挥着越来越重要的作用。从设计简单的接口电路到设计复杂的状态机,FPGA所扮演的角色已经不容忽视。本论文完成了基于FPGA的FIR和IIR数字滤波器的设计与实现。本论文首先理论分析讨论了数字滤波器的设计方法,并使用MATLAB工具
3、验证采用哪种窗函数来设计FIR数字滤波器,使用哪种模拟滤波器原型映射IIR数字滤波器。然后根据模拟滤波器的技术指标来确定数字滤波器的技术指标,在MATLAB环境下按照数字滤波器的技术指标设计数字滤波器,并得到滤波器系数,编程实现系数量化,并且比较分析量化前后系统响应的差异,由此得到合适的量化等级。然后在ISE软件平台下根据MATLAB工具得到的量化系数,使用VHDL语言进行FIR和IIR滤波器算法模块编程,同时对AMP电路(可编程预放大器)模块、AD电路(模拟到数字转换器)模块和DA电路(数字到模拟转换器)模块分别进行编程配置,并且对各模块进行严格的软件仿真验证,其中AMP电路模块、AD电路模
4、块和DA电路模块必须进行硬件验证。最后将所有软件和硬件验证无误的模块整合,下载到FPGA硬件中,进行功能验证。验证结果符合设计要求。关键词:FIR滤波器,IIR滤波器,MATLAB,FPGA,VHDLABSTRACTDigital signal processing has been widely used in communications, radar, sonar and many other fields. The design of digital filter is one of the key technologies of digital signal processing,
5、which has a very important theoretical and practical significance. As digital technology continues to develop, on many occasions, the digital filter is rapidly replacing analog filters. FPGA (field-programmable gate array) in modern digital circuit design is playing an increasingly important role. F
6、rom the design simple interface circuit to the design of the complex state machine, FPGAs role has not been to ignore. This thesis accomplishes a FPGA-based FIR and IIR digital filter design and implementation. This thesis first theoretically analyses the method of digital filter design ,with MATLAB
7、 tool verifying which window function is suitable for the FIR digital filter design, which analog filter prototype maps IIR digital filter . And according to the technical specifications of the analog filter the paper determines the specifications of the digital filter. Next in the MATLAB environmen
8、t in accordance with the technical specifications of the digital filter the paper designs digital filters. And the paper gets the filter coefficients, programming to quantify the coefficients. And the paper has comparative analysis of before and after quantitative differences the system response, th
9、ereby obtaining a suitable quantization levels. Then in the ISE software platform according to the obtained quantized coefficients with MATLAB tools, the paper uses VHDL language to program FIR and IIR filter algorithm module. While the AMP circuit (programmable pre-amplifier) module, AD circuit (an
10、alog to digital converter) circuit module and DA (digital to analog converter) module are programmed to be configured. And each module has rigorous software simulation, where AMP, AD and DA circuit module must have hardware verification. Finally the paper integrates all the software and hardware ver
11、ification correct modules, downloading to the FPGA hardware for the functional verification. The Verified result meets the design requirements.Key words: FIR filter, IIR filter, MATLAB, FPGA, VHDL目 录摘 要IABSTRACTII目 录III1 绪论11.1 课题研究背景及意义11.2 国内外研究现状11.3 研究思路32 FIR数字滤波器简介42.1 FIR数字滤波器的原理42.2 FIR数字滤波器
12、的基本结构42.3 线性相位FIR数字滤波器的结构52.4 FIR数字滤波器的设计方法63 IIR数字滤波器简介73.1 IIR数字滤波器的原理73.2 IIR数字滤波器的基本结构73.3 IIR数字滤波器的设计方法84 MATLAB程序设计114.1 MATLAB简介114.2 FIR滤波器设计114.3 IIR滤波器设计155 VHDL程序设计215.1 VHDL语言简介215.2 DA电路配置215.3 AMP电路配置255.4 AD电路配置285.5 FIR滤波器设计315.6 IIR滤波器设计345.7 总体设计376 结论40参 考 文 献411 绪论1.1 课题研究背景及意义数字
13、信号处理(Digital Signal Processing,DSP)技术是从20世纪60年代以来,随着信息学科和计算机学科的高速发展而迅速发展起来的一门新兴学科。因为多数科学和工程遇到的是模拟信号,所以以前都是研究模拟信号处理的理论和实现。但是模拟信号处理难以做到高精度,受环境影响较大,可靠性差,且不灵活等。随着电子技术的飞速发展,加之数字信号处理技术的不断成熟和完善,数字信号处理已经逐渐取代模拟信号处理。相比于模拟信号处理,数字信号处理具有精度高、灵活性高、可靠性强、容易大规模集成、时分复用、可获得高性能指标、二维和多维处理等优点1。数字信号处理广泛应用在滤波与变换、通信、语音、图像、消费
14、电子、工业控制和自动化、医疗、军事等领域。并且,数字信号处理在数字汇聚、远程会议系统、融合网络、数字图书馆、多媒体通信、个人信息终端等新兴领域有很大的应用前景。数字滤波器是数字信号处理中很重要的一个分支。数字滤波器是对数字信号实现滤波的离散时间系统,它将输入的数字序列通过特定运算转变为所需的数字序列2。根据冲激响应函数的时域特性,可将数字滤波器分为两种,即无限长冲激响应IIR滤波器和有限长冲激响应FIR滤波器。数字滤波器一般由数字乘法器、加法器和延时单元组成的一种算法或装置。模拟滤波器分为有源和无源的,有源滤波器主要由集成运放、电阻、电容构成,无源的滤波器主要由R,L,C构成3。模拟滤波器的物
15、理构成导致存在电压漂移、温度漂移和噪声等问题。模拟滤波器还存在一个很严重的问题,当技术指标改变时,其常常要更换电容、电感、运放等元件,相当繁琐。FPGA(Field-Programmable Gate Array),即现场可编程门阵列,与早期的PROM、PLA、PAL、GAL、EPLD等可编程器件相比,在结构、工艺、集成度、功能、速度和灵活性方面都有很大的改进和提高4。FPGA的在线可重编程特性使FPGA设计灵活性得到很大的提高。这些改进和提高使FPGA广泛应用在控制、数字信号处理、嵌入式等领域有很大的应用空间。1.2 国内外研究现状数字滤波器的实现研究都集中在不同的VLSI技术实现方式。这些
16、滤波器的架构已很大程度上取决于目标应用程序的特定实现。如今几个广泛使用的数字信号处理器有德州仪器TMS320数字信号处理器,摩托罗拉56000和ADI公司的ADSP-2100系列,它们用来实现高速率的音频滤波处理。这些器件是非常灵活的,但性能上有缺陷5。而采样频率大于100 MH的高性能滤波设计,可以采用CMOS和BiCMOS技术来实现并且使用从全定制技术到传统技术出厂配置门阵列的方法。这些努力成果促进了特定应用领域的高性能滤波器设计的发展。定制VLSI技术存在几个潜在的缺点,但对于特定的应用程序设计目的,它确实能保证最佳的性能和效率。最明显的问题是这种定制技术缺乏灵活性6。定制器件通常只适合
17、某个特定的应用程序,并不能容易地重新配置,即使在同一领域的其他应用。定制VLSI技术还存在另一个问题是缺乏适应性。典型的定制技术不允许器件的功能在系统上进行修改比如故障维护。虽然这些问题在周详考虑下可以克服,但性能上的代价,实现的复杂度以及额外的设计时间使问题的解决不是那么灵活7。缺乏灵活性阻碍了某些特殊算法在高性能实时系统上进行有效的评估。只有大批量应用或者极为关键的少批量应用才能平衡定制方案的开发费用。但也存在很多算法在通用处理器上不能实现,并且在全定制的方案中不存在共通的地方。这些算法也不能通过传统的方法进行评估,从而限制了创新8。现场可编程门阵列(FPGA),可以缓解定制方法的一些问题
18、。FPGA是可编程逻辑器件,与传统的定制门阵列有明显类似。虽然有各式各样的FPGA实现方法,但存在一些比较普及的方法,它们都涉及任意可编程逻辑阵列块以及用于互连阵列块可配置布线资源。许多常用的FPGA是在系统可编程的,通过简单的重新编程,可以修改器件功能。FPGA的可编程性也有很多限制。特别是,FPGA的密集度只能达到单个模块一定复杂度的水平。器件架构的约束性也导致FPGA有所缺陷,比如逻辑块中的逻辑单元制约性和阵列中的线路延迟。但这些困难都可以通过周密设计来克服。由于集成电路的制造技术日益发展,FPGA高密度和高速度的趋势也将愈发明显。许多FPGA系列都是基于存储技术,这方面的发展也必然带来
19、FPGA的发展。这也使FPGA在某些具有挑战性的应用领域的应用变得可能9。FPGA非常适合定点数字信号处理算法。FPGA相比于DSP的优势在于FPGA的可重配置性所带来的附加灵活性。除了低成本实现高性能系统,由于集成电路制造时间短,FPGA的设计测试周期也相当短。考虑到不可预见的要求,这种新方法还可以进行调整。相比于DSP,FPGA的缺陷在于FPGA架构带来的密集度和布线限制性。另外逻辑门单元的数目和运算单元的数目也是有限的。阵列中的模块互连也存在一定的延迟。我国DSP技术起步较早,有很大的研究成果,基于FPGA数字信号处理的应用也与国外几乎同步发展。各大高校和研究所在这方面与ALTERA、X
20、ILINX等FPGA公司都有密切联系和合作。1.3 研究思路对模拟滤波器和数字滤波器进行比较,发现数字滤波器有很多优点。由此对于数字滤波器的研究显得更为重要和富有前景。选择在FPGA上实现数字滤波器是因为相比于其他硬件实现方法,它更具灵活性,成本又低,而性能又高。数字滤波器分为两种,即有限长冲激响应FIR滤波器和无限长冲激响应IIR滤波器。设计FIR滤波器有两种常用设计方法:从时域出发的窗函数法和从频域出发的频率采样法。本FIR滤波器设计采用窗函数法。但窗函数有很多种类,比如矩形窗、三角形窗、汉宁窗、海明窗等。本设计采用布拉克曼窗,其中原因会在下文加以阐述。IIR滤波器可以利用模拟滤波成熟的设
21、计理论进行设计。模拟滤波器的原型也有很多种类,有巴特沃斯、切比雪夫、椭圆等。本IIR滤波器选择椭圆滤波器来设计,原因会在下文阐述。按照上述分析,利用MATLAB进行滤波器理论设计,从中获得滤波器系数。在ISE平台下,根据滤波器系数,使用VHDL语言对滤波器算法进行编程并仿真验证。对于滤波器算法的硬件功能效果,必然还要用到AD电路(模拟到数字转换)模块和DA电路(数字到模拟)模块。所用本设计还要根据其时序电路,对AMP电路(可编程欲放大器)模块,AD电路模块和DA电路模块进行编程设计并且仿真验证。为了确定这三个关键模块是否配置成功,还必须下载到硬件中进行测试。各个模块都验证成功,将其整和到一个整
22、体程序,下载到硬件中进行验证。2 FIR数字滤波器简介2.1 FIR数字滤波器的原理一个数字滤波器可以用系统函数、单位脉冲响应和差分方程进行描述。其中系统函数可表示为: (式2.1)直接由H(z)得出表示输入输出关系的线性常系数差分方程为: (式2.2)FIR数字滤波器是指其单位冲激响应h(n)是有限长序列。故可知其系统函数只是z-1有理多式,即分母系数ak都为零。长度为N的FIR滤波器系统函数可表示为: (式2.3)由式2.3得出其表示输入输出关系的常系数线性差分方程为: (式2.4)式2.4可以认为是x(n)与单位脉冲响应h(n)的直接卷积。式2.3可以看出FIR滤波器系统函数在z平面上有
23、N-1个零点,在z=0处有N-1阶极点,这与IIR滤波器零极点分布有很大的不同。FIR滤波器的最主要特性之一是它可以在幅度特性任意设计的同时,满足严格的线性相位,同时保证稳定性。相比,IIR滤波器很难产生线性相位。所谓线性相位特性,是指滤波器对不同频率的正弦信号所产生的相移与正弦信号的频率成直线关系。因此,信号通过滤波器后,除了由相频特性的斜率决定的延迟外,可以不失真地保留通带以内的全部信号。这一特性使FIR滤波器在某些需要线性相位的数据通信、语音信号处理、图像处理等领域有着广泛的应用。2.2 FIR数字滤波器的基本结构FIR滤波器有直接型、级联型、频率抽样型和快速卷积型等基本结构。其中直接型
24、简单直观,系数调整方便,是最常见的结构。直接型结构如图2.1所示。 图2.1 FIR滤波器直接型结构这种结构也称为卷积型结构,或称横向滤波器结构。由图2.1可知,y(n)是由输入x(n)延时链加权求和构成,加权系数是由单位冲激响应h(n)决定的。在这种结构中,也存在缺点。每一个h(n)的变化都将导致系统零点的变化,从而改变系统特性,对零点控制就不方便。级联型结构能弥补这个缺点,它的结构特性使其能准确控制零点。2.3 线性相位FIR数字滤波器的结构大多数FIR滤波器的应用,都需要它能满足线性相位。如果FIR滤波器的单位冲激响应h(n)为实数,且满足以下两个条件之一:偶对称 h(n)=h(N-1-
25、n);奇对称 h(n)=-h(N-1-n),那么该FIR滤波器一定具有线性相位。图2.2是当N为偶数的偶对称线性相位FIR数字滤波器的结构,本FIR滤波器设计也属于种类型。根据该类型其幅度特性可知,适合设计低通滤波器,不适合设计高通和带阻滤波器。故本FIR滤波器设计属于低通滤波器设计。 图2.2 N为偶数的偶对称线性相位FIR数字滤波器的结构2.4 FIR数字滤波器的设计方法FIR滤波器设计的本质问题是要使所设计的FIR滤波器的频率响应逼近所要求的理想滤波器的频率响应。其有两种常用的设计方法:窗函数法和频率采样法。本设计采用的是窗函数法。 窗函数设计法的出发点是从时域出发,用窗函数截取具有理想
26、频率特性的滤波器的单位冲激响应来得到,以有限长近似理想的,从而使频率响应逼近理想的频率响应。理想的频率响应逆傅里叶变换得到: (式2.5)由于的无限长,所以要对其加窗限制即将与窗函数序列相乘,以得到有限长的单位冲激响应为: (式2.6)FIR滤波器设计常用的窗函数有:矩形窗函数、三角形窗函数、汉宁窗函数、海明窗函数、和布拉克曼窗函数等。具体参数指标可参看表2.1。一般希望窗函数的频谱满足以下两项要求:主瓣尽可能窄,以获得较陡的过渡带。最大的副瓣相对于主瓣尽可能地小,即能量集中在主瓣中。这样就可以减少肩峰和余振,表2.1 5种窗函数基本参数的比较窗函数类型主瓣宽度/dB旁瓣峰值/dB过渡带宽/r
27、ad阻带最小衰减/dB矩形窗-1321三角形窗-2525 汉宁窗-3144海明窗 -4153布莱克曼窗-5774提高阻带的衰减。但是这两项要求不可能同时得到最佳满足,常用的窗函数是在这两者之间取得适当的折中,往往需要增加主瓣宽度以换取副瓣的抑制,表2.1很好的体现这一点,主瓣宽度与旁瓣峰值的大小成正比。本FIR滤波器设计选择布莱克曼窗,大幅度地抑制副瓣。3 IIR数字滤波器简介3.1 IIR数字滤波器的原理IIR数字滤波器,顾名思义,其单位冲激响应是无限长的,故可推测其系统函数H(z) 是z-1有理分式,可表示为: (式3.1)式3.1可得出其差分方程可表示为: (式3.2)式3.1中至少有一
28、个ak不为零,若全为零则是FIR滤波器。系统函数H(z)在有限长Z平面(0|Z|)有极点存在,且全部极点位于单位园内,以保证IIR滤波器稳定。3.2 IIR数字滤波器的基本结构IIR滤波器结构上存在输出到输入的反馈,是递归型的,与FIR滤波器非递归型的结构不同。IIR滤波的基本网络结构有直接型、级联型和并联型三种。其中直接型又可分为直接I型和直接II型。直接I型和直接II型结构,简单直观,是比较常用的结构。图3.1和图3.2分别表示直接I型和直接II型结构。图3.1 直接I型结构图3.1可以看出,直接I型结构的系统函数H(z)也可以看作两个互相独立的子系统函数相乘。对于一个线性非移变系统,若交
29、换级联子系统的次序,总系统函数不变,即总的输入与输出之间的关系不变。若M=N,交换直接型结构中两个子系统网络,将相同的延时链合并,就得到直接II型结构。比较图3.1和图3.2可知,直接II型相比直接I型结构来说,所用延时单元更少,用硬件实现时可以节省移位寄存器,比直接I型经济;若用软件实现则可以节省存储单元。虽然直接II型相比于直接I型结构有上述优点,但不管是直接I型还是直接II型都存在一些共同的缺点,那就是对于高阶系图3.2 直接II型结构统而言,直接型结构存在零点和极点调整困难的缺点,还存在极点位置灵敏度大,对系数量化效应敏感等缺点。级联型和并联型结构能单独调整零极点位置,但并联型对于零点
30、的调整不如级联型方便。3.3 IIR数字滤波器的设计方法IIR滤波器设计相比于FIR滤波器设计的优势在于,它可以利用模拟滤波器成熟的设计理论进行设计,因而保留了一些典型模拟滤波器优良的幅度特性。但IIR滤波器有一个明显的缺点,就是相位特性不好控制,如果需要线性相位特性,必须用全通网络进行复杂的相位校正1。IIR数字滤波器的设计方法主要是将模拟滤波器按一定规则映射成数字滤波器。为了利用模拟滤波器设计IIR数字滤波器,必须先设计一个满足技术指标的模拟滤波器原型。常用的模拟低通滤波器原型有巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器等。巴特沃斯低通滤波器的幅频特性随频率的增加而单调下降。当阶数较小时,
31、过渡带下降较慢,要想使其幅频特性接近理想低通滤波器,就必须增加滤波器的阶数。滤波器阶数增加意味着滤波器复杂度的增加。由于巴特沃斯滤波器的频率特性曲线无论在通带和阻带都是频率的单调函数。因此当通带边界处满足指标要求式,阻带内肯定会有裕量。一种更有效的设计方法应该是将精确度均匀地分布在整个通带内,或均匀地分布在整个阻带内,或同时分布在两者之中,这样就能用较低的阶数满足系统设计要求2。切比雪夫滤波器和椭圆滤波器的幅频特性都具有这种等波纹特性。切比雪夫滤波器幅频特性只是在通带内是等波纹的,在阻带内是单调的,称为切比雪夫I型滤波器,或者在阻带内是等波纹的,在通带内是单调的,称为切比雪夫II滤波器,然而椭
32、圆滤波器在通带和阻带内都具有等波纹幅频响应特性。因此,用椭圆滤波器来实现相同性能的滤波器时,所需的阶数更低,性能更好。由此,本IIR滤波器设计采用椭圆滤波器原型。为了使得数字滤波器与模拟滤波器频率特性之间有某种相似性,并且是一种因果稳定的映射,这种由S平面到Z平面的映射,应当满足以下两条:第一,S平面的虚轴j必须映射为Z平面的单位圆;第二,S平面的左半平面必须映射为Z平面的单位圆内2。满足以上两条常用的映射方法有:冲激响应不变法和双线性变换法。冲激响应不变法的映射关系可表示为: (式3.3)设模拟系统函数的全部极点sk是单阶的,且分母的阶数高于分子的阶数,则系统函数可表达为部分分式形势: (式
33、3.4)冲激响应不变法得到的数字滤波器系统函数可表示为: (式3.5)用冲激响应不变法设计数字滤波器会产生频谱混叠现象,使数字滤波器的频率响应偏离模拟滤波器的频率响应。如果不考虑频谱混叠现象,则这种方法设计的数字滤波器会很好的重现原模拟滤波器的频率特性。 双线性变换法的映射关系可表示为: (式3.6)式3.6中常数c的选择可以使模拟滤波器的频响特性和数字滤波器的频响特性在不同的频率范围有某种对应的关系,起到调节两者频带间关系的作用。用双线性变换法将模拟滤波器系统函数转换成数字滤波器系统函数的变换公式可表示为: (式3.7)采用双线性变换法设计IIR数字滤波器可以很好地消除频谱混叠现象。故本设计
34、采用双线性变换法。4 MATLAB程序设计4.1 MATLAB简介MATLAB是由美国MathWorks公司开发的商业数学软件,与Mathematica、Maple、MathCAD并称为四大数学软件。MATLAB是一款主要用于科学计算及程序设计的可视化高性能软件。它集数值分析、矩阵计算、数据可视化和图形显示等强大功能于一体,构成了一个界面友好的用户环境10。MATLAB取名源于矩阵实验室(Matrix Laboratory),意为以矩阵形势处理数据。MATLAB主要包括五大基本组成部分:开发环境、MATLAB语言、绘图功能、MATLAB数学函数库、MATLAB应用程序接口11。MATLAB的优
35、势在于:编程环境、简单易用、强处理能力、图形处理、程序接口和应用软件开发等。MATLAB的功能组成和优势使其在数值分析、工程与科学绘图、控制系统、数字信号处理、数字图像处理、通讯系统等领域有着广泛的应用。MATLAB为很多专门的领域和学科开发了功能强大的工具箱(Toolbox),用户可以直接调用工具箱函数进行设计,工具箱涉及的领域包括:信号处理、图像处理、控制系统、概率统计、数据采集、系统辨识、优化算法等12。本设计利用其中的信号处理工具箱。MATLAB中的信号处理工具箱提供了丰富的数字信号处理函数,比如窗函数、滤波器分析函数、滤波器设计函数、信号变换函数等,对于数字信号处理的应用有很大的帮助
36、。4.2 FIR滤波器设计利用MATLAB设计数字滤波器有两种方法:一种是调用滤波器函数编写程序;另一种是使用交互式FDATool或者SPTool工具设计。本设计采用第一种方法。数字滤波器的设计一般给出的是模拟域技术指标,必须将他们转换成数字域技术指标。转换公式如下: (式4.1)式4.1中,是模拟域频率,是采样频率,是数字域频率。 本FIR滤波器设计中,采样频率=135KHz,模拟域截止频率=9KHz,要求线性相位,滤波器阶数为17阶。根据式4.1可得数字域截止频率为: (式4.2)本设计采用窗函数法设计FIR滤波器,在MATLAB中,几种常用的窗函数的计算公式如表4.1所示。计算公式中N代
37、表窗函数的长度,返回的变量w是一个长度为N的列向量,表示N点窗函数w(n)。在MATLAB中,函数fir1可以用于窗函数法设计表4.1 几种常用窗函数的计算公式窗函数类别计算公式矩形窗w=rectwin(N)三角形窗w=bartkett(N)海明窗w=hamming(N)汉宁窗w=hann(N)布莱克曼窗w=Blackman(N)FIR滤波器。其调用格式有四种:b=fir1(N,wn);b=fir1(N,wn,window);b=fir1(N,wn,ftype);b=fir1(N,wn, ftype,window)。其中N表示滤波器的阶数,wn是截止频率,取值在0到1之间,它是以采样频率的一半
38、为基准频率的归一化值,1对应采样频率的一半,b为滤波器的系数向量h(n)(按降幂排列),window用于指定窗函数种类,缺省为海明窗,窗函数的长度为N+1。参数ftype用于设计高通、带通和带阻滤波器,缺省为设计低通滤波器。本设计中,所需FIR滤波器阶数为17阶,那么窗函数的长度为18,调用窗函数和fir1函数时,应注意N的值。FIR滤波器MATLAB设计程序如下:N1=18;N2=18;N3=18;w1=blackman(N1);w3=rectwin(N3);b1=fir1(N1-1,2/15,w1);b2=fir1(N2-1,2/15);b3=fir1(N3-1,2/15,w3);b0=a
39、2dt(b1,16);disp(b0);h1,omega1=freqz(b1,1,512);h2,omega2=freqz(b2,1,512);h3,omega3=freqz(b3,1,512);h0,omega0=freqz(b0,1,512);plot(omega1/pi,20*log10(abs(h1),b,omega2/pi,20*log10(abs(h2),b:,omega3/pi,20*log10(abs(h3),b-);grid on;xlabel(归一化频率);ylabel(增益/dB);axis(0 1 -120 2);legend(布拉格曼窗,海明窗,矩形窗);figure
40、;plot(omega1/pi,20*log10(abs(h1),b,omega0/pi,20*log10(abs(h0),b:);grid on;hold on;xlabel(归一化频率);ylabel(增益/dB);axis(0 1 -120 2);legend(布拉格曼窗原始,布拉格曼窗量化后);disp(h1(n)=);disp(b1);for i=1:18 a=dectobin(b1(i),16); num=0; for k=1:16 num=a(k).*2.(-k)+num; end; disp(a); disp(num);end上述程序调用了三种窗函数设计FIR滤波器,其所得幅频
41、特性如图4.1所示。由图4.1可知,使用布拉格曼窗时,副瓣峰值明显比海明窗和矩形窗的小,很好地抑制了副瓣,符合预期要求。上述程序还实现了系数量化和量化前后滤波器幅频特性比较,其中调用了自己编写a2dt和dectobin函数,用于实现系数量化,a2dt和dectobin程序不在这列出。由于滤波器的所有系数都必须以有限长度的二进制码形式存放到存储器中,所以实际系统与理想系统之间存在误差,从而导致滤波器零极点位置发生偏离,进而影响到滤波器的性能。故滤波器系数合理的量化,对数字滤波器的设计特别关键。图4.1 三种窗函数实现的FIR滤波器幅频特性图4.2和图4.3分别是使用15位和16位二进制系数量化前
42、后的幅频特性。比较图4.2和4.3可知,使用15位二进制系数量化前后的幅频特性差异很大,使用16位二进图4.2 15位二进制系数量化前后的幅频特性制系数量化前后的幅频特性差异很小,量化前后幅频特性曲线几乎重合,故采用16位二进制系数量化。图4.3 16位二进制系数量化前后的幅频特性16位二进制系数量化结果如表4.1所示。表4.1中数据,满足线性相位的要求。表4.2 16位二进制系数量化结果h(n)原始数据16位二进制h(0)、h(17)000000000000000h(1)、h(16)0.000000000000000000h(2)、h(15)0.001500000001100001h(3)、
43、h(14)0.008200001000011011h(4)、h(13)0.025500011010001000h(5)、h(12)0.056800111010001011h(6)、h(11)0.099101100101011110h(7)、h(10)0.141210010000100011h(8)、h(9)0.1677101010111011104.3 IIR滤波器设计用MATLAB进行IIR滤波器设计有两种方法,第一种是直接调用数字滤波器函数设计,第二种是调用模拟滤波器函数设计模拟滤波器,再调用冲激响应不变法或双线性变换法映射函数,转变成数字滤波器。两者方法的不同在于第一种只采用双线性变换法
44、,而第二种冲激不变法和双线性变换法都适用。本设计采用的是双线性变换法,故使用第二种方法。MATLAB中IIR数字滤波的设计通常包含两个步骤,一是根据技术指标确定滤波器阶次N和截止频率缩放因子wn,二是确定传输函数的系数。MATLAB信号处理工具箱中提供了常用的设计IIR滤波器的函数,可以方便地调用这些函数来完成滤波器的设计,比如buttord,cheb1ord,cheb2ord,ellipord函数,他们分别对应于数字巴特沃斯滤波器、数字切比雪夫I型滤波器、数字切比雪夫II型滤波器和数字椭圆滤波器阶次N和截止频率缩放因子wn的确定,调用格式如表4.3所示。表4.3中,wp和ws分别对应通带截止
45、频率和阻带起始频率,单位为rad,表4.3 4种IIR滤波器设计函数调用格式IIR滤波器种类调用格式巴特沃斯N,wn=buttord(wp,ws,Rp,Rs)切比雪夫I型N,wn=cheb1ord(wp,ws,Rp,Rs)切比雪夫II型N,wn=cheb2ord(wp,ws,Rp,Rs)椭圆N,wn=ellipord(wp,ws,Rp,Rs)Rp和Rs分别对应通带最大衰减和阻带最小衰减,单位为dB。MATLAB信号处理工具箱中的函数butter,cheby1,cheby2,ellip用于确定巴特沃斯滤波器、切比雪夫I型滤波器、切比雪夫II型滤波器和椭圆滤波器传输函数的系数,调用格式如表4.4所示。表4.4中B是滤波器系统函数的分子多项式系数, 表4.4 4种滤波器传输函数系数计算函数滤波器种类调用格式巴特沃斯B,A=butter(N,wn,ftype)切比雪夫I型B,A=cheby1(N,Rp,wn,ftype)切比雪夫II型B,A=cheby2(N,Rp,wn,ftype)椭圆B,A=ellip(N,Rp,Rs,wn,ftype)A是数字滤波器系统函数的分母多项式系数,ftype用于指定滤波器类型,缺省为低通。在以上的调用中,加上参数s,完成的是相应模拟滤波器设计。本IIR滤波器设计中,采样频率fs=135KHz,其