fir fpga 不同截止频率_一种新的FIR滤波器系数量化方法

相对于模拟滤波器,数字滤波器具有高精度、高可靠性、可编程改变滤波特性、便于集成等一系列优点,并且理论上可实现近似理想频率特性的滤波性能。经典的数字滤波器主要包括有限脉冲响应(Finite Impulse Response,FIR)滤波器和无限脉冲响应(Infinite Impulse Response,IIR)滤波器。相对于IIR滤波器来说,当FIR滤波器系数保持线性对称结构时,能够在满足幅频响应要求的同时获得严格的线性相位特性。在数据通信、语音信号处理、雷达信号处理等领域通常要求信号在传输过程中不能有明显的相位失真,因此FIR滤波器获得了更广泛的应用[1]

因其独特的可编程结构及强大的并行运算能力,很适合于实现FIR滤波器设计。基于FPGA的FIR滤波器设计近年来一直是学者们研究的热点,主要集中在最优滤波器设计方法、提高滤波器运行速度、滤波器方法等方面[2-7]。常规的系数量化方法仅关注对滤波器本身幅频特性的影响[8],较少考虑在滤波器输出位宽确定的情况下,如何提高输出幅度,进而最大化输出信噪比的问题。在研究分析传统滤波器系数量化方法的基础上,提出了基于滤波器增益的系数量化方法,给出了MATLAB及FPGA实现后的ModelSim仿真测试数据,结果表明这种方法最多可将滤波输出幅度提高近一倍,信噪比提高近6 dB。

1 FIR滤波器原理及结构

FIR滤波器,是指单位脉冲响应长度有限的滤波器。FIR滤波器的突出特点是其单位取样响应h(n)是一个N点长的有限长序列,0≤n≤N-1。滤波器的输出y(n)可表示为输入序列x(n)与单位取样响应h(n)的线性卷积。

从系统函数很容易看出,FIR滤波器只在原点上存在极点,这使得FIR滤波器具有全局稳定性。FIR滤波器是由一个抽头延迟线加法器和乘法器的集合构成的,每一个乘法器的操作系数就是一个FIR系数。因此,FIR的这种结构也被人们称为抽头延迟线结构。图1是FIR滤波器FPGA实现的典型结构图。

308f6b8a74e4046a3c207097d91c2236.gif

2 系数量化对FIR滤波器性能的影响

2.1 FIR滤波器的MATLAB设计方法

在采用FPGA编程实现FIR滤波器之前,通常采用MATLAB软件设计滤波器系数。MATLAB提供了丰富的FIR滤波器函数,分别对应不同的设计方法,如窗函数法、频率取样法、基于“最大误差最小”的最优设计法等。为便于对比,采用最优设计方法设计FIR低通滤波器(MATLAB设计函数为firpm),其参数为:采样频率32 MHz,过渡带0.5 MHz~1.5 MHz。图2为MATLAB设计出的滤波器幅频响应图。

b763cd82be3044789c37c8ad279e9036.gif

由图2可知,FIR滤波器的长度N越大,滤波器过渡带越接近设计参数,通带及阻带滤波性能越好,当N=41时阻带衰减为26 dB,当N=61时阻带衰减为38.5 dB,当N=81时阻带衰减为48 dB;当系数长度超过一定值后(本实例为61),滤波器过渡带的改善余量已很小,但通带及阻带滤波性能会持续增加。不失一般性,下文以长度为61的低通滤波器为例进行讨论。

2.2 系数的量化方法及其对滤波性能的影响分析

根据MATLAB的FIR滤波器设计原理,无论滤波器长度多长,滤波器通带内增益均为1(0 dB),滤波器系数为带小数的浮点数。由于FPGA只能处理二进制数据,MATLAB设计出的滤波器系数需要转换成二进制数据才能完成FPGA电路实现。

滤波器系数是带符号的数据,FPGA实现时需要用二进制补码格式表示。设滤波器系数的量化位宽为Q,则系数C的表示范围为-2Q-1≤C≤(2Q-1-1),又由于FIR滤波器系数的严格对称特性,实际范围为(1-2Q-1)≤C≤(2Q-1-1)。

传统的滤波器系数量化方法可分解为3个步骤:(1)找出滤波器系数中最大的绝对值数M;(2)以M为基准,对所有滤波系数进行归一化处理,即对所有系数除以M;(3)对所有滤波器系数乘以(2Q-1-1),并对处理后的系数取整形成整数系数;(4)将整数滤波器系数转换成二进制补码数据。图3为不同量化位宽情况下的滤波器幅频响应图。

945a5388d8d2dfb2f7b4c33c2cf9731c.gif

由图3(a)中的归一化幅频图可知,滤波器系数量化位宽越小,量化后的滤波性能越差(当量化位宽为6 bit时,阻带衰减相比量化前减小了约6 dB),反之量化位宽越大,量化前后的滤波性能相差越小。当量化位宽超过一定值(本实例为12 bit)后,滤波性能几乎不再变化。不失一般性,下文以长度为61、量化位宽为12 bit的低通滤波器为例进行讨论。

3 基于增益的FIR滤波器系数量化方法

3.1 一般量化方法对系统性能的影响

根据前面讨论的滤波器量化方法,系数量化过程相当于滤波器增益扩大了(2Q-1-1)/M倍。从图3(b)中的未归一化幅频图可知,量化位宽越大,滤波器通带内的增益越大。当量化位宽为6 bit时,通带增益为54 dB,当量化位宽为12 bit时,增益为90 dB。

FPGA设计FIR滤波器,一般采用定点二进制数据进行运算。前面讨论系数量化对系统性能的影响时,实际有一个前提条件,即滤波运算采用全精度运算,滤波运算的结果保留全部有效数据位。当滤波器系数量化位宽为Q时,由于滤波器增益扩大了(2Q-1-1)/M倍(一般来说,M≤1),为保证全精度运算,保留全部有效滤波输出位宽,相对于滤波器输入信号而言,位宽将增加Qabit。其中

对于前面讨论的长度N=61,量化位宽Q=12的低通滤波器而言,M=0.062 1,(2Q-1-1)/M=32 963,则滤波输出位宽需增加Qa=16 bit。假设输入数据位宽为10 bit,则滤波器全精度输出位宽为26 bit。

2e3d90694fda224b0133cede6457decc.gif

3.2 基于增益的系数量化方法

根据前面的讨论,量化滤波器系数后,输出有效位宽所能表示信号的信噪比下降,是由于滤波输出信号达不到满量程状态。为此,优化滤波器系数量化方法,采用基于滤波器增益的方法对系数进行量化。结合前述的滤波器实例,具体步骤为:(1)对所有滤波器系数乘以=216=65 536,并对处理后的系数取整形成整数系数;(2)将整数滤波器系数转换成二进制补码数据。

经过改进的量化处理后,相当于对滤波增益直接增加了65 536倍(常规方法仅增加了32 963倍),滤波输出的数据幅值能够达到输出数据有效位宽所能表示的满量程值,实现了输出位宽一定的条件下,输出信号信噪比的最大化。经过这样的量化处理,系数的量化位宽为:

对于上文所讨论的低通滤波器,量化位宽需要13 bit。图4为常规量化方法和改进量化方法的滤波器系数(冲激响应)图,其中Qa=16。

fa1ce80ad263bbb03f8a3dd70bfbea66.gif

从图4可以看出,在滤波输出位宽相同的条件下,改进的量化方法所产生的滤波器系数(冲激响应)幅值大于常规方法,相当于滤波器增益更大。同时也要注意到,改进的量化方法所需的滤波器系数位宽由12 bit增加到13 bit。也就是说,增加滤波器增益,是以增加系数量化位宽为代价的。

4 FPGA实现后的测试结果分析

接下来采用Xilinx的Spartan6系列FPGA器件XC6SLX25-FT256C为目标平台,调用ISE14.7工具中的FIR滤波器核,实现前文所讨论的低通滤波器(采样频率为32 MHz,过渡带为0.5 MHz~1.5 MHz,滤波器长度N=61)。仿真工具为ModelSim10.1,输入信号为2路单频信号的叠加。两路单频信号频率分别为0.22 MHz和2 MHz,功率比为1:1。输入位宽为10 bit,滤波器输出位宽为26(Qa=16)。图5、图6分别为常规量化方法和改进量化方法的滤波器ModelSim仿真波形图。

023a37ad8de84bac46706e9a90672477.gif05357ca82dc9470d45d90a89a059770b.gif

从图5、图6中可以看出,两种方法都能够有效滤除带外干扰信号(2 MHz单频信号),改进量化方法的滤波器输出信号幅度值(16,641,407)明显大于常规量化方法的幅度值(7,910,390),相当于增加了滤波增益,增加了滤波输出信号的信噪比。

5 结论

本文详细分析了滤波器系数量化方法对滤波性能的影响。在对常规系数量化方法的步骤、原理进行分析的基础上,针对滤波输出数据幅值达不到有效位宽满量程的现象,提出了基于滤波器增益的系数量化改进方法。MATLAB仿真及FPGA实现后的ModelSim仿真均表明,在滤波输出位宽相同的条件下,改进的量化方法可以有效提高滤波器增益,进而提高滤波输出信号的信噪比。需要注意的是,增加滤波器增益是以增加系数量化位宽、增加FPGA实现后的逻辑资源为代价的。

参考文献

[1] 高耀鸿.基于FPGA的FIR低通滤波器[D].长沙:湖南大学,2012.

[2] 朱效效,蔡俊,陆伟.基于优化DA算法滤波器的设计及其FPGA实现[J].电子技术应用,2015,41(2):59-60,64.

[3] 徐彦凯,双凯.提高定点精度的FPGA信号处理算法[J].计算机工程与科学,2012,34(9):197-200.

[4] 郭广浩,刘志哲,孟庆龙,等.多级并行流水FIR数字滤波器的设计与验证[J].现代电子技术,2015,38(1):69-72.

[5] 李凯勇.基于FPGA高效FIR滤波器设计[J].青海大学学报,2017,35(6):56-60.

[6] 张娜,李春祎.多相并行FIR滤波器的FPGA高速实现方法[J].无线电通信技术,2017,43(4):86-90.

[7] 周龙,王红玲,崔新莹,等.基于FPGA及分布式算法滤波器[J].电子设计工程,2017,25(23):139-142.

[8] 曹振吉,何敏.基于FPGA和Matlab的FIR数字滤波器[J].现代电子技术,2015,38(19):98-101.

作者信息:

杜 勇

(四川工商学院 电子信息工程学院,四川 成都611745)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux进程编程3——守护进程

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、守护进程介绍 1、进程查看命令ps ps -ajx偏向显示各种有关的ID号;ps -aux偏向显示进程各种占用资源 2、(用于向进程发送信号的)指令kill “kill -信号编号 进程ID”&a…

pandas用众数填充缺失值_python数据分析包|Pandas-02之缺失值(NA)处理

本篇详解pandas中缺失值(Missing data handling)处理常用操作。缺失值处理常用于数据分析数据清洗阶段;Pandas中将如下类型定义为缺失值:NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,‘-NaN’, ‘-na…

系统设计学习

2019独角兽企业重金招聘Python工程师标准>>> 这里原帖地址: http://www.mitbbs.com/article_t/JobHunting/32492515.html 以下为转载内容 我是分割线 稍微总结一下1. 入门级的news feedhttp://www.quora.com/What-are-best-practices-for-building-somethttp://w…

编码 括号_Java编码规范整理汇总

来源:博学谷 作者:照照在Java的入门过程中,我们首先要养成一个良好的编写代码习惯。那么,了解清楚Java的编码规范就显得尤为必要了。编码格式不仅仅是美不美观的问题。这里我们可以试想一下,如果在Java开发中编码不规范…

rabbitmq消息队列,消息发送失败,消息持久化,消费者处理失败相关

转&#xff1a;https://blog.csdn.net/u014373554/article/details/92686063 项目是使用springboot项目开发的&#xff0c;前是代码实现&#xff0c;后面有分析发送消息失败、消息持久化、消费者失败处理方法和发送消息解决方法及手动确认的模式 先引入pom.xml <!--rabbitmq…

基于nginx实现缓存功能及uptream模块详细使用方法

基于nginx实现缓存功能及uptream模块详细使用方法一般情况下&#xff0c;前端使用nginx做代理或7层负载并向后实现varish/squid做cache server的效果要好的多nginx与squid做缓存比较nginx比squid有着巨大的优势表现在&#xff1a;nginx是异步假如后端的web服务器&#xff0c;当…

linux中的信号1——进程如何处理信号?

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、信号概述 1、信号是内容受限的一种异步通信机制 &#xff08;1&#xff09;信号的目的&#xff1a;用来进程间通信&#xff08;IPC&#xff09;、进程和内核间的通信。 &#xff08;2&#xff…

单片机oled显示浮点数函数_问中文编程在单片机上实现一个电子时钟,总共有几步?...

首先介绍开发一下语言&#xff1a;mcuScript&#xff0c;他是一个支持同时支持中文编程和英文编程的弱数据类型的脚本语言。相关介绍可参考前面的两篇文章:彭贞&#xff1a;mcuScript一个洋名字的中文(汉语)编程语言&#xff0c;初体验​zhuanlan.zhihu.com彭贞&#xff1a;mcu…

RabbitMQ的消息确认机制

转&#xff1a;https://www.toutiao.com/a6583957771840913934/?tt_frommobile_qq&utm_campaignclient_share&timestamp1532999387&appnews_article&utm_sourcemobile_qq&iid39062783162&utm_mediumtoutiao_android 一&#xff1a;确认种类 RabbitMQ的…

javascript 文件的同步加载与异步加载

原文:[转载]javascript 文件的同步加载与异步加载HTML 4.01 的script属性 charset: 可选。指定src引入代码的字符集&#xff0c;大多数浏览器忽略该值。 defer: boolean, 可选。延迟脚本执行&#xff0c;相当于将script标签放入页面body标签的底部&#xff0c;js脚本会在docume…

linux中的信号2——alarm、pause函数

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、alarm函数 函数原型 函数说明 &#xff08;1&#xff09;内核以API形式提供的闹钟&#xff1b; &#xff08;2&#xff09;可以为当前进程定义闹钟&#xff0c;时间到了会发出SIGALRM信号。 &…

easyexcel 填充模板 格式变了_Qamp;A | 如何制作规范的电子合同模板?

表单中使用电子合同时&#xff0c;不仅需要进行功能设置&#xff0c;还需要制作一份PDF格式的模板&#xff0c;上传到“合同模板”中&#xff0c;才能生成有效的电子合同&#xff0c;接下来&#xff0c;我们一起了解模板的制作方法。制作方法 1. 准备PDF模板首先准备一份PDF格式…

edoc2中标电子文件管理标准ERMS制定项目

2019独角兽企业重金招聘Python工程师标准>>> 据悉&#xff0c;上海鸿翼数字计算机网络有限公司&#xff08;edoc2&#xff09;参加了电子文件管理标准ERMS制定项目的投标&#xff0c;经过精心准备和专业的答辩&#xff0c;凭借多年在电子文件管理领域长期的探索和研…

文件IO——如何实现非阻塞式IO?

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、阻塞式IO 1、阻塞式的概念 我们知道&#xff0c;有些函数在调用时&#xff08;比如网络编程中的recv函数&#xff09;&#xff0c;如果某些条件不满足&#xff0c;则会进入等待状态&#xff0c…

散点画三维曲面图_UG 复杂曲面合金零件的数控加工

随着柔性制造、机床数控技术的飞速发展&#xff0c;具有复杂、 精密、小批量、多品种的曲面零件越来越多&#xff0c;如何利用数控 加工技术高质量、高效率加工该类零部件是很有研究价值 的。 本研究利用 UG 软件对复杂曲面合金零件进行三维实 体建模、设计加工工艺过程&#x…

扫盲:php session缓存至memcached中的方法

memcached是一套分布式的快取系统&#xff0c;当初是Danga Interactive为了LiveJournal所发展的&#xff0c;但被许多软件&#xff08;如MediaWiki&#xff09;所使用。这是一套开放源代码软件&#xff0c;以BSD license授权协议发布。[1]memcached仅支持一些非常简单的命令 比…

使用juniversalchardet做字符编码识别

为什么80%的码农都做不了架构师&#xff1f;>>> 在抓取网站的页面的时候最烦人的一件事情之一就是识别原站点的编码&#xff0c;通常来说只有GBK&#xff08;GB2312&#xff09;和UTF8两种&#xff0c;不过依旧需要读取大量Http头信息来识别&#xff0c;有些网站则…

获取系统信息1——linux系统中的时间

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、关于时间的概念 1、GMT时间 GMT是格林尼治时间&#xff0c;即格林尼治地区的当地时间。用格林尼治的当地时间作为全球国际时间&#xff0c;用以描述全球性的事件的时间&#xff0c;方便大家记忆…

判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)...

回文&#xff1a;字符对称排列的字符串&#xff0c;例如ABCBA 思路&#xff1a;根据队&#xff1a;先进先出和栈: 先进后出的原则&#xff0c;进行比较出队和出栈的字符是否相等。如果相等&#xff0c;则为回文。 创建控制台应用程序。 1 #region 字符节点类 2 …

句法依存分析_复旦大学邱锡鹏教授:词法、句法分析研究进展综述

本文为第十六届自然语言处理青年学者研讨会 YSSNLP2019 报告《词法、句法分析研究进展综述》的简要文字整理&#xff0c;本报告主要回顾词法、句法领域的最新研究进展。 关于报告人&#xff1a;邱锡鹏&#xff0c;复旦大学计算机科学技术学院副教授&#xff0c;博士生导师。于复…