您现在的位置是:首页 > 线性电源 > 技术解析

高阶FIR滤波器的计算机设计与FPGA实现

时间:2018-09-21 来源:互联网 关键字:FIR   FPGA   滤波器   

相对无限冲击响应(IIR)滤波器,有限冲击响应(FIR)能够在满足滤波器幅频响应的同时获得严格的线性相位特性,而数据通信、语音信号处理等领域往往要求信号在传输过程中不能有明显的相位失真,所以FIR滤波器获得了更广泛的应用。FIR滤波器有多种设计和实现方法,最为常用的是基于分布式算法的FIR滤波器设计。该法利用构造查找表,流水线操作完成滤波过程,极大地提高了系统的处理效率。然而,查找表所要求的系统存储器容量随滤波器的阶数成指数上涨。本文基于工程实际出发,在信号处理速率要求不高且滤波器阶数较高的情况下,提出了一种基于LPM参数化宏功能模块的FIR滤波器设计方法,具有一定的工程实用价值。

本文引用地址: http://power.21ic.com//ldo/technical/201809/71460.html

1 FIR滤波器的原理与设计方法

1.1 FIR滤波器的原理

FIR滤波器的数学表达式为:

式中:N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(k)为FIR滤波器第k级抽头系数。

直接型FIR滤波器结构如图1所示。

由图1可见,FIR的滤波过程就是一个信号逐级延迟的过程,将各级的延迟输出加权累加,即得到FIR的输出,其中最主要的算法是乘累加运算。由于FIR每完成一次滤波过程就需要进行N次乘法和N-1次加法操作,所以FIR滤波的运算量完全依赖于N的大小。

1.2 分布式FIR滤波器设计

分布式算法(Distributed Arithmetic,DA)早在1973年就已经被Croisier提出,直到现场可编程门阵列(Field Programmable Gate Ar-ray,FPGA)的查找表(Look Up Table,LUT)结构出现,这种算法才重新受到重视,其主要原理如下。

为了分析简单,将FIR滤波器的表达式(1)改写为:


可见,分布式算法是一种以实现“乘-加”单元为目的的优化解决方案。利用一个查找表(LUT)实现映射,即用一个2k字宽(即2k行),预先编好程序中LUT接收到的一个K位输入向量Xb=[X0b,X1b,…,X(k-1)b]的映射,经查找表的查找后直接输出部分积。然而,由上述可知,查找表字宽为2k,如果滤波器的抽头系数过多,则查找表的规模随抽头系数的增加成指数级增长,这将使LUT的规模十分庞大。为了减小规模,可以利用部分表计算法,即将一个大的查找表化分为几个小的查找表,然后再将结果相加。

1.3 基于LPM参数化宏功能模块的FIR滤波器设计

由1.2节可见,分布式算法极大地减少了硬件电路规模,很容易实现流水线技术,不仅使电路的执行速度得以提高,使得信号的处理效率大幅度提高。然而,当系统所要求的处理速度不高时,可利用QuartusⅡ中的LPM参数化宏功能模块来设计FIR滤波器;当滤波器系数较大时,该法不需要像分布式算法那样构造庞大的查找表或多个小的查找表。

1.3.1 LPM参数化功能模块简述

LPM是参数可设置模块库(Library of Parameterized Modules)的英文缩写,设计者可以根据实际电路的需要,选择LPM库中的适当模块,并为其设定适当的参数,以满足设计的要求。常用的LPM宏功能模块有诸如累加器、加法器和乘法器等的算术组件;多路复用器和LPM门函数还有诸如和I/O组件、存储器编译器等等的门电路,用户可以根据自身需要查阅相关的资料。本文正是利用其中的乘法器和累加器来完成FIR滤波器的设计。

1.3.2 FIR滤波器的设计

在QuartusⅡ中,利用“Megawizard”向导生成所需的模块,其界面如图2所示。


选择图中左侧Arithmetic中的LPM_MULT得到图3的界面,根据技术指标选择合适的参数,即可生成乘法器模块,按其向导,完成乘法器参数的设置(如乘数的位数,是否有符号数相乘等)。加法器模块的构造类似,不再详述。

以本文设计的FIR滤波器为例(后面详述),输入信号的速率为2 MHz(周期为500 ns),滤波器的阶数为64阶,由此构造了8个乘法器(最多可以构造25个),分8次完成所有的乘法。相对分布式算法的流水速度而言,构造的乘法器完成一次乘法需要20 ns,相对耗时长一点,但是完成8次乘法也只需8×20=160 ns,小于输入信号一个周期的时间,因此满足设计需求。将输入数据的一个周期平均分为8个时间块,每个时间内的FIR滤波设计模块的框图如图4所示。

其他7个时间块内的FIR滤波器模块同图4,所不同的是参与乘法运算的信号输入数据和滤波器抽头系数不同,分别从x(n-8)到x(n-63)和h(8)到h(63)。待8个乘加模块的结果均送入寄存器后,再在最后一个时间块内完成累加得到最终的输出(相对乘法运算而言,完成累加的时间可以忽略),其实现框图如图5。

结合图4和图5,可全部完成基于LPM参数化宏功能模块的FIR滤波器设计。由两图可以发现,有多个全加器,且输入数据的位数(bit数)不同,只要调节LPM宏功能模块的参数即可方便地完成设计,输出数据y(n)的位数则根据工程需要取最终累加结果的高12位。取高12位带来的误差为(最高位为符号位,不予数值考虑),这是可以接受的误差。

2 基于Matlab和QuartusⅡ的FIR滤波器设计

2.1 利用Matlab进行滤波器系数设计

设计指标:采样频率为2 MHz,f1=200 kHz,f2=330 kHz,通带衰减1 dB,阻带衰减70 dB。通过参数指标确定所需的阶数和参数值,部分程序如下:

由图6验证设计指标。

如果设计指标不满足,则可通过调整滤波器参数直至满足设计要求。

2.2 利用QuartusⅡ进行设计和仿真

对Matlab产生的FIR滤波器抽头系数,用QuartusⅡ进行仿真。QuartusⅡ软件是Altera公司主推的FGPA设计软件,是集设计输入、编译、综合、仿真、布线、下载于一体的设计软件。由于Matlab产生的滤波器抽头系数为小数,根据工程需要将其转换为18位二进制系数使用。过程如下:

由Matlab产生的FIR数字滤波器系数如下:



按第2.3节提出的方法在QuartusⅡ中完成FIR滤波器的设计,通过编译综合功能对设计文件进行编译和综合,然后生成顶层模块,见图7。

通过QuartusⅡ的波形仿真功能,对其进行波形仿真并进行定量分析。波形仿真如图8所示。其中,cp50为系统时钟,由它控制输入信号xin_data的输入速率(本例为2 MHz)。data_result为滤波器未经取高位处理的乘加结果;data_result_out,为最终滤波输出结果。经验证,data_result与Matlab的运算结果一致,data_result可满足工程精度的要求。

3 结语

本文在结合Matlab和FPGA软件QuartusⅡ的基础上,完成了一种基于LPM参数化宏功能模块的FIR滤波器设计,该法是基于工程实际应用提出的,它对信号处理速率的要求不高,但对滤波器的阶数较高。当设计指标改变,只需调整各模块的参数,即可完成新的设计,该法已应用在实际工程中。

换一批

延伸阅读

[资讯] MIPSfpga计划推出 院校CPU架构方式将改变

MIPSfpga计划推出  院校CPU架构方式将改变

近日, Imagination Technologies 宣布,将在其Imagination 大学计划(Imagination University Programme,IUP)中推出一项具有革命性的新项目——M......

关键字:MIPSfpga计划 MIPS CPU Imagination 大学计划

[资讯] Altera 通过收购电源技术创新者 Enpirion 将提供突破性 FPGA 电源解决方案

Altera 通过收购电源技术创新者 Enpirion 将提供突破性 FPGA 电源解决方案

--借助收购电源技术创新者 Enpirion—业内集成性最强的电源解决方案可降低功耗,提供最小巧的体积并简化系统设计21ic讯 Altera Corporation 今天宣布,该公司已经签署......

关键字:Altera FPGA 电源

[资讯] 利用Maxim外设模块加速FPGA原型设计 显著降低成本

利用Maxim外设模块加速FPGA原型设计 显著降低成本

Maxim Integrated Products的15种模拟和混合信号外设模块能够插入与Pmod标准兼容的任意FPGA/CPU扩展端口。Maxim推出能够直接插入符合Digilent Pmod标准的任意FPGA/CPU扩展端口的15个外设......

关键字:设计 显著 降低 成本 原型 FPGA Maxim 外设 模块 加速

[疯狂史] 黄明威:一个从阿里离开后又回来的人

黄明威:一个从阿里离开后又回来的人

阿里人”这三个字,黄明威如今背了14年,也自豪了14年。如果不是中途下了“车”,那就是足足的18年了。......

关键字:黄明威 阿里巴巴

[真心话] 充电时到底该先插手机还是先插电源?作为电工你应该知道...

充电时到底该先插手机还是先插电源?作为电工你应该知道...

手机不离身似乎已经成为当代人的日常状态,如此频繁地使用手机,会十分消耗手机的电量,不经意间,一天充电数次,而且一旦充电方式不正确的话不仅会损伤手机电池,甚至还存在安全隐患。关于手机充电,很多人都忽视了......

关键字:充电 手机 电源

[真心话] 电子工程师安身立命的八大看家本领,你学会了几个?

电子工程师安身立命的八大看家本领,你学会了几个?

作为一个电子工程师(electronic engineer)必备技能:抄板,焊板,画板,仿真,编程,调试,创意,坚持。八大技能,你几级了?......

关键字:电子工程师

[真心话] 网传任正非内部发言:为什么说华为需要思想家?

网传任正非内部发言:为什么说华为需要思想家?

说来也怪,越是内部讲话,在网上传播的越快越广泛。最近,网上流传着好几个版本的任正非先生“最新“内部讲话,其中谈到了任正非一个核心观点:华为的最高境界是需要思想家。其中有这样一段原话:“......

关键字:华为 任正非
发表评论 共有条评论
用户名: 验证码:

变频器内部主电路有什么神奇?

变频器内部主电路有什么神奇?

采用“交-直-交”结构的低压变频器,其内部主电路由整流和逆变两大部分组成.……

精确稳定 让平均电流法帮你实现模块电源并联

精确稳定 让平均电流法帮你实现模块电源并联

今天要为大家介绍的是平均电流法,这种方法能够精确稳定的帮助工程师实现电源模块的并……

九款最简单的电子镇流器电路图原理图分析

九款最简单的电子镇流器电路图原理图分析

从工作原理而言,电子镇流器是一个电源变换电路,它将交流输入市电电源的波形、频率和……

项目外包