资源描述
DSP课程设计论文摘 要本论文首先介绍了滤波器的滤波原理以及数字滤波器的设计方法及过程。重点介绍了FIR数字滤波器的设计方法。即各种窗函数法和等效最佳一致逼近法。在此基础上,用DSP虚拟实现任意阶FIR数字滤波器。此设计扩展性好,便于调节滤波器的性能,可以根据不同的要求在DSP上加以实现。滤波是信号处理中最基本又极为重要的技术,利用滤波器技术可以从复杂的信号中提取出所需要的信号,抑制不需要的信号。绝大多数传感器输出的信号,在使用过程中,都必须进行滤波。所以滤波器是具有一定传输选择特性的、对信号进行加工处理的装置、它允许输入信号中的一些成分通过,抑制或衰减另一些成分。其功能是将输入信号变换为人们所需要的输入信号。本论文主要给出了FIR数字滤波器的设计方法和原理。关键字:DSP;滤波;FIR数字滤波器;AbstractThis thesis introduced the design method and process of filtering of filter a principle and number filter first. Particularly introduced the design method of FIR number filter. Then the various window function method and etc. effect is the best to unanimously approach a method. On this foundation, carry out the rank FIR number with the DSP conjecture the filter is arbitrarily.This design expands sex well, easy to regulate the function of filter, can take into to carry out on DSP according to the different request. Filtering the wave is the most basic and extremely and important technique in the signal processing, making use of the filter technique can withdraw the signal that needs from the complicated signal and repress dont need of signal.The great majority spreads the feeling machine outputs signal, in the process of using in, have to carry on filtering wave.So filter is have to definitely deliver choice characteristic, carry on to the signal process processed device, it to allow importation signal in of some compositions pass and repress or the Shuai reduce a little bit another compositions.Its function is importation signal the transfor- mation is the importation signal that people need.This thesis mainly gave the design method and principle of FIR number filter. Keywords: DSP;Filter wave;FIR number filter;目 录摘 要IAbstractII目 录III第一章 绪论11.1 DSP展发史11.2 DSP的基本特征11.3 TMS320C54xx的硬件结构21.3.1 C54X的CPU体系结构21.3.2 指令缓冲单元(I)31.3.3 程序流程单元(P)31.3.4 地址程序单元(A)31.3.5 数据计算单元(D)41.4 DSP的设计41.4.1 DSP的设计特点41.4.2 DSP系统的设计流程5第二章 FIR数字滤波器的简介及基本原理62.1 数字滤波器的简介62.2 FIR数字滤波器的结构72.3 FIR数字滤波器的特性92.3.1 FIR数字滤波器的相位特性92.3.2 线性相位FIR数字滤波器的幅度特性10第三章 基于MATLAB的FIR数字滤波器设计143.1 数字滤波器的设计方法描述143.2 常用窗函数及设计方法143.3 基于切比雪夫等效一致逼近法193.4 FIR数字滤波器的MATLAB设计203.4.1 用各种窗函数设计FIR数字滤波器203.4.2 用remez函数设计FIR数字低通滤波器223.4.3 应用FDATOOl设计FIR滤波器26第四章 FIR数字滤波器的DSP实现(CCS仿真)304.1 CSS的特点304.2 CCS代码生成工具及程序流程图304.3 CCS集成开发环境的配置324.4 CCS 集成开发环境应用(与MATLAB联合仿真)33第五章 参 考 文 献4242第一章 绪论1.1 DSP发展史自20世纪70年代末80年代初DSP芯片诞生以来DSP芯片得到了飞速的发展。DSP产品的应用己扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素。DSP发展历程大致分为三个阶段:20世纪70年代理论先行,80年代产品普及和90年代的突飞猛进。在DSP出现之前数字信号处理只能依靠微处理器(MPU)来完成。但MPU较低的处理速度无法满足高速实时的要求。因此,直到20世纪70年代,有人才提出了DSP的理论和算法基础。随着大规模集成电路技术的发展,1978年AMI公司生产出世界上第一片DSP芯片52811。1979年美国Intel公司发布的商用可编程器2920是DSP芯片的一个重要里程碑。1980年日本NEC公司推出的月PD7720是第一个具有乘法器的商用DSP芯片。几年后,第二代基于CMOS工艺的DSP芯片应运而生。80年代后期,第三代DSP芯片问世。90年代DSP发展最快,相继出现了第四代和第五代DSP器件。在这之后,最成功的DSP芯片当数美国德州仪器公司 (Texas Instruments,简称TI)的一系列产品,其DSP市场份额占全世界份额近的50%。目前DSP芯片的价格越来越低,性能价格比日益提高,具有巨大的应用潜力。经过20年的发展,DSP器件在高速度,可编程,小型化,低功耗等方面都有了长足的发展,单片DSP芯片最快每秒可完成16亿次(160OMIPS)的运算,生产DSP器件的公司也不断壮大。在当今的数字化时代,DSP己成为通信设备、计算机和其它电子产品的基础器件。数字信号处理器与数字信号处理有着密不可分的关系,我们通常说的“DSP”可以指数字信号处理 (Digital Signal Processing),也可以代表数字信号处理器(Digital signal Processor)在本文里均指数字信号处理器。数字信号处理是一门包括了许多学科并应用于很多领域的学科,是指利用计算机或是专用处理设备,以数字形式对信号进行分析、采集、合成、变换、滤波、估值、压缩、识别等处理,得到符合要求的信号形式。数字信号处理器是用于处理数字信号的器件,因此它是伴随着数字信号处理才产生的。1.2 DSP的基本特征本设计采用的是TMS320C54x系列DSP,具有改进的哈佛结构、硬件乘法器、流水线结构、高效特殊才旨令集等优点,使它的处理速度和容量大大提高,为数字滤波中的复杂算法的实现提供了硬件的保证。1、哈佛总线结构计算机的总线结构可分为两种。一种是冯诺依曼结构,其特点是程序和数据共用一个存储空间。统一编址依靠指令计数器提供的地址来区分是指令数据还是地址。由于对数据和程序进行分时读写,执行速度漫。但是半导体工艺的飞速发展克服了这一缺陷,同时这一结构使计算机结构得到简化,并成为计算机发展的一个标准。但由于原理上的特点,这一结构并不适合进行具有高度实时要求的数字信号处理。哈佛结构与冯诺依曼结构相比,其主要特点是程序和数据具有独立的存储空间,有着各自独立的程序总线和数据总线,大大地提高了数据处理能力,非常适合于实时数字信号处理。TI公司的DSP芯片的结构是改进的哈佛结构,内部采用三个并行的总线,程序读写总线、PAB)、读数据总线 (DABI)、写数据总线(DABZ),每组总线连接不同的存储器空间,使程序存储器与数据存储器成为独立的两个存储空间,并且允许数据在程序存储器和数据存储器之间进行传递,这种结构允许取指令和取操作数并行进行,增加了器件的运算速度。2、硬件乘法器在通用的计算机上,算术逻辑单元(ALU)只能完成两个操作数的加、减及逻辑运算,而乘法(或除法)则是由加法和移位来实现。因此它们实现乘加运算就比较慢,而在数字滤波算法中需要大量的乘加运算,在TMs320c55xDSP中有一个硬件乘法器,可以在一个指令周期内完成一次乘法和一次加法运算,可以大大提高数字滤波系统的运算速度。3、流水线结构TMS320C54xDSP采用四级流水线指令操作方式,减少了指令的执行时间,提高了处理器的吞吐量。任何处理器执行一条指令,总是要经过取指令、译码、读操作数和执行指令四个阶段,需要若干个机器周期才能完成。TMS320C54xDSP系列由于指令和操作数来自不同的空间,同一时刻,可以有四条指令的不同阶段在并行处理,尽管每条指令执行的时间仍然是几个机器周期,但由于指令的流水作业,实现了多条指令的并行执行。4、高效指令集数字信号处理运算的特点之一就是单一运算的重复执行,在通用的处理器中,一般采用软件的方法来解决,基本方法是采用循环控制或指令重复,循环控制除了在判断行环次数及操作转向上需要指令开销外,还会因DSP流水线的频繁中断而造成相当大的开销:指令重复的代价是增加了程序代码长度,占用更多的存储空间。而在TM5320C54x DSP中设置了硬件循环控制电路,提供了重复指令,实现零开销的循环控制。所有这些优点使得DSP非常适合来做数字滤波器的硬件电路。1.3 TMS320C54xx的硬件结构 1.3.1 C54X的CPU体系结构 C54X有1条32位的程序数据总线(PB),5条16位数据总线(BB、CB、DB、EB、FB)和1条24位的程序地址总线及5条23位地址总线,这些总线分别与CPU相连。总线通过存储单元接口(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。这种并行的多总线结构,使CPU能在一个CPU周期内完成1次32位程序代码读、3次16位数据读和两次16位数据写。C55X根据功能的不同将CPU分为4个单元,指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)、和数据计算单元(D)。 读程序地址总线(PDA)上传送24位的程序代码地址,由读程序总线(PB)将32位的程序代码送入指令缓冲单元进行译码。 1.3.2 指令缓冲单元(I)C54X的指令缓冲单元有指令缓冲队列IBQ和指令译码器组成。在每个CPU周期内,I单元将从程序数据接收的4B程序代码放入指令缓冲队列,指令译码器从队列中取6B程序代码,根据指令的长度可对8位、16位、24位、32位和48位的变长指令进行译码,然后把译码数据送入P单元、A单元和D单元去执行。 1.3.3 程序流程单元(P)程序流程单元有程序地址产生电路和寄存器组凑成。程序流程单元产生所有程序空间的地址,并控制指令的读取顺序。程序地址产生逻辑电路的任务是产生读取空间的24位地址。一般情况下,它产生的是连续地址,如果指令要求读取非连续地址的程序代码时,程序地址产生逻辑电路能够接收来自I单元的立即数和来自D单元的寄存器值,并将产生的地址传送到PAB。 在P单元中使用的寄存器分为5种类型: a.程序流寄存器:包括程序计数器、返回地址寄存器和控制流程关系寄存器。 b.块重复寄存器:包括块重复寄存器0和1(BRC0、BRC1)BRC1的保存寄存器(BRS1)、块重复起始地址寄存器0和1以及块重复结束地址寄存器0和1。 c.单重复寄存器:包括单重复寄存器和计算单重复寄存器。 d.中断寄存器:包括中断标志寄存器0和1、中断使能寄存器0和1以及调试中断使能寄存器0和1。 e.状态奇存期:包括状态寄存器0,1,2和3。 1.3.4 地址程序单元(A) 地址程序单元包括数据地址产生电路、算术逻辑电路和寄存器组构成。 数据地址产生电路能够接收来自I单元的立即数和来自A单元的寄存器产生读取数据空间的地址。对于使用间接寻址模式的指令,有P单元向DAGEN说明采用的寻址模式。 A单元包括一个16位的算术逻辑单元,它既可以接收来自I单元的立即数也可以与存储器、I/O空间、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信。 A单元包括的寄存器有以下几种类型: a.数据页寄存器:包括数据页寄存器和接口数据页寄存器; b.指针:包括系数数据指针寄存器、堆栈针寄存器和8个辅助寄存器; c.循环缓冲寄存器:包括循环缓冲大小寄存器、循环缓冲起始地址寄存器; d.临时寄存器:包括临时寄存器。 1.3.5 数据计算单元(D)数据计算单元由移位器、算数逻辑电路、乘法累加器和寄存器组构成。D单元包含了CPU的主要运算部件。 D单元移位器能够接收来自I单元的立即数,能够与存储器、I/O单元、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信,此外,还可以向D单元的ALU和A单元的ALU提供移位后的数据。移位可以完成以下操作: a.对40位的累加器可以完成向左最多32位的移位操作,移位数乐意从零食寄存器读取或由指令中的常数提供; b.对于16位寄存器、存储器或I/O空间数据可完成左移31位或32位的移位操作; c.对于16位立即数可完成向左移最多15位的移位操作。 1.4 DSP的设计1.4.1 DSP的设计特点DSP系统是以数字信号处理为基础的,因此不但具有数字处理的全部优点而且还具有以下特点:a.接口方便:DSP应用系统与其他以现代;之字技术为基础的系统或设备都是相互兼容的,这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易得多。b.编程方便:DSP应用系统中的可编程DSP芯片,能灵活方便地进行修改和升级。c.稳定性好:DSP应用系统以数字处理为基础,受环境温度及噪声的影响较小、可靠性高,无器件老化现象。d.精度高:16位数字系统可以达到10一级的精度。e.可重复性好:模拟系统的性能受元器件参数性能变化的影响比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产。f.集成方便:DSP应用系统中的数字部件有高度的规范性,便于大规模集成。当然,数字信号处理也存在一些缺点。例如,对于简单信号处理任务,若采用DSP则使成本增加。DSP系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且DSP系统消耗的功率也较大。此外,DSP技术更新速度快,对于数学知识要求高,开发和测试工具还有待进一步完善。1.4.2 DSP系统的设计流程一个DSP系统的设计过程大概要有以下几个步骤:a.根据系统的任务要求,确定系统处理精度要求、速度要求、实时性要求等性能指标。b.根据系统的要求进行高级语言的算法模拟,比如使用MATLAB等仿真工具,验证算法的可行性,得出最佳的处理方法。c.DSP的系统设计,主要分为硬件设计和软件设计。硬件设计是指根据系统要求选择合适的DSP芯片然后设计相应的外围电路。软件设计主要是指根据系统的要求和选用的DSP芯片编写相应的程序。程序的编写可以使用汇编语言,汇编语言编写的程序效率高,但比较烦杂;也可采用C语言,DSP的C语言基本上是标准C语言,编写比较简单,但效率低。在实际系统开发时往往是两种语言结合编写,在算法运算量大的地方使用汇编语言,在运算量小的地方使用C语言,这样既能缩短软件的开发周期,提高程序的可读性和可移植性,又满足了系统的实时性要求。第二章 FIR数字滤波器的简介及基本原理2.1 数字滤波器的简介随着信息时代和数字世界的到来,数字信号处理已成为一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。数字信号处理(DSP)包括两重含义:数字信号处理技术(Digital Signal Processing )和数字信号处理器( Digital Signal Processor )。数字信号处理(DSP)是利用计算机或专用处理设备,以数值计算的方法、对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,其应用范围涉及几乎所有的工程技术领域。在数字信号处理的应用中,数字滤波器很重要而且得到了广泛的应用。按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(IIR)与有限长冲击响应(FIR)等等。其中,线性时不变的数字滤波器是最基本的类型;而由于数字系统可以对延时器加以利用,因此可以引入一定程度的非因果性,获得比传统的因果滤波器更灵活强大的特性;IIR 滤波器的特征是具有无限持续时间冲激响应,这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器,而FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现,但其结构主要还是是非递归结构,没有输出到输入的反馈,并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真,而线性相位体现在时域中仅仅是h( n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的,且不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。相对于IIR滤波器,FIR滤波器有着易于实现和系统绝对稳定的优势,因此得到广泛的应用;对于时变系统滤波器的研究则导致了以卡尔曼滤波为代表的自适应滤波理论的产生。自适应滤波即利用前一时刻已获得的滤波器参数等结果,自动地调节(更新)现时刻的滤波器参数,以适应信号和噪声未知的统计特性,或者随时间变化的统计特性,从而实现最优滤波。几种主要的自适应滤波器为:最小均方(LMS)自适应滤波器、递推最小二乘(RLS)自适应滤波器、格型自适应滤波器、无限冲击响应(IIR)自适应滤波器。而自适应去噪电路是信号处理领域一个简单应用,一个被噪声污染的信号借助于相关噪声可以把信号提取出来,而噪声不断变化,为了得到较清晰的语音信号必须采用自适应去噪技术,随噪声变化进行自适应滤波,滤波器自动调整它们的系数。一个数字滤波器可以用系统函数表示为:由此式可得到表示输入输出关系的常系数线性差分方程为:可见数字滤波器的功能就是把输入序列x(n)通过一定的运算变换成输出序列y(n)。不同的运算处理方法决定了滤波器实现结构的不同。数字滤波器的运算结构有两种表示方法:方框图和信号流图法,如图所示:最常见的3个基本运算单元:加法器、单位延时器和常数乘法器。信号流图 方框图 单位延时 乘常数 相加 研究滤波器实现结构的意义:(1)滤波器的基本特性,如有线长冲激响应与无限长冲激响应,决定了结构上有不同的特点;(2)不同结构所需的存储单元及乘法次数不同,前者影响复杂性,后者影响运算速度;(3)在有限精度(有限字长)实现情况下,不同运算结构的误差及稳定性不同;(4)好的滤波器结构应该易于控制滤波器性能,适合于模块化实现,便于时分复用;2.2 FIR数字滤波器的结构设 h ( n) ( n = 0,1, 2 N - 1)为滤波器的冲激响应,输入信号为 x ( n) ,则 FIR 滤波器就是要实现下列差分方程: 数字滤波器具有一下差分方程: (1)式中,为输入序列,为输出序列,和为滤波器系数,N是滤波器阶数。若所有的均为0,则有: (2)(2)式即为FIR的差分方程。为了不失一般性,用下式来表示FIR的滤波器差分方程: (3)将(2)式进行Z变换,整理后可得FIR滤波器的传递函数: (4)FIR滤波器实质上就是一个分节的延迟线,把每一节的输出用滤波器系数进行加权累加,便得到滤波器的输出结果,它总是稳定并且可实现的。在一些工程实际应用(如:图像处理、数据调制解调)中,往往对相位要求较高。FIR滤波器可以实现严格的线性相位,从而得到了广泛应用。它的差分方程数学表达式为: (5)(5)式中,N是FIR滤波器的抽头数,x(n)表示在n 时刻输入的信号样值,h(n)表示滤波器的第n级抽头系数。横截型FIR滤波器的结构如下图所示:(FIR滤波器的结构图)2.3 FIR数字滤波器的特性2.3.1 FIR数字滤波器的相位特性IIR数字滤波器能够保留一些模拟滤波器的优良特性,比如具有良好的幅频特性,但是其相位是非线性的。FIR数字滤波器可以设计成严格线性相位的,避免被处理信号产生相位失真。FIR数字滤波器设计就是用多项式: (1) 来逼近所要求的频率特性指标。由于它的单位冲激响应是有限长的,所以FIR数字滤波器是稳定的。由式(1)可以得到FIR数字滤波器的频率响应: (2)其中,是幅频特性,是相频特性。如果要求FIR数字滤波器具有严格线性相位,即相位不失真时,其相位和频率呈正比,即相频特性满足: (3) 其中,为群延时。式(3)说明系统对信号中所有频率分量都具有相同的时间延迟。对上述条件降低一点的要求是相位和频率呈线性关系,即 (4)虽然的存在使相位呈非线性,但是它的群延时仍保持常数。 FIR数字滤波器的冲激响应是实数,当h(n)是偶对称的,即 (5)其对称中心为: (6)根据式(2),得到 (7)其中,幅频特性为: (8)相频特性为: (9)满足式(3)的条件。当h(n)为奇对称时,即 (10)其对称中心为。同理,可得其幅度特性为: (11)相频特性为: (12)满足式(4)的条件。综上所述,FIR数字滤波器具有线性相位的充要条件是: 或者 (13)2.3.2 线性相位FIR数字滤波器的幅度特性如果滤波器的系数h(n)的长度为N,且这些系数是关于对称的,根据h(n)的奇偶对称性和N的奇偶性,线性相位FIR数字滤波器可以分为4种类型,下面分别介绍这4种类型滤波器的频率响应。1)I型滤波器,系数h(n)为偶对称,N为奇数当系数h(n)为偶对称,N为奇数时,根据式(8),该类型滤波器的幅度特性函数为: (14) 其中, (15)滤波器的幅度响应对呈偶对称。2)II型滤波器,系数h(n)为偶对称,N为偶数当系数h(n)为偶对称,N为偶数时,根据式(8),该类型滤波器的幅度特性函数为: (16)其中, (17)滤波器的幅度响应对呈奇对称。但是,由于在时等于零,不能用这种方式实现在有频率响应的频率特性,比如高通滤波器和带阻滤波器。3)III型滤波器,系数h(n)为奇对称,N为奇数当系数h(n)为奇对称,N为奇数时,根据式(11),该类型滤波器的幅度特性函数为: (18)其中, (19)滤波器的幅度响应对奇对称。但是,由于在时等于零,不能用这种方式实现低通滤波器、高通滤波器和带阻滤波器,只能用做带通滤波器。4)IV型滤波器,系数h(n)为奇对称,N为偶数当系数h(n)为奇对称,N为偶数时,根据式(11),该类型滤波器的幅度特性函数为: (20)其中, (21)滤波器的幅度响应对呈奇对称,对呈偶对称。但是,由于在时等于零,不能用这种方式实现低通滤波器和带阻滤波器。2.3.3 线性相位FIR数字滤波器的零极点特性FIR数字滤波器的零点是其系数多项式的根,它的极点与原点数目相同,集中在Z平面的原点处。由于线性相位FIR数字滤波器的单位脉冲响应具有对称性,即,可得 (22)由上式可以看出,如果是该滤波器的一个零点,则也是它的零点。又由于h(n)是实数,H(z)的零点必定共轭成对出现,则和也是零点。所以,线性相位FIR数字滤波器的零点必是互为倒数的共轭对。 根据4种类型线性相位FIR数字滤波器的特点,可以得到它们零点特性的主要区别是在z=1处和z=-1处的零点数量,即1)I型线性相位FIR数字滤波器在z=1和z=-1处有偶数个零点或者没有零点。2)II型线性相位FIR数字滤波器在z=1处有偶数个零点或者没有零点,在z=-1处有奇数个零点。3)III型线性相位FIR数字滤波器在z=1和z=-1处有奇数个零点。4)IV型线性相位FIR数字滤波器在z=1处有奇数个零点,在z=-1处有偶数个零点或者没有零点。例:根据给出4种类型滤波器的系数,分别画出其零极点图。h1=-4,1,-1,-2,5,6,5,-2,-1,1,-4; h2=-4,1,-1,-2,5,6,6,5,-2,-1,1,-4;h3=-4,1,-1,-2,5,0,-5,2,1,-1,4; h4=-4,1,-1,-2,5,6,-6,-5,2,1,-1,4;clear all; close all; clc;h1=-4,1,-1,-2,5,6,5,-2,-1,1,-4;h2=-4,1,-1,-2,5,6,6,5,-2,-1,1,-4;h3=-4,1,-1,-2,5,0,-5,2,1,-1,4;h4=-4,1,-1,-2,5,6,-6,-5,2,1,-1,4;subplot(2,2,1);zplane(h1,1);title(I型零极点)subplot(2,2,2);zplane(h2,1);title(II型零极点)subplot(2,2,3);zplane(h3,1);title(III型零极点)subplot(2,2,4);zplane(h4,1);title(IV型零极点)第三章 基于MATLAB的FIR数字滤波器设计3.1 数字滤波器的设计方法描述数字滤波器有多种设计方法,如双线性变换法、窗函数设计法、插值逼近法和Chebyshev逼近法等等,但是通常采用窗函数法设计。窗函数法设计FIR滤波器的基本思想是:根据给定的滤波器技术指标选择滤波器长度N和窗函数,使其具有最窄宽度的主瓣和最小的旁瓣,其核心是从给定的频率特性,通过加窗确定有限长单位脉冲响应序列h(n)。一般采用以下五种窗函数:矩形窗(Rectangular Window)、三角形窗(Triangular Window)、汉宁窗(Hanning Window)、哈明窗(Hamming Window)、布莱克曼窗(Blackman Window)。目前FIR滤波器的实现方法大致可分为三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要,使用以串行运算为主导的通用DSP芯实现要简单,是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器,借助于通用数字计算机按滤波器的设计算法编出程序进行数字滤波计算 。由于它具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统,因此在通信、航空、航天、雷达、工业控制网络及家用电器等各个领域得到广泛应用。3.2 常用窗函数及设计方法1、矩形窗矩形窗的时域表达式为: (23)它的频域表达式为: (24)矩形窗的主瓣宽度为,第一旁瓣比主瓣低13dB,阻带最小衰减为21dB。在MATLAB中,矩形窗函数为boxcar,调用格式为: w=boxcar(N)其中,N是窗函数的长度;返回值w是一个长度为N的矩形窗序列。2、三角窗三角窗的时域表达式为以下几种。窗长为奇数时: (25)窗长为偶数时: (26)它的频域表达式为: (27)三角窗的主瓣宽度为,第一旁瓣比主瓣低26dB,阻带最小衰减为25dB。 在MATLAB中,三角窗函数为triang,调用格式为: w=triang(N)其中,N是窗函数的长度;返回值w是一个长度为N的三角窗序列。3、汉宁窗汉宁窗函数又称升余弦函数,是余弦平方函数。它的时域表达式为: (28)它的频域表达式为: (29)其中,为矩形窗的幅度函数。汉宁窗的主瓣宽度为,第一旁瓣比主瓣低31dB,阻带最小衰减为44dB。在MATLAB中,汉宁窗函数为hanning,调用格式为: w=hanning(N)其中,N是窗函数的长度;返回值w是一个长度为N的汉宁窗序列。4、哈明窗哈明窗函数是一种改进的升余弦函数,或者称为改进的汉宁窗。它的时域表达式为: (30)哈明窗在保证与汉宁窗相同的主瓣宽度的条件下,使大约99.96%的能量集中在主瓣,第一旁瓣比主瓣低41dB,阻带最小衰减为53dB。在MATLAB中,哈明窗函数为hamming,调用格式为: w=hamming(N)其中,N是窗函数的长度;返回值w是一个长度为N的哈明窗序列。5、布莱克曼窗 布莱克曼窗函数又称三阶升余弦函数,它对升余弦函数加上一个二次谐波余弦分量,从而进一步降低旁瓣。它的时域表达式为:(31)它的频域表达式为: (32)布莱克曼窗的主瓣宽度为,第一旁瓣比主瓣低57dB,阻带最小衰减为74dB。在MATLAB中,布莱克曼窗函数为blackman,调用格式为: w=blackman(N)其中,N是窗函数的长度;返回值w是一个长度为N的布莱克曼窗序列。上述各种窗函数的性能比较如表所示:窗函数第一旁瓣相对于主瓣衰减(dB)主瓣宽度近似值 主瓣宽度精确值阻带最小衰减(dB)矩形窗-134/N1.8/N21三角形窗-258/N6.1/N25汉宁窗-318/N6.2/N44汉明窗-418/N6.6/N53布莱克曼窗-5712/N11/N746、窗函数的MATLAB实现 绘出长度为64的矩形窗、三角窗、汉宁窗、哈明窗和布莱克曼窗函数的时域和频域幅度特性曲线。程序代码如下:clear all;close all;clc;N=64; w1=boxcar(N);w2=triang(N);w3=hanning(N);w4=hamming(N);w5=blackman(N);wvtool(w1);wvtool(w2);wvtool(w3);wvtool(w4);wvtool(w5);结果如下图所示:矩形窗三角窗汉宁窗哈明窗布莱克曼窗7、 MATLAB信号处理工具箱提供了基于窗函数法的FIR滤波器的设计函数fir1和fir2,它们能使滤波器的设计更加简单。1)fir1功能:基于窗函数的FIR滤波器设计标准频率响应形状。格式:b=fir1(n,Wn,ftype,window)其中,b为滤波器系数;n为滤波器阶数;Wn为截止频率,0Wn1,1对应于采样频率的一半;ftype为当指定ftype时可设计高通和带阻滤波器,ftype=high时设计高通FIR滤波器,ftype=stop时设计带阻FIR滤波器,低通和带通FIR滤波器无需输入ftype参数;window为窗函数,窗函数的长度应等于FIR滤波器系数的个数,即阶数n+1。说明:标准频率响应应指所设计的滤波器的预期特性为理想频率响应,包括低通、带通、高通或带阻特性。2)fir2功能:基于窗函数的FIR滤波器设计任意频率响应形状。格式:b=fir2(n,f,m,window)其中,b为滤波器系数;n为滤波器阶数;f为频率点矢量,0f1,f=1时对应的频率为采样频率的一半,矢量f按升序排列,且第一个必须为0,最后一个必须为1,并允许出现相同的频率值;m为幅度矢量,按长期共存矢量包含与f相对应的期望滤波器响应幅度,矢量f与矢量m的长度必须相同;window为窗函数,窗函数的长度应等于FIR滤波器系数的个数,即阶数n+1。说明:fir2函数用于设计具有任意频率响应形状的加窗线性相位FIR数字滤波器,其幅频特性由频率点向量f和幅度值向量m给出,0 f 1,要求f为单增向量,而且从0开始,以1结束,1表示数字频率w= .m与f等长度,m(k)表示频点f(k)的幅频响应曲线。3.3 基于切比雪夫等效一致逼近法工具箱采用remez算法实现线性相位FIR数字滤波器的等波纹最佳一致逼近法设计。与其他设计法相比,其优点是,设计指标相同时,使滤波器阶数最低,或者阶数相同时,使通带最平坦,阻带最小,衰减最大;通带和阻带均为等波纹形式,最适合设计片段常数特性的滤波器。其调用格式如下:b=remez(n,f,m,w,ftype)其中,w和ftype可默认。b为滤波器系数向量,调用参数n,f,m的含义与函数fir2中类同,但这里有一点不同,期望逼近的频幅响应值位于f(k)与f(k+1)(k为奇数)之间的频段上,而f(k+1)与f(k+2)之间为无关区。w为加权向量,其长度为f的一半。w(k)为对m中第k个常数片段的逼近精度加权值,w值越大逼近精度越高。ftype用于指定滤波器类型。Remezord函数用于估算FIR数字滤波器的等波纹最佳一致逼近设计的最低阶数n,从而使滤波器在满足指标的前提下造价最低。基本调用格式如下:n,fo,mo,w=remezord(f,m,dev,Fs)其返回参数供remez函数使用。设计的滤波器可以满足由参数f,m,dev和Fs指定的指标。F和m与remez中所用的类似,这里f可以是模拟频率(Hz)或归一化数字频率,但必须以0开始,以Fs/2(用归一化频率时为1)结束,而且其中省略了0和Fs/2两个频点。Fs为采样频率,省略时默认为2Hz。dev为各逼近频段允许的幅频响应偏差(波纹振幅)。remez函数可直接调用remezord返回的参数,使用格式如下:b=remez(n,fo,mo,w)。3.4 FIR数字滤波器的MATLAB设计初始化 MATLAB设计的程序流程图: 产生需要的滤波信号画出原始信号频谱图生成FIR滤波器进行滤波画出滤波后信号频谱图3.4.1 用各种窗函数设计FIR数字滤波器1)窗函数设计FIR数字滤波器的步骤 实际的滤波器设计指标通常包括通带截止频率、阻带起始频率、通带最大衰减和阻带最小衰减。其步骤如下:(1)构造希望逼近的频率响应函数。(2)根据阻带最小衰减选定窗函数类型,由“过渡带宽=窗函数主瓣宽度”确定窗长N。为保证所设计的FIR数字滤波器具有第一类线性相位,一般选取N为奇数。根据N写出窗函数表达式。(3)求出理想冲激响应,理想滤波器的截止频率。(4)求出实际滤波器的冲激响应:,其中,。2)例题: 分别用矩形窗、汉宁窗、哈明窗和布莱克曼窗设计FIR数字低通滤波器,要求:通带截止频率,窗长N=21。程序代码: clear all; close all; clc;wd=0.2*pi;N=21;M=(N-1)/2;nn=-M:M;n=nn+eps;hd=sin(wd*n)./(pi*n); w1=boxcar(N);h1=hd.*w1; w2=hanning(N);h2=hd.*w2;w3=hamming(N);h3=hd.*w3; w4=blackman(N);h4=hd.*w4;H1=20*log10(abs(fft(h1,1024);H2=20*log10(abs(fft(h2,1024);H3=20*log10(abs(fft(h3,1024);H4=20*log10(abs(fft(h4,1024);HH1=H1(513:1024) H1(1:512);HH2=H2(513:1024) H2(1:512);HH3=H3(513:1024) H3(1:512);HH4=H4(513:1024) H4(1:512);w=(-512:511)/512;plot(w,HH1,w,HH2,:,w,HH3,-,w,HH4,-);axis(-1.2 1.2 -150 20);legend(矩形窗,汉宁窗,哈明窗,布莱克曼窗);xlabel(omega/pi);set(gcf,color,w); 4种窗函数设计的低通滤波器分贝幅度特性从图中可以看出,用矩形窗设计时得到的过渡带最窄,但阻带衰减最小;布莱克曼窗设计时得到的过渡带最宽,但换来的是阻带衰减最大。通常情况下,滤波器设计的两个重要指标很难同时满足,设计过程中应该折中考虑。调用fir2函数设计一个FIR数字低通滤波器:其在0到pi/8的幅度响应为1,在pi/8到2pi/8幅度响应为1/2,在2pi/8到4pi/8幅度响应为1/4,在4pi/8到6pi/8幅度响应为1/6,在6pi/8到pi幅度响应为1/8,并且滤波器的阶数为60。画出理想滤波器和设计得到的滤波器的幅度频率响应进行比较。程序代码如下: f=0 0.125 0.125 0.25 0.25 0.5 0.5 0.75 0.75 1;m=1 1 0.5 0.5 0.25 0.25 1/6 1/6 0.125 0.125; b=fir2(60,f,m);h,w=freqz(b);plot(f,m,w/pi,abs(h);grid on; legend(理想滤波器,设计滤波器); 结果如下图所示:3.4.2 用remez函数设计FIR数字低通滤波器1)设计滤波器,使逼近低通滤波特性 。要求通带波纹 ,阻带衰减 ,并用最小阶数实现。绘出设计的FIR数字滤波幅频特性曲线。程序代码: %用remez函数设计FIR低通滤波器clear;close all; fc=1/4;fs=5/16; %输入给定指标 Rp=3;As=60;Fs=2; f=fc,fs;m=1,0; dev=(10(Rp/20)-1)/(10(Rp/20)+1),10(-As/20);%计算remezord函数所需要参数f,m,dev N,fo,mo,w=remezord(f,m,dev,Fs);%确定remez函数所需参数hn=remez(N,fo,mo,w);%调用remez函数进行设计hw=fft(hn,512); %求设计出的滤波器频率特性w=0:511*2/512;plot(w,20*log10(abs(hw);grid; %画对数幅频特性曲线axis(0,max(w)/2,-90,5);xlabel(w/pi); ylabel(Magnitude(dB);title(幅频特性); line(0,0.4,-3,-3); %画线检验设计结果line(1/4,1/4,-90,5); line(5/16,5/16,-90,5);结果如图所示:结果分析:如图所示,图中横线为-3dB,两条竖线分别位于频率 1/4和5 /16。显然,通带指标稍有富裕,过渡带宽度和阻带最小衰减刚好满足指标要求。2)用remez函数设计FIR数字滤波器(在滤波器设计中,技术指标越高,实现滤波器的阶数也就越高,在remez函数调用格式b=remez(N,f,m,w)。)程序代码如下:%用remez函数设计数字低通滤波器Fs=1000;num=8192;t=(1:10000)/Fs;s1=sin(2*pi*t*100);s2=sin(2*pi*t*150);s3=sin(2*pi*t*200);s=s1+s2+s3;figure(1);plot(t,s);axis(0,0.1,-3,3);grid;xlabel(time/s);ylabel(amplitude);%设计一个低通滤波器 fedge=110 140;mval=1 0;dev=0.0559 0.01;N,fpts,mag,wt=remezord(fedge,mval,dev,Fs);b=remez(N,fpts,mag,wt);disp(b);h,w=freqz(b,1,256);figure(2);plot(w/pi,20*log10(abs(h);grid;xlabel(omega/pi);ylabel(Gain(dB);%对信号进行滤波sf=filter(b,1,s);figure(3);plot(t,sf);axis(0,0.1,-3,3);grid;xlabel(time/s);ylabel(amplitude);%显示频谱结果figure(4);f=Fs*(0:num/2-1)/num;Y=fft(sf,num);P=abs(Y);plot(f,P(1:num/2);axis(1,500,0,1000);grid;xlabel(Frequency/Hz);ylabel(Amplitude);结果如图所示:3.4.3 应用FDATOOl设计FIR滤波器FDATool(Filter Design Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。它操作简单,方便灵活。 FDATool界面总共分两大部分,一部分是design filter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。design filter部分主要分为:filter type(滤波器类型)选项,包括lowpass(低通)、highpass(高通)、bandpass(带通)、bandstop(带阻)和非凡的fir滤波器。 design method(设计方法)选项,包括IIR滤波器的butterworth(巴特沃思)法、chebyshev type(切比雪夫型)法、chebyshev type(切比雪夫型)法、elliptic(椭圆滤波器)法和fir滤波器的equiripple法、least-squares(最小乘方)法、window(窗函数)法。 filter order(滤波器阶数)选项,定义滤波器的阶数,包括specify order(指定阶数)和minimum order(最小阶数)。在specify order中填入所要设计的滤波器的阶数(n阶滤波器,specify ordern-1),假如选择minimum order则matlab根据所选择的滤波器类型自动使用最小阶数。 frequency specifications选项,可以具体定义频带的各参数,包括采样频率fs和频带的截止频率。它的具体选项由filter type选项和design method选项决定,例如bandpass(带通)滤波器需要定义fstop1(下阻带截止频率)、fpass1(通带下限截止频率)、fpass2(通带上限截止频率)、fstop2(上阻带截止频率),而lowpass(低通)滤波器只需要定义fstop1、fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。 magnitude specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义wstop1(频率fstop1处的幅值衰减)、wpass(通带范围内的幅值衰减)、wstop2(频率fstop2处的幅值衰减)。当采用窗函数设计时,通带
展开阅读全文