Uploaded by faday

带通 FIR 滤波器设计论文

advertisement
带通 FIR 滤波器设计
胡泽琛,S321517032,huzc@hrbeu.edu.cn
摘要:本文采用 Matlab 滤波器设计工具 FDAtool,设计了一个采样率为 1MHz 的带通滤波器,其通带截止频
率分别为 170KHz、230KHz,阻带截止频率分别为 150KHz、250KHz,通带内波纹抖动和阻带衰减为 1dB,阻带
衰减 60dB。生成滤波可执行程序。分别在 System Generator 和 Matlab Simulink 中建立仿真模型,仿真并对比 FIR
数字带通滤波效果,再由 ModelSim 和 System Generator Simulink 得出时域仿真图。最后借助数字滤波器调试验证
该方法的有效性。
关键词:FIR 滤波器、FPGA、信号采集、IP 核
1 基本原理
每一个 FIR 数字滤波器都有一个相应的系
统函数,这个函数用来表示系统的输入与输出之
间的联系,假设 X(z)为系统输入,Y(z)为系
统输出,H(z)为系统传递的关系,通常可以将
系统函数表示为:
器和累加器组成。此结构为直接型 FIR 滤波器结
构,也称横向结构(transverse)。
−𝑘
∑𝑚
𝑌(𝑧)
𝑘=0 𝑏𝑘 𝑧
𝐻(𝑧) =
=
𝑛
1 − ∑𝑘=1 𝑎𝑘 𝑧 −𝑘 𝑋(𝑧)
当系数为固定的常数时,可以将函数变化为:
𝑛
𝑚
𝑦(𝑛) = ∑ 𝑎𝑘 𝑦(𝑛 − 𝑘) + ∑ 𝑏𝑥 𝑥(𝑛 − 𝑘)
𝑘=1
𝑘=0
由式可以看出,滤波器进行滤波处理的本质
是进行一次函数处理,将输入的离散信号进行一
定关系的函数运算,然后得到滤波器处理后的一
组信号。在许多工程领域中,所采用的数字滤波
器是具有线性相位这一重要特点的。对于因果系
统来说,除了 z=0 的极点外都是零点,而且 a=0,
对式进行简化得:
𝑚
𝑦(𝑛) = ∑ 𝑏𝑘 𝑥(𝑛 − 𝑘)
𝑘=0
对式(3)进行分析可知,可以认为输出 y(n)
是由输入 x(n)与激励 h(n)进行卷积运算得到
的。
FIR 数字滤波器的激励信号是有限个数的,
当滤波器阶数为 N=1 时,H(z)可简化为:
图 1 直接型 FIR 滤波器结构
2 设计过程
2.1 matlab 滤波器设计与仿真
首 先 在 matlab 的 APP 中 找 到 filter
designer 或在命令行里输入:fdatool。其中 Fs
为采样率,滤波器有效频率范围为 Fs/2, 下面的
值不能超出这个范围,另外注意 Specify order
的值,这里是数字滤波器阶数,阶数越高其复杂
度越高滤波器带内越平滑,具体取值取多少应在
工程中取舍,在类型中选择需要的滤波器类型,
依次为低通、高通、带通、带阻,选择带通后,
在 Frequency Specifications 里,先确定采样
率,这里选择 1MHz 的采样率,设计一个中心频率
为 200kHz,带宽为 60MHz 的滤波器。设置通带阻
带后点击 Design Filter,通带与阻带设置如图
2 所示:
𝑁=1
𝐻(𝑧) = ∑ ℎ(𝑛)𝑧 −𝑛
𝑛=0
可以这样理解式,H(z)是 z-1 的 N-1 阶多项
式,H(z)在复数平面中共有 N-1 个零点,而复
数平面原点 Z=0 处是 N-1 个极点所在的位置。
由上式可得到 FIR 滤波器在 FPGA 中的实现
结构,如图 1 所示,主要由延迟单元 Z-1、乘法
图 2 FDA tool 设计界面
将上面的程序执行 Generate MATLAB code,产生
专用的系数产生程序。然后我们使用这个程序在
matlab 中直接进行滤波效果的处理。通过仿真,
得到的仿真效果如图 3:
用 FDAtool 产生一个 MATLABY 源程序,通过
直接修改这个程序,产生 xilinx 所需要的滤波
器系数格式数据,在 FPGA 中,为了节约硬件资
源,我们将滤波器的阶数降低为 127 阶。产生一
个 FIR 的 IP 核,具体的参数配置如下图 6:
图 6 滤波器参数配置
然后完成配置,根据系统参数设计要求,编
写相应的 verilog 程序,最后通过 modelsim 仿
图 3 matlab 仿真
真得到的仿真效果如下所示:
为了产生比较明显的对比结果,我们这里产
3 结果验证
生一段频谱均匀的随机数进行仿真,从上图的仿
System Generator 仿真数据和 MATLAB 中使
真结果可知,通过该滤波器之后,可以实现对应
用的一致,分别输入频率 100kHz,160kHz,180kHz,
的通带滤波器效果。
200kHz,220kHz,240kHz 和 300kHz,可以看到这
2.2 System Generator 部分设计与仿真
部分的频谱分析仪的波形,与 Simulink 中的
在 SG 模 块 中 建 立 Simulink 模 型 和 在
FDATool 设计的数字滤波器滤波后的信号的频谱
Matlab Simulink 仿真环境中直接建立仿真模块, 进行对比,如下图 7 所示,仿真结果基本一致,
两者都利用 FDAtool 参数设计工具对系统所要
可以看到右边窗口的频谱(Spectrum Analyzer
求的滤波参数进行对比仿真,从而在频域上验证
SysGen 的窗口)和左边窗口即用 Simulink 的数
System Generator 模块仿真的正确性。
字滤波器设计所得的(Spectrum Analyzer FDA
在 System Generator 中,设计的模型如下
Tool)有轻微的不同,这是因为当连续时间系统
图 4 所示:
在离散时间硬件描述时受到量化和采样的影响。
图 4 System Generator Simulink 仿真模块图
为了对比效果,我在 SIMULINK 中也建立了
一个类似的模型,仿真模型如下图 5 所示:
图 7 仿真结果对比
图 5 Matlab Simulink 仿真模块图
2.3 FPGA 实现与仿真
根据系统参数设计要求,完成配置,编写相
应的 verilog 程序,最后通过 modelsim 仿真得
到的仿真效果如下图 8 所示,基本实现了带通 FIR
滤波器的功能。
图 8 modelsim 仿真结果
4 结论
基于多平台模型化的 FIR 数字带通滤波器设计方法,
利用 Xilinx System Generator for DSP 与 Matlab 联合开
发,实现数据流的相互调用与转换,与单纯只采用 HDL
和 C 语言对滤波器的设计与仿真相比,具有多方面的优
势,描述如下:
1) 操作界面图形化,参数改变简单方便灵活,并
且容易掌握,大大缩短了编程完成后综合布局布线调试
等工作的开发周期;
2) 最大程度保证滤波器算法在实际实现时与预
期设计要求做出的仿真高度一致;
在建立模型时,不需要建立仿真与实际实现的两种
模型,软件直接将其转换为硬件描述语言。
参考文献
[1]宋卓达,王志乾,李建荣,沈铖武,刘绍锦.基于 FPGA 的 FIR 数字
滤 波 器 设 计 及 实 现 [J]. 液 晶 与 显 示 ,2020,35(10):1073-1078.
术,2022,56(03):9-11.
[2]罗耀国,娄淑琴.基于 FPGA 的字串行 FIR 滤波器的
实现[J] .2005,12 (6 ):48-51
[3]彭文钦、孙世新.FIR 滤波器分块并行算法分析[J].计
算机应用,2006,20(3):32-35
[4]殷福亮,宋爱军.数字信号处理 C 语言程序集[M].沈
阳:辽宁科学技术出版社,1997
[5]仲巡.FIR 的 FPGA 设计[J].电子产品设计,2007, (2 ):
32-34
[6]褚振勇,屈丹,门向生.利用 FPGA 实现数字信号处理
[J].电讯技术,2006,(1):91-96
[7]张卫杰,吴琼之.新一代 CPLD 及其应用[J].电子技术
应用,2006, (7):63-66
Download