基于VHDL的数字滤波器设计 下载本文

内容发布更新时间 : 2024/5/23 17:07:13星期一 下面是文章的全部内容请认真阅读。

基于VHDL的数字滤波器设计

一、概述

有限冲激响应(FIR)数字滤波器和无限冲激响应(IIR)数字滤波器广泛应用于数字信号处理系统中。IIR数字滤波器方便简单,但它相位的非线性,要求采用全通网络进行相位校正,且稳定性难以保障。FIR滤波器具有很好的线性相位特性,使得它越来越受到广泛的重视。

有限冲击响应(FIR)滤波器的特点:

1 .既具有严格的线性相位,又具有任意的幅度;

2. FIR滤波器的单位抽样响应是有限长的,因而滤波器性能稳定;

3.只要经过一定的延时,任何非因果有限长序列都能变成因果的有限长序列,因而能用因果系统来实现;

4 . FIR滤波器由于单位冲击响应是有限长的,因而可用快速傅里叶变换(FFT)算法来实现过滤信号,可大大提高运算效率。

5. FIR也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。

6. FIR滤波器比较大的缺点就是阶次相对于IIR滤波器来说要大很多。 FIR数字滤波器是一个线性时不变系统(LTI),N阶因果有限冲激响应滤波器可以用传输函数H(z)来描述,

H(z)??h(k)z?k

k?0N (0.1)

在时域中,上述有限冲激响应滤波器的输入输出关系如下:

y[n]?x[n]?h[n]??x[k]h[n?k]

k?0N (0.2)

其中,x[n]和y[n]分别是输入和输出序列。

N阶有限冲激响应滤波器要用N+1个系数描述,通常要用N+1个乘法器和N个两输入加法器来实现。乘法器的系数正好是传递函数的系数,因此这种结构称为直接型结构,可通过式(1.2)来实现,如图1。

图1

当冲击响应满足下列条件时, FIR滤波器具有对称结构,为线性相位滤波器:

h(n)?h(N?1?n)

(1.3)

这种对称性,可使得乘法器数量减半:对n价滤波器,当n为偶数时,乘法

1 / 14

器的个数为n/2个;当n为奇数时,乘法器的个数为(n+1)/2个。在电路实现中,乘法器占用的逻辑单元数较多。乘法器的增加,意味着电路成本增加,另外对电路的工作速度也有影响。

N阶线性相位的因果FIR系统的单位冲激响应滤波器可用对称冲激响应

h[n]?h[N?n]h[n]?h[N?n]

(0.3)

或者反对称冲激响应

h[n]??h[N?n]h[n]??h[N?n]

(0.4)

来描述。

具有对称冲激响应的FIR传输函数的冲激响应可写成如下形式: 当N为偶数时

H(z)??h[n]zn?0N?n??h[n](zn?0N?12?n?z?(N?n)N?N)?h()z2

2 (0.5)

当N为奇数时

H(z)??h[n]z?n?n?0NN?1?12n?0?h[n](z?n?z?(N?n))

(0.6)

则FIR线性相位系统的结构可转化成如图2(a)和图2(b)所示。

图2(a) N为奇数

图2(b) N为偶数

二、设计方案

2 / 14

随着数字技术日益广泛的应用,以现场可编程门阵列(FPGA)为代表的ASIC器件得到了迅速普及和发展,器件集成度和速度都在高速增长。FPGA有着规整的内部逻辑块阵列和丰富的连线资源,特别适合细粒度和高并行度结构特点的数字信号处理任务,如FIR、FFT等。 1.FIR滤波器的结构

FIR滤波器的结构主要是非递归结构,没有输出到输入的反馈。并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真。而线性相位体现在时域中仅仅是h(n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的。此外,他不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。 2.FIR数字滤波器的设计方案:

通常采用窗函数设计FIR滤波器方法简单,但是这些滤波器的设计还不是最优的。首先通带和阻带的波动基本上相等,另外对于大部分窗函数来说,通带内或阻带内的波动不是均匀的,通常离开过渡带时会减小。若允许波动在整个通带内均匀分布,就会产生较小的峰值波动。

对于线性相位因果FIR滤波器,它的系列具有中心对称特性,即

h(i)??h(N?1?i)。令s(i)?x(i)?x(N?1?i),对于偶对称,代入式(1)可得:

y(n)??h(i)x(n?i)?i?0N?1N/2?1i?0?h(i)s(n?i)

根据要求,设计一个基于VHDL的数字滤波器。我们假设滤波器要求是输入8位,输出8位的17阶线性相位FIR滤波器,这里采用图2(a)的方式,其中输入信号范围为:[±99,0,0,0, ±70,0,0,0, ±99,0,0,0, ±70,…],此滤波器采样频率Fs为44kHz,截止频率Fc为10.4kHz。

整个过程的设计环境:WIN Xp+MATLAB7.1+QuartusII8.0 首先计算滤波器系数:

在MATLAB的命令窗口中输入fdatool,开启Filter Design&Analysis Tool界面。如图3所示。

3 / 14