FIR滤波器.docx

上传人:小飞机 文档编号:3157012 上传时间:2023-03-11 格式:DOCX 页数:11 大小:43.65KB
返回 下载 相关 举报
FIR滤波器.docx_第1页
第1页 / 共11页
FIR滤波器.docx_第2页
第2页 / 共11页
FIR滤波器.docx_第3页
第3页 / 共11页
FIR滤波器.docx_第4页
第4页 / 共11页
FIR滤波器.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《FIR滤波器.docx》由会员分享,可在线阅读,更多相关《FIR滤波器.docx(11页珍藏版)》请在三一办公上搜索。

1、FIR滤波器1.1 什么是FIR滤波器? FIR滤波器是在数字信号处理(DSP)中经常使用的两种基本的滤波器之一,另一个为IIR滤波器. 1.2 FIR代表什么? FIR是有限冲激响应(Finite Impulse Response)的简称. 1.3 FIR(有限冲激响应)中的有限该如何理解? 冲激响应是有限的意味着在滤波器中没有发反馈 有些人直接读字母音 F-I-R; 也有人发做fir的音:, fir是冷杉树. 1.5 FIR滤波器外有什么其他选择? DSP滤波器还有一类: IIR(无限冲激响应,Infinite Impulse Response). IIR滤波器使用反馈,因此当信号输入后,

2、输出是根据算法循环的. 1.6 FIR滤波器与IIR滤波器比较? 但总得来说, FIR滤波器的优点远大于缺点,因此在实际运用中,FIR滤波器比IIR滤波器使用地比较多. 1.6.1 相对于IIR滤波器, FIR滤波器有什么优点? 相较于IIR滤波器, FIR滤波器有以下的优点: * 可以很容易地设计线性相位的滤波器. 线性相位滤波器延时输入信号,却并不扭曲其相位. * 实现简单. 在大多数 DSP处理器, 只需要对一个指令积习循环就可以完成FIR计算. * 适合于多采样率转换,它包括抽取(降低采样率), 插值(增加采样率)操作. 无论是抽取或者插值, 运用FIR滤波器可以省去一些计算, 提高计

3、算效率. 相反,如果使用IIR滤波器,每个输出都要逐一计算,不能省略,即使输出要丢弃. * 具有理想的数字特性 实际中,所有的DSP滤波器必须用有限精度实现,而在IIR滤波器中使用有限精度会产生很大的问题,由于采用的是反馈电路,因此IIR通常用非常少的bit实现,设计者就能解决更少的与非理想算术有关的问题。 * 可以用小数实现. 不像IIR滤波器,FIR滤波器通常可能用小于1的系数来实现。当使用定点DSP的时候,这也是一个考虑因素,它能使得实现更加地简单。 1.6.2 相较于IIR滤波器, FIR滤波器的缺点是什么? 相比较于IIR滤波器, 有时FIR滤波器为了得到一个给定的滤波响应特性,需要

4、花费更多的存储器或者计算. 当然,用FIR滤波器去实现某些响应也是不实际的. 1.7 在描述FIR滤波器的时候,都要提到什么术语? * 冲激响应 - FIR滤波器的冲激响应实际上是FIR的系数. * 抽头(Tap) - FIR的抽头是系数或者延时对. FIR抽头的个数(通常用 N来表示)意味着:1)实现滤波器所需要的存储空间, 2) 需要计算的数目, 3) 滤波器能滤掉的数量, 实际上,越多的抽头意味着有更多的阻带衰减, 更少的波纹,更窄的滤波等等. * 乘累加 (MAC) - 在FIR方面考虑,MAC是指把延时的数据采样与相应的系数相乘,然后累加结果。通常,FIR每一个抽头都需要一个MAC。

5、大多数DSP微处理器实现MAC操作都是单指令周期。 * 跃迁带 - 在通带和阻带边沿之间的频带。跃迁带越窄,需要更多的抽头去实现滤波器。也有说,小的跃迁带就是一个sharp滤波器。 * 延时线- 一组存储器单元,实现在FIR计算中的Z-1延时。 * 环形缓存 - 一个特殊的缓存,是首尾相连的。通常由DSP微处理器实现。 .1 线性相位 2.1.1 FIR滤波器和线性相位之间有什么关系? 大多数的FIR滤波器是线性相位滤波器. 当需要设计线性相位滤波器时, 通常使用FIR滤波器. 2.1.2 什么是线性相位滤波器? 线性相位是指滤波器的相位响应是频率的线性函数。因此滤波器的延时后,所有的频率相位

6、相同。因而滤波器不会产生相位和延迟扭曲。在某些领域,比如数字解调器,没有相位或者延迟扭曲是FIR滤波器相对于其他IIR和模拟滤波器的一个关键优点 2.1.3 线性滤波器的条件是什么? FIR滤波器经常被设计成为线性相位的,当然不是必须要这么做。如果滤波器的系数是关于中心系数对称的,也就是说第一个系数和最后一个系数相同,第二个系数和倒数第二个相同,那么FIR滤波器就是线性的。有奇数个系数的FIR滤波器,中心单独的系数没有对应的。 2.1.4 什么是线性相位FIR滤波器的延时? 非常简单的公式: 给定FIR滤波器有N个抽头,那么延时是(N - 1) / (2 * Fs), 这里Fs是采样频率. 比

7、如, 21抽头的线性相位滤波器运行在1kHz, 那么延时就是(21 - 1) / (2 * 1 kHz)=10 微秒. 2.1.4 除了线性相位,还可以选择什么? 当然是非线性的了。实际上,最流行的选择是最小相位滤波器。最小相位滤波器,也叫最小延时滤波器,比线性相位滤波器具有更少的延时,当两者的幅度响应相同时以非线性相位特性。 低通滤波器在它的冲击响应中心有最大的系数。而最小相位滤波器的最大系数在开始部分。 2.2 频率响应 2.2.1 什么是FIR滤波器的Z变换r? 对于N抽头的滤波器, 系数为h(k), 那么输出由: y(n)=h(0)x(n) + h(1)x(n-1) + h(2)x(n

8、-2) + . h(N-1)x(n-N-1), 滤波器的z变换就是: H(z)=h(0)z-0 + h(1)z-1 + h(2)z-2 + . h(N-1)z-(N-1) , or 2.2.2 FIR滤波器的频率响应公式是什么r? H(z)中的变量z为连续的复数变量,可以描述为 z=rejw,这里r是幅度,w是z的角度。如果令r=1,H(z)就变成了滤波器频率响应H(jw)。这也就意味着替代z为ejw,得到了滤波器频率响应H(w)。 H(jw)=h(0)e-j0w + h(1)e-j1w + h(2)e-j2w + . h(N-1)e-j(N-1)w , or 使用欧拉公式, e-ja=cos

9、(a) - jsin(a), 我们可以把H(jw)写成矩形表示: H(jw)=h(0)cos(0w) - jsin(0w) + h(1)cos(1w) - jsin(1w) + . h(N-1)cos(N-1)w) - jsin(N-1)w) , or 2.2.3 能用离散傅立叶变换(DFT)来计算FIR的频率响应么? 可以。对于N抽头的FIR,可以得到N evenly-spaced points of the frequency response by doing a DFT on the filter coefficients.但是,为了得到任意频率的频率响应,需要使用上边的公式。 2.2

10、.4 FIR滤波器的DC增益指的是什么? DC(0 Hz)输入信号包含每个采样都为1.0。通过延时线后,输出是所有系数的和。因而,在DC处滤波器的增益就是所有系数之和。 可以通过上边的公式进行验证。问我们设w为0, cos项就一直为1,而sin项则一直为0。因此频率响应就变成了: 2.2.5 如何调整FIR滤波器的增益? 简单地在系数上乘上因子. 2.3 数字性质 2.3.1 FIR滤波器是固有稳定的? 是的,因为没有反馈,任何有限的输入产生有限的输出。 2.3.2 什么使FIR滤波器的数字性质变好? 缺少反馈是关键。在计算机中实现FIR滤波器时,每个计算都产生数字错误。由于FIR滤波器没有反

11、馈,因此不能够记住以前的错误。相反,IIR滤波器的反馈可能导致错误的积累。 . 这个实际的影响就是,可以用更少的bit去实现与IIR滤波器相同精度的滤波器。比如,FIR滤波器通常用16位来实现的话,IIR滤波器就通常需要32位,或者更多。 2.4 为什么通常在多采样率系统中采用FIR滤波器而不采用IIR滤波器? 因为只有一小部分的计算需要用减采样或者插值滤波器来实现。 由于FIR滤波器不使用反馈,因而只有那些实际需要使用的输出才需要计算。比如,在减采样的时候,那么其他的N-1输出就不会进行计算。类似的,对于插值滤波器,你不必实际地用FIR滤波器乘以系数,求和得到,你只需要忽略和这些值有关的乘加

12、。 相反,因为IIR滤波器使用反馈,每个输入都必须使用,每个输入必须计算,因为所有的输入和输出对滤波器的反馈都有影响。 2.5 有哪些特殊的FIR滤波器? Aside from regular and extra crispy there are: * 矩形 -矩形 FIR 滤波器是每个系数都是1.0的简单的滤波器。因而对于N个抽头的矩形滤波器,它的输出仅仅是过去N个采样之和。由于矩形FIR只能实现加法,因此当乘法器实现比较昂贵时,在硬件实现中会考虑。 * 希尔伯特变换 - 希尔伯特变换是把信号相移90度。它们经常被用在,给定实数部分,产生虚数部分。 * 差分 -差分器的幅度响应是频率的线性函

13、数。现在已经不流行了,但是以前曾经在FM解调器上使用过。 * Lth-Band - 也叫做“Nyquist滤波器,这些滤波器是在多速率应用中特殊的一类滤波器。主要的卖点是,每L个系数有一个为0,那么就将减少乘累加操作的实现。 * Raised-Cosine - 这是一种特殊类型的滤波器,有时会用在数字数据应用方面。 0 引 言 FIR(finite impulse response)滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位冲激响应是有限的,没有输入到输出的反馈,是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着

14、广泛的应用。 目前FIR滤波器的硬件实现有以下几种方式: 一种是使用单片通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要。虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到限制。 另一种是使用DSP芯片。DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到限制。而且,就是同一公司的不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。 还有一种是使用可编程逻辑器件,FPGACPLD。FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的

15、实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。 FIR滤波器的主要组成模块是乘累加单元(MAC),如果按照直观结构构造乘法器和系数寄存器来实现会占用大量的逻辑资源,显然不可取。本文采用基于分布式算法思想的方法来设计FIR滤波器,并在FPGA上实现。 1 分布式算法原理 分布式算法(distributed arithmetic,DA)最初是在XX年由Croisier提出的,但直到Xilinx发明FPGA的查找表以后,DA算法才在上世纪XX年代初重新受到重视,并有效地应用在FIR滤波器的设计中。DA算法的原理如下。 一线性时不变网络的输出为: 假设c(n)为已知常系数,x(

16、n)是变量,用(B+1)位2进制补码表示为: 函数f(c(n),xb(n)的实现方法是利用一个LUT(查找表)实现影射f(c(n),xb(n),也就是说2N字宽、预先设定程序的LUT接收一个N位输入向量xb=xb0,xb1xbN-1,输出为f(c(n),xb(n),个个影射,f(c(n),xb(n)都由相应的二次幂加权并累加。对于固定系数,整数乘以2b即左移6位,可以通过硬连线实现,不占用逻辑资源,利用图1所示的移位加法器就能有效地实现累加。DA算法的主要特点是巧妙利用SRAM查找表将固定系数的MAC运算转化为查表操作,其运算速度不随系数和输入数据精度的增加而降低,而且相对直接实现乘法器和系数

17、寄存器在逻辑资源占用上得到了极大的改善。缺点是查找表的大小随滤波器的阶数的增加呈指数增长,这时可以采用将大查找表分解为小查找表的方法来降低逻辑资源的消耗,如图2所示。 2 FIR滤波器的网络结构 N阶FIR滤波器相对于输入时间序列x(n)的输出表达式为: 即输出序列为单位脉冲相应h(n)与输入x(n)的卷积,由卷积关系可直接画出结构图,称之为直接型结构,如图3所示,该结构中共需要N个乘法器。 对于线性相位FIR滤波器,其单位取样响应是对称或反对称的,即: 利用对称性可以简化网络结构,当h(n)为偶对称且N为偶数时, 其线性网络结构如图4所示,仅需NZ个乘法器。 3 FIR滤波器的硬件电路设计

18、下面以一个32阶FIR带通滤波器为例说明硬件电路设计的方法和过程。 3.1 设计指标 采用频率:200 Hz 类型:带通 上限截止频率:54.3 Hz 下限截止频率:46 Hz 阶数:32阶 系数数据宽度:16位 输入数据宽度:16位 输出数据宽度:16位 3.2 滤波器的设计 使用MATLAB 7.1软件中Filter Design&AnalysisTool,选取带通滤波器,Kaiser窗设计方法,设计出符合设计指标的32阶线性相位FIR滤波器,其幅频特性和相频特性如图5所示。 滤波器的特征参数用16位二进制补码表示如下: 3.3 硬件电路组成单元 FIR滤波器的硬件电路包括数据位扩展、并串

19、转换器、移位寄存器组、预相加单元、查找表单元、查表结果相加单元、移位累加单元、锁存输出单元、控制单元等,总的结构如图6所示。 (1) 数据位扩展:由于输入数据要进行预相加,为了防止溢出,保证电路正常工作,采用符号位扩展,使输入数据由16位增加到17位。 (2) 并串转换器:由于电路以串行方式工作,须将并行输入的数据转换为串行数据输入,且顺序是先输入低位(LSB),后输入高位(MSB)。 (3) 移位寄存器组:其主要功能是用寄存器组存储输入序列,实现输入数据的延时输出,存储的级数等于FIR滤波器的阶数减1,即31。移位寄存器组输出的数据和并串转换器输出的数据一起形成如图1中所示的输入数据阵列形式

20、。 (4) 预相加单元:利用FIR滤波器系数的对称性,按照图4所示的FIR滤波器线性网络结构,将相同滤波器系数相乘两个输入数据预先相加,这样相当于将滤波器的阶数减半,减小了硬件规模。预相加单元采用在位串行电路中广泛应用的串行加法器来实现。 (5) 查找表单元:如前所述,LUT的规模随滤波器阶数的增加呈指数增长,当滤波器的阶数很大时,查找表的规模过于庞大。为了减小规模,可以将1个有16位地址总线的LUT分割,产生4个4位地址总线部分LUT,先分别对4个部分表查表,再将结果相加。为防止相加时产生溢出,将16位查表输出经过1位符号扩展变为17位。 (6) 查表结果相加单元:加法器是影响FIR滤波器性

21、能的主要部件,其工作速度决定了FIR滤波器的效率,因此采用具有超前进位功能的流水线加法器。 (7) 移位累加单元:得到的查表结果相当于一个部分积,移位累加单元将其与寄存器中的部分积相加,结果右移1位还放入寄存器中,直到所有的位数都查表结束。特别应注意,最高位查表得到的结果不是与上一个右移1位的部分积相加,而是相减。这里的加法器仍是采用具有超前进位功能的流水线加法器,作减法时,只需将被减数取补即可。 (8) 锁存输出单元:加法器的输出不稳定,将其结果经过一锁存器得到稳定的输出。 (9) 控制单元:产生复位,时序等控制信号,控制电路的总体运行。 3.4 电路仿真 在ALTERA公司的MAX+PLU

22、S2软件环境下,用硬件描述语言VHDL对上述FIR滤波器的模块进行编程描述,并仿真各模块的波形,最后将各模块综合起来下载到器件FLEX10KE中形成FIR滤波器。 用MATLAB设计了一幅度为0.22的50 Hz的正弦波,用250 Hz的采样器对其采样,得到周期序列0,0.209 2,0.129 3,0.129 3,0.209 2,用16位二进制补码表示为:0000H,1ACBH,108DH,EF73H,E538H,将其输入到FIR滤波器的输入端,滤波器的输出如图6所示,实验结果与理论计算一致。并取32位以后的输出结果,在MATLAB里绘制波形,如图7所示,可见,FPGA仿真结果正确,50 Hz的正弦波通过了FIR滤波器。 4 结 论 本文所介绍的基于FPGA、采用分布式算法实现FIR滤波器的方法,在提高系统运行速度和节省硬件资源方面具有很大的优势。而且,通过改变阶数和查找表中的系数,还可以将此设计灵活地运用于实现高通、低通和带阻滤波器,可移植性较好。因此,这种方法在高速数字信号处理中将有很好的应用前景。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号