0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带你认识滤波器及FIR滤波器设计

冬至子 来源:MYMINIEYE 作者:范龙飞 2023-06-15 11:43 次阅读

一 .滤波器介绍

滤波器是一种用来减少,消除干扰的电器部件,有对特定频率的频点或该频点以外的频率信号进行有效滤除,从而实现消除干扰、获取特定频率信号的功能。数字滤波器相比模拟滤波器,有着更高的精度、信噪比、无可比拟的可靠性。

FIR,IIR是数字滤波器中最常见的两种滤波器。 FIR滤波器是有限冲击响应,最主要特点是没有反馈回路,故不存在不稳定的问题,很容易做到严格的线性相位特性,另外设计方式是线性的,硬件容易实现,对于抽取和插入,结构简单,很容易得到高速流水线的设计,有定义明确的量化噪声,并且有较低的系数和算法四舍五入误差预算,但是其高滤波器长度的实现需要大量的工作量及资源;IIR滤波器是无限冲击响应,最主要的特点是可以用较低的阶数,获得高的选择性,所用的存储单元少,计算量小,效率高。但是这样的效率是以非线性相位为代价的,选择性越好,相位非线性越严重。本文以FIR为例介绍数字滤波器的设计及验证。

二.FIR滤波器设计

采用matlab的Filter Design 来完成对FIR滤波器的设计,打开matlab,在命令行输入filterDesigner,进入到设计页面,如下

图片

对滤波器的设计主要涉及三个点:通带,阻带,过渡带。

主要的参数有以下5个:

Fpass:通带上限截至频率,Apass:带内平坦度;

Fstop:阻带下限截至频率,Astop:带外抑制幅度;

Fs:数据率

输入数据的速率为9.14MHz,通带上限截止频率为2M,由于考虑到镜像干扰,阻带截至频率设为2.2M,阶数选择128阶,滤波器阶数可以根据需要设置,也可以设置带内平坦度和带外抑制幅度,来选择所需最小阶数,达到自己需要的精度即可。设置完成之后,如下:

图片

滤波器设计完成之后需要对滤波器的系数进行定点量化,选择按钮3,定义16位的数据位宽,其中15位为小数。如下:

图片

点击Filter Design菜单栏的Targets选项下拉菜单的Generate C Header和XILINX Coefficient(.COE) File,分别导出的是C的头文件和.coe文件(滤波器系数文件),C的头文件如下

图片

Coe文件为:

图片

这里选择产生Generate C Header,产生滤波器系数,此处没有选择coe文件,是因为当vivado IP核使用coe方式导入时,vivado不能区分小数位。

三.vivado FIR IP核介绍

1.设置滤波器的属性 :打开vivado IP核,直接填入滤波器的系数,此处系数需要量化为小数,左边为滤波器的增益,和matlab一致,如下:

图片

滤波器的类型包括单速率(Single Rate,即数据输出与输入速率相同),抽取(Decimation)和插值(Interpolation)应用于多速率信号处理系统,此外还支持希尔伯特变换(Hilbert)模式。抽取型一般多用于数字前端下变频抽取样值降低AD采样速率,插值型用于常用于提高采样速率。由于需要对AD数据进行抽取滤波,这里选择抽取类型,抽取的倍数为2倍。

2.设置FIR滤波器的通道 ,由于只使用一个通道,因此交织通道序列(Channel Sequence)选择Basic,通道数(Number of Channels)为1;Hardware Oversampling Specification中设置过采样模式,选择Input Sample Period,即输入采样周期,也可以通过输入采样频率和时钟频率来设置,设置如下:

图片

3.滤波器量化设置

填入滤波器系数之后,选择量化的位数,输入的数据位宽为16,小数位数为15,如果全精度输出,输出位宽为33,对后续的处理很不方便,输出也需要进行相应的截尾,因此设置为:

图片

4.FIR滤波器在FPGA上实现资源选取的情况,一般采用系统默认即可。

5.对外输入和对外输入接口情况, 这里只添加复位信号,可以根据自己的实际需求,添加信号。

图片

6.Summary是对FIR滤波器设计的总结,所使用的类型功能,滤波器阶数等,最后点击生成FIR IP核。

四.FIR 滤波器实现

1.C模型使用

Vivado提供了FIR IP核的C仿真模型,但是不能直接再matlab上运行,需要搭建仿真环境,根据自己使用的matlab选择不同的版本。搭建完成之后在matlab命令窗口输入mex-setup,出现以下提示表示安装成功

图片

然后找到IP核C模型,在vivado工程FIR IP核的目录下的cmodel的文件夹,FIR_demo.srcssources_1ipir_compiler_0cmodel,其中有两个文件,lin64是linux版本的,nt64是windows版本的,选择nt64解压。

图片

matlab打开解压的文件夹,输入run make_fir_compiler_v7_2_mex,出现以下表示运行成功。

图片

最后要调用的文件是run_fir_compiler_v7_2_mex.m,这个文件可以作为参考使用,部分内容为:

图片

作如下修改:

图片

其中FIR参数设置要和vivado中的IP核配置完全相同,否则会出现比对数据不一致的情况,具体参数配置见下表

各类型对应的数值选择

图片

2.Modelsim 仿真

仿真时需要注意,采用的抽取类型,数据速率和时钟速率不一样,每隔8个时钟周期采一个数据,然后输入到FIR IP核,输出是每隔16个时钟周期输出一个数据,输出延迟可在FIR IP核Summary界面得知,模块时序如下:

图片

3.数据对比

滤波器的截至频率为2MHz,用matlab产生一个1MHz和3MHz的混合信号,分别输入C仿真模型和modelsim进行仿真,得到的结果进行对比如下:

图片

可以清楚的看到输出的结果是一致的,通过比较matlab和modelsim输出的数据,发现也是一致的,相减之后为零,验证了滤波器的正确性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA设计
    +关注

    关注

    9

    文章

    425

    浏览量

    26273
  • 数字滤波器
    +关注

    关注

    4

    文章

    250

    浏览量

    46747
  • 模拟滤波器
    +关注

    关注

    0

    文章

    29

    浏览量

    13339
  • MATLAB仿真
    +关注

    关注

    4

    文章

    174

    浏览量

    19640
  • fir滤波器
    +关注

    关注

    1

    文章

    92

    浏览量

    18712
收藏 人收藏

    评论

    相关推荐

    FIR滤波器FAQ原理简述

      1、FIR 滤波器是在数字信号处理(DSP)中经常使用的两种基本的滤波器之一,另一个为IIR滤波器。  2、FIR代表有限冲激响应(Fi
    发表于 09-24 16:05

    基于FPGA的FIR滤波器设计与实现

    本帖最后由 eehome 于 2013-1-5 09:50 编辑 基于FPGA的FIR滤波器设计与实现   文章研究基于FPGA、采用分布式算法实现FIR滤波器的原理和方法,用
    发表于 08-11 15:32

    FIR滤波器与IIR滤波器的区别与特点

    本帖最后由 xie0517 于 2016-8-8 08:52 编辑 FIR是有限冲击响应;IIR是无限冲击响应。 FIR和IIR滤波器的一个主要区别:FIR是线性相位,IIR为非
    发表于 08-08 08:49

    第35章 FIR有限冲击响应滤波器设计

    转dsp系列教程 FIR滤波器设计到的内容比较多,本章节主要经行了总结性的介绍,以帮助没有数字信号处理基础的读者能够有个整体的认识,有了这个整体的认识之后再去查阅相关资料可以到达事半功
    发表于 09-29 08:23

    FIR滤波器与IIR滤波器的区别与特点

    FIR和IIR滤波器的一个主要区别:FIR是线性相位,IIR为非线性相位(双线性变换法),对于非线性相位会造成的影响,可以这样考虑:对于输入的不同频率分量,造成的相位差与频率不成正比,则输出
    发表于 03-12 13:21

    如何设计低通FIR滤波器

    此示例显示如何设计低通FIR滤波器。这里介绍的许多概念可以扩展到其他响应,如高通,带通等。FIR滤波器被广泛使用,因为它们具有强大的设计算法,以非递归形式实现时的固有稳定性,可以轻松实
    发表于 08-23 10:00

    FIR滤波器和IIR滤波器有什么区别

    数字滤波器广泛应用于硬件电路设计,在离散系统中尤为常见,一般可以分为FIR滤波器和IIR滤波器,那么他们有什么区别和联系呢。FIR
    发表于 06-27 04:20

    怎么设计高阶FIR滤波器

    相对无限冲击响应(IIR)滤波器,有限冲击响应(FIR)能够在满足滤波器幅频响应的同时获得严格的线性相位特性,而数据通信、语音信号处理等领域往往要求信号在传输过程中不能有明显的相位失真,所以F
    发表于 08-23 06:39

    怎么设计高阶FIR滤波器

    相对无限冲击响应(IIR)滤波器,有限冲击响应(FIR)能够在满足滤波器幅频响应的同时获得严格的线性相位特性,而数据通信、语音信号处理等领域往往要求信号在传输过程中不能有明显的相位失真,所以F
    发表于 08-27 07:16

    为什么要使用FIR滤波器

    FIR滤波器如何定义?为什么要使用FIR滤波器
    发表于 04-06 07:48

    FIR滤波器的特性是什么

    数字滤波器的类型有FIR(有限长冲击与IIR(无限长。离散数字系统中,滤波器的表述为差分方程。FIRFIR基本特性:FIR 滤波器永远是稳定
    发表于 08-17 06:19

    fir滤波器的设计和实现

    对于fir滤波器,已经在前面的文章中记录了仿制DIY&关于MATLAB中滤波器设计工具的使用心得记录),其设计和实现都非常简单。如果在嵌入式系统中可以满足且有必要实时iir运算,那么
    发表于 12-22 08:29

    什么是fir数字滤波器 什么叫FIR滤波器

    什么是fir数字滤波器 Part 1: Basics1.1 什么是FIR滤波器?FIR 滤波器
    发表于 01-16 09:42 1.6w次阅读

    基于MATLAB的FIR滤波器设计与滤波

    基于MATLAB的FIR滤波器设计与滤波
    发表于 12-14 22:08 63次下载

    IIR滤波器FIR滤波器的区别

    数字滤波器是数字信号处理中最常用的一种技术,可以对数字信号进行滤波、降噪、增强等处理,其中最常见的两种数字滤波器是IIR滤波器FIR
    的头像 发表于 06-03 10:21 1.5w次阅读