FIR滤波器的原理及设计.docx
- 文档编号:26538002
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:38
- 大小:2.51MB
FIR滤波器的原理及设计.docx
《FIR滤波器的原理及设计.docx》由会员分享,可在线阅读,更多相关《FIR滤波器的原理及设计.docx(38页珍藏版)》请在冰豆网上搜索。
FIR滤波器的原理及设计
选题 2 实验讲义
实验名称:
基于分布式算法的 FIR 滤波器设计
1.数字滤波器基础知识
数字滤波是信号与信号处理领域的一个重要分支,在语音图像处理、模式识别、谱分析、
无线通信等领域都有着非常广泛的应用。
通过滤波运算,将一组输入数据序列转变为另一组
输出数据序列,从而达到修正时域或频域中信号属性的目的。
数字滤波器就是用于完成这种
信号滤波功能,用有限精度算法来实现的一种离散时间线性时不变(LTI)系统。
相比于模
拟滤波器,数字滤波器具有以下优点:
1)数字滤波器的频域特性容易控制,性能指标优良;
(2)数字滤波器可以工作在极低的频率,可以方便地实现模拟滤波器难以实现的线性相位
系统; 3)数字滤波器工作稳定,一般不会受到外部环境的影响; 4)数字滤波器的灵活性
和可重用性高,只需要简单编程就可以修改滤波器的特性,设计周期短。
数字滤波器的实现
可以采用专用 DSP 芯片,通过编写程序,利用软、硬件结合完成滤波器设计,也可以采用
市面上通用的数字滤波器集成电路来实现,但这两种方法无法适应高速应用场合。
随着集成
电路技术的高速发展,FPGA 应用越来越普及,FPGA 器件具有芯片密度大、执行效率高,
速度快,集成度高等优点,用 FPGA 芯片作为滤波器的设计载体,可以实现高速信号滤波
功能。
1.1 FIR 数字滤波器特点
数字滤波器通常分为 IIR(无限冲激响应)和 FIR(有限冲激响应)两种。
FIR 滤波器具有
以下特点:
(1)可以做成严格的线性相位,同时又可以具有任意的幅度特性
(2)单位冲激
响应是有限长的,所以一定是稳定的,因此在实际中得到广泛的应用。
1.2 FIR 滤波器结构
设 FIR 滤波器的单位冲激响应为 h(n) , 0 ≤ n ≤ N - 1 ,
N -1
-n
n=0
N -1
k =0
基本结构(直接型):
图
(1)FIR 滤波器的基本结构
1.3 结构简化
当 FIR 滤 波 器 具 有 严 格 线 性 相 位 时 , h(n) 满 足 h(n) = h( N - 1 - n) 或
h(n) = -h( N - 1 - n) 设 N 为偶数,令
s(0) = x(n) ± x[n - ( N - 1)]
s
(1) = x(n - 1) ± x[n - ( N - 2)]
M
NN
- 1) = x[n - (- 1)] ± x(n -)
222
则
(1)式可以简化为:
N
-1
2
k =0
与
(1)相比,所需乘法器数量降为原来的一半。
图
(2) 简化乘法器数量的线性相位滤波器
1.4 设计规模的改进
当滤波器的长度 N 增加时,可将求和分配到几个独立的 M 阶并行 DA 的 LUT 中。
以
(1)
式为例,设 N = L ⋅ M ,
N -1L-1 M -1
k =0l =0 m=0
这样,长度为 N 的滤波器实现可以分解为 L 个长度为 M 的滤波器,可运用流水线加法器累加
结果。
2. 分布式算法
在很多 DSP 应用场合中,滤波器系数一般为常数,在这种情况下,可以利用分布式
(Distributed Algorithm,DA)算法原理将求乘积和运算转变为移位和加法运算来实现。
在滤波器规模比较小的情况下,采用 DA 算法可以减少电路规模,更容易实现流水处理,从
而有更高的执行效率。
以
(2)式为例,DA 算法的基本思想为:
在
(2)式中,设h(k)为常数,将 s(nk)表示为 B+1 位二进制补码形式,其中,最高位为
符号位,用 s (nk)表示,下标 B 表示第 B 位,数值位共有 B 位,用 s (nk) 表示,其中
Bb
0bB1 。
B10补
将式中各二进制位按权展开,则有下式成立,
s(nk)2 B s (nk)
B
B 1
s (n k) 2b
b
b 0
代入
(2)式,并改变式中求和的次序,可得
y(n)
N
2
1
h(k)s(n k)
k 0
N
1
2B 1
B
s (n k) 2b ]
b
k 0b 0
NN
11
22B 1
Bb
k 0
k 0
b 0
N
1
2B 1
B
N
2
1
h(k)s (n k)]
b
k 0b 0k 0
2 B f[h(k),s (nk)]
B
B 1
2 b f[h(k),s (n k)]
b
b 0
DA算 法 的 基 本 思 想 就 是 用 一 个 LUT ( 查 找 表 ) 来 实 现 运 算 f[h(k),s (nk)]及
B
f[h(k),s (nk)],则滤波结果可以相应二次幂加权并累加来实现,从而达到提高执行效
b
率的目的。
例:
无符号 DA 卷积
2
n=0
c
(2)=1,则可得 LUT 如下:
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1*0+3*0+2*0=0
1*0+3*0+2*1=2
1*0+3*1+2*0=3
1*0+3*1+2*1=5
1*1+3*0+2*0=1
1*1+3*0+2*1=3
1*1+3*1+2*0=4
1*1+3*1+2*1=6
设 x(0)=1, x
(1)=3,x
(2)=7
步骤
0
1
2
Xt
(2)
1
1
1
Xt
(1)
1
1
0
Xt(0)
1
0
0
Acc(t)
6
14
18
进行数值校验:
y=
(1)x
(1)+C
(2)x
(2)=18 √
图(3)移位加法器 DA 结构
3. FIR 滤波器的 MATLAB 设计
3.1 设计函数
在 MATLAB 信号处理工具箱中,提供了基于窗函数的 FIR 数字滤波器设计函数。
fir1
是用窗函数法设计线性相位 FIRDF 的工具箱函数,调用格式如下:
hn=fir1(N, wc, ′ftype′, window)
fir1 实现线性相位 FIR 滤波器的标准窗函数法设计。
“标准”是指在设计低通、 高通、
带通和带阻 FIR 滤波器时,Hd(ejω)分别取相应的理想低通、 高通、 带通和带阻滤波器,
因此设计的滤波器的频率响应称为标准频率响应。
hn=fir1(N,wc)可得到 6dB 截止频率为 wc 的 N 阶(单位脉冲响应 h(n)长度为 N+1)FIR 低
通滤波器,默认(缺省参数 windows)选用 hammiing 窗。
其单位脉冲响应 h(n)为 h(n)=hn(n+1),
n=0,1,2,…,N而且满足线性相位条件:
h(n)=h(N-1-n)其中 wc 为对π归一化的数字
频率,0≤wc≤1。
当 wc=[wc1, wc2]时,得到的是带通滤波器,其 6 dB 通带为 wc1≤ω≤
wc2。
hn=fir1(N,wc,′ftype′)可设计高通和带阻滤波器。
当 ftype=high 时,设计高通 FIR 滤波器;
当 ftype=stop 时,设计带阻 FIR 滤波器。
应当注意,在设计高通和带阻滤波器时,阶数 N 只能取偶数(h(n)长度 N+1 为奇数)。
不
过,当用户将 N 设置为奇数时,fir1 会自动对 N 加 1。
hn=fir1(N,wc,window)可以指定窗函数向量 window。
如果缺省 window 参数,则 fir1 默
认为 hamming 窗。
可用的其他窗函数有 Boxcar, Hanning, Bartlett, Blackman, Kaiser
和 Chebwin 窗。
这些窗函数的使用很简单(可用 help 命令查到),例如:
hn=fir1(N,wc,bartlett(N+1))使用 Bartlett 窗设计;
hn=fir1(N,wc,chebwin(N+1,R))使用 Chebyshev 窗设计。
hn=fir1(N,wc,′ftype′,window)通过选择 wc、 ftype 和 window 参数(含义同上),可
以设计各种加窗滤波器。
Fir2 可以指定任意形状的 Hd(ejω), 用 help 命令查阅其调用格式。
3.2 FDATOOL 使用
fdatool(filter design & analysis tool)是 matlab 信号处理工具箱里专用的滤波
器设计分析工具,fdatool 可以灵活地采用不同方法设计几乎所有的经典滤波器,查看滤波
器的各种指标,并得到所设计滤波器的系数。
在 MATLAB 的命令窗口输入:
fdatool 命令,会出现图(4)所示界面,界面总共分两大
部分,一部分是 design filter,在界面的下半部,用来设置滤波器的设计参数;另一部分
则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
design filter 部分主要分
为:
Response type(滤波器类型)选项,包括 lowpass(低通)、highpass(高通)、ban
dpass(带通)、bandstop(带阻)和特殊的 fir 滤波器。
design method(设计方法)选项,包括 iir 滤波器的 butterworth(巴特沃思)法、cheby
shev type i(切比雪夫 i 型)法、 chebyshev type ii(切比雪夫 ii 型) 法、elliptic
(椭圆滤波器)法和 fir 滤波器的 equiripple 法、least-squares(最小乘方)法、windo
w(窗函数)法。
filter order(滤波器阶数)选项,定义滤波器的阶数,包括 specify order(指定阶数)
和 minimum order(最小阶数)。
在 specify order 中填入所要设计的滤波器的阶数(n 阶
滤波器,specify order=n-1),如果选择 minimum order 则 matlab 根据所选择的滤波器
类型自动使用最小阶数。
frequency specifications 选项,可以详细定义频带的各参数,包括采样频率fs 和频带的
截止频率。
它的具体选项由 filter type 选项和 design method 选项决定,例如 bandpass
(带通)滤波器需要定义 fstop1(下阻带截止频率)、fpass1(通带下限截止频率)、fpa
ss2(通带上限截止频率)、fstop2(上阻带截止频率),而 lowpass(低通)滤波器只需
要定义 fstop1、fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数
所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
magnitude specifications 选项,可以定义幅值衰减的情况。
例如设计带通滤波器时,可
以定义 wstop1(频率 fstop1 处的幅值衰减)、wpass(通带范围内的幅值衰减)、wstop2
(频率 fstop2 处的幅值衰减)。
当采用窗函数设计时,通带截止频率处的幅值衰减固定为
6db,所以不必定义。
window specifications 选项,当选取采用窗函数设计时,该选项可定义,它包含了各种常
用的窗函数类型。
图(4)滤波器设计分析界面
例:
设计方法(Design Method)为 FIR,采用窗口法(Window);
✧滤波器阶数(Filter Order)定制为 15;
✧窗口类型为 Kaiser,Beta 为 0.5;
✧Fs 为 48 kHz,Fc 为 10.8 kHz。
设置好后的界面如图(5)所示。
图(5)设计界面
计算完 FIR 滤波器系数后,往往需要对设计好的 FIR 滤波器进行相关的性能分析,以便
了解该滤波器是否满足设计要求。
分析操作步骤如下:
(1)选择 FDATool 的菜单“Analysis”→“Magnitude Response”,启动幅频响应分析。
图(6)显示了滤波器的幅频响应图,x 轴为频率,y 轴为幅度值(单位为 dB)。
在图的左侧
列出了当前滤波器的相关信息:
滤波器类型为 Direct form FIR(直接 I 型 FIR 滤波器);滤
波器阶数为 15。
图(6) 滤波器的幅频响应图
选择菜单“Analysis”→“Phase Response”,启动相频响应分析。
图(7)显示了滤波
器的相频响应。
由图可以看到设计的 FIR 滤波器在通带内其相位响应为线性的,即该滤波器
是一个线性相位的滤波器。
图(8)显示了滤波器幅频特性与相频特性的比较。
这可以通过菜单选择“Analysis”→
“Magnitude & Phase Response”来启动分析。
选择菜单“Analysis”→“Group Delay Response”,启动群延时分析,波形如图(9)
所示。
图(7)相频响应
图(8) 幅频响应与相频响应的比较
图(9) FIR 滤波器的群延时
求出的 FIR 滤波器的系数可以通过选择菜单“Analysis”→“Filter Coefficients”来观
察,见图(10)。
图中列出了 FDATool 计算的 15 阶直接 I 型 FIR 滤波器的部分系数。
图(10) FIR 滤波器系数
(5)量化
从图(10)可以看到,FDATool 计算出的值是一个有符号小数,而 FIR 滤波器模型需要一
个整数作为滤波器系数。
所以必须进行量化,并对得到的系数进行归一化。
为此,点击
FDATool 左下侧的工具按钮进行量化参数设置。
在设置“Turn quantization on”前选择
“√”,如图(11)所示。
图(12 )中显示了量化后的部分系数值。
注意在这里系数仍是用小数表示的,不同于
量化前的系数,现在其二进制表示的位数已满足量化要求。
图(11)量化参数设置
设计的 FIR 滤波器在量化后滤波器的性能会有所改变,其幅频响应、相频响应也有所变化。
量化在带来实现方便的同时也带来了量化噪声,图( )显示了量化带来的噪声分析。
图(12)量化后的噪声分析
(6)导出滤波器系数
为导出设计好的滤波器系数,选择 FDATool 菜单的“File”→“Export...”,打开导
出(Export)对话框,如图(13)所示。
在该窗口中,选择导出到工作区(Workspace)。
这时
滤波器系数就存入到一个一维变量 Num 中了,不过这时 Num 中的元素是以小数形式出现的:
Num =-0.07420.02340.11330.0117-0.1758-0.09770.35940.8281
0.82810.3594-0.0977-0.17580.01170.11330.0234-0.0742
图(13)导出系数对话框
现在若要在 FIR 滤波器模型中使用这些数据,还需要将它们转化为整数:
在 MATLAB 主
窗口的命令窗口中键入:
>>Num*(2^8)
得到:
>>Num*(2^8)
ans=
Columns 1 through 10
-196293-45
-25 92 212 212 92
Columns 11 through 16
-25-453296-19
计算出的系数可用于 FIR 滤波器设计中。
4. DDS 信号发生器
DDS 为直接数字频率合成技术,最初由美国学者 J.Tierney 等人于 1971 年提出,它是一
种新颖的全数字实现技术,由于其具有频率转换时间短,频率分辨率高,相位噪声低以及在
频率转变时保持相位连续等优点,在现代通信、雷达、航天航空等众多领域得到广泛应用。
DDS 的基本结构如图(14)所示。
相 位 字 输 入同 步
数据线位宽
N
寄存器
频 率 字 输 入同 步 N
寄存器
N
寄存器
M
M
正 弦 ROM
相位调制器
相位累加器
clk
系统时钟
图(14) DDS 的基本结构
一个基本的 DDS 结构主要由相位累加器、相位调制器、正弦 ROM 查找表和 D/A 构成。
图中的
相位累加器、相位调制器、正弦 ROM 查找表是 DDS 结构中的数字部分,由于具有数控频率合
成的功能,又合称为 NCO(Numerically Controlled Oscillators)。
相位累加器是整个 DDS 的核心,在这里完成相位累加功能。
相位累加器的输入是相位增
量,又由于与输出频率 f
out是简单的线性关系,故相位累加器的输入又可称为频率字输入,
频率字输入在图(14)中还经过了一组同步寄存器,使得当频率字改变时不会干扰相位累加器
的正常工作。
相位调制器接收相位累加器的相位输出,在这里加上一个相位偏移值,主要用于信号的
相位调制,如 PSK(相移键控)等。
在不使用时可以去掉该部分,或者加一个固定的相位字输
入。
相位字输入也需要用同步寄存器保持同步。
需要注意的是,相位字输入的数据宽度 M
与频率字输入 N 往往是不相等的,M 正弦 ROM 查找表完成的查表转换,也可以理解成相位到幅度的转换,它的输入是相位调 制器的输出,事实上就是 ROM 的地址值;输出送往 D/A,转化成模拟信号。 由于相位调制器 的输出数据位宽 M 也是 ROM 的地址位宽,因此在实际的 DDS 结构中 N 往往很大,而 M 总为 10 位左右。 M 太大会导致 ROM 容量的成倍上升,而输出精度受 D/A 位数的限制未有很大改善。 因此,在实际应用中,对于 ROM 容量的缩小,人们提出了很多解决方法。 5.SignalTap Ⅱ逻辑分析仪 随着 FPGA 设计任务复杂性的不断提高,FPGA 设计调试工作的难度也越来越大,在设计 验证中投入的时间和花费也会不断增加。 为了让产品更快投入市场,设计者必须尽可能减少 设计验证时间,这就需要一套功能强大且容易使用的验证工具。 Altera SignalTap Ⅱ逻辑 分析仪可以用来对 Altera FPGA 内部信号状态进行评估,帮助设计者很快发现设计中存在问 题的原因。 Quartus Ⅱ软件中的 SignalTap Ⅱ逻辑分析仪是非插入式的,可升级,易于操作且对 Quartus Ⅱ用户免费。 SignalTap Ⅱ逻辑分析仪允许设计者在设计中用探针的方式探查内部 信号状态,帮助设计者调试 FPGA 设计。 SignalTap Ⅱ逻辑分析仪支持下面的器件系列: Stratix Ⅱ、Stratix、Stratix GX、 Cyclone Ⅱ、Cyclone、APEX Ⅱ、APEX 20KE、APEX 20KC、APEX 20K、Excalibur 和 Mercury。 在设计中嵌入 SignalTap Ⅱ逻辑分析仪有两种方法: 第一种方法是建立一个SignalTap Ⅱ 文件(.stp),然后定义 STP 文件的详细内容;第二种方法是用 MegaWizard Plug-InManager 建立并配置 STP 文件,然后用 MegaWizard 实例化一个 HDL 输出模块。 6.FIR 滤波器 IP 核使用 QuartusII 中提供了高性能 FIR 滤波器的 IP core 供设计人员使用。 用户界面如图(15) 所示。 图(15)FIR IP 核设置界面 FIRIP 核有丰富的控制信号,详细说明如下: 7. 实验结果 用 VHDL 语言设计分布式算法 FIR 滤波器,并设置 DDS 信号源的频率和相位控制字, 使得输入到 FIR 滤波器的激励信号相当于: s(t ) = sin(100πt ) + sin(200πt ) ,即频率分别为 50Hz 和 100Hz 的两路正弦波的和信号,则经 FIR 滤波器滤波后,通过嵌入式逻辑分析仪监 测到的信号波形如图(16)所示。 图(16) 滤波结果 1 图(16)中 filterin 端口是 DDS 信号源的输入信号,filterout 端口为 FIR 滤波器的输出 信号。 从滤波结果可以看出信号滤波前后的时域波形有了很大的不同,原始信号中的两个频 率分量经滤波后只留下一个单频的正弦波分量。 而当改变频率和相位控制字,使得 DDS 信 号源的输出信号相当于 s(t ) = sin(96πt ) + sin(48πt ) ,即频率为 24Hz 和 48Hz 两个正弦波的 和信号,通过嵌入式逻辑分析仪监测到的信号波形如图(17)所示。 图(17) 滤波结果 2 从图(17)中可以直观地看出信号时域输出波形在滤波前后没有发生什么变化,原始信 号中两个频率分量依然存在。 建立相同数据在 MATLAB 中仿真,可得到一致结果,验证了 设计的正确性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FIR 滤波器 原理 设计