参考文献:《数字滤波器的MATLAB与FPGA实现—Altera Verilog版》[杜勇 编著] 2015年版
一、FIR滤波器的理论
1.FIR滤波器的表达形式
2.FIR滤波器的基本特性
-
当FIR滤波器的系数对称时,通带内满足线性相位。系数奇对称相比于系数偶对称多了90°的相移。这种在所有频率上都产生90°相移的变换称为正交变换,这种网络称为正交变换网络
-
相比于IIR滤波器(无线性相位特征),在相同的性能指标下,所需要的阶数更多,实现时消耗的硬件资源也越多
-
FIR只在原点处存在极点,FIR滤波器总是稳定且因果的
-
FIR滤波器不存在反馈结构,因此在FPGA设计中无需考虑因字长无限增长而需要采取的数据截断,只需要知道计算过程中的最大字长即可
3.FIR滤波器的幅度特性
单位取样响应特征 | 相位特性 | 幅度特性 | 可设计滤波器种类 |
---|---|---|---|
偶对称,偶整数 | 线性相位 | w=0、Π、2Π偶对称 | 各种滤波器 |
偶对称,奇整数 | 线性相位 | w=Π奇对称,w=0、2Π偶对称 | 低通、带通 |
奇对称,偶整数 | 线性相位,附加90°相移 | w=0、Π、2Π奇对称 | 带通 |
奇对称,奇整数 | 线性相位,附加90°相移 | w=0、2Π奇对称,w=Π偶对称 | 高通、带通 |
注:MATLAB直接设计出的FIR滤波器的系数都是偶对称的。当阶数不满足可设计滤波器的奇偶特征时,MATLAB会自动对阶数进行调整
4.FIR滤波器的结构形式
(1)直接型
结构图
具有线性特征时(即滤波器系数为偶对称,可以先求和,再相乘,减少乘法运算)
(2)级联型
结构图
级联型需要的乘法单元比直接型多,因此FPGA实现一般不采用此结构
(3)频率取样型
结构图
(4)快速卷积型
结构图(使用循环卷积实现线性卷积)
二、FIR滤波器的设计方法
1.窗函数设计法
原理:在时域中进行,通过窗函数截取具有群延时特性为(N-1)/2的理想低通滤波器,截取范围为0~N-1,获得一个因果的N阶FIR滤波器
加窗对理想低通滤波器的影响:
- 截止频率的间断点变成了连续曲线(过渡带),其宽度等于窗函数的主瓣宽度
- 窗函数的旁瓣幅度越大,通带和阻带的波动越大
- 增加窗函数的长度,只能缩短主瓣宽度,而不能改变旁瓣与主瓣的相对值(这由窗函数的形状决定)
窗函数选择原则:
- 具有较低的旁瓣幅度,尤其是第一旁瓣幅度
- 旁瓣幅度下降速率要大,以利于增加阻带衰减
- 主瓣宽度要窄,以便获得较陡的过渡带
2.频率采样法
3.最优设计方法
三、FIR滤波器的MATLAB设计
1.fir1(无法指定过渡带与频带容限)
b = fir1(n, wn)
b = fir1(n, wn, ftype)
b = fir1(n, wn, ftype, window)
- b : FIR滤波器的系数,长度为N + 1
- n : FIR滤波器的阶数
- wn : 截止频率,范围是0~1,其中1为采样频率的一半
-
如果
Wn
是标量,则fir1
设计的是截止频率为Wn
的低通或高通滤波器。截止频率是滤波器的归一化增益为 -6 dB 处的频率 -
如果
Wn
是二元素向量[w1 w2]
,其中w1
<w2
,则fir1
设计的是截止频率下限为w1
且截止频率上限为w2
的带通或带阻滤波器 -
如果
Wn
是多元素向量[w1 w2 ... wn]
,其中w1
<w2
<…<wn
,则fir1
返回一个n
阶多频带滤波器,频带为 0 < ω <w1
、w1
< ω <w2
、…、wn
< ω < 1
-
-
ftype : 指定滤波器类型
-
如果
Wn
是标量,ftype为'high'或'low' -
如果
Wn
是二元素向量[w1 w2]
,ftype为'bandpass'或'stop' -
如果
Wn
是多元素向量[w1 w2 ... wn]
,ftype为'DC-0'(Wn
是多元素向量时的默认值)表示第一个频带为阻带,'DC-1'表示第一个频带为通带
-
- window : 指定窗函数类型,如果不指定,默认使用hamming窗
2.kaiserord(可指定过渡带与频带容限)
[n, wn, beta, ftype] = kaiserord(f, a, dev)
[n, wn, beta, ftype] = kaiserord(f, a, dev, fs)
- f指定过渡带的起始点和结束点。当指定采样频率fs时