您的位置 首页 观点

IIR数字滤波器的FPGA仿真与完成

采用自顶向下的模块化设计思想,介绍了一种采用级联结构在FPGA上实现IIR数字滤波器的设计方案。设计IIR数字滤波器的二阶节,将二阶节IIR数字滤波器级联实现高阶IIR数字滤波器,从而实现通过修改外围

数字滤波器是完结数字滤波的中心器材。常用的数字滤波器有FIR数字滤波器和IIR数字滤波器。文章介绍了一种依据EDA技能中的模块化规划思维,选用VHDL硬件描绘语言对IIR数字滤波器中的一些要害电路模块进行规划,终究在FPGA上完结IIR 数字滤波器的办法[1]。

1 IIR数字滤波器硬件规划原理

1.1 数字滤波器的原理

数字滤波器的功用是完结信号滤波处理,是用有限精度算法完结离散时刻线性非时变体系[2]。一个数字滤波器的体系函数H(z)能够表明为:
  

  直接由H(z)得出表明输入输出联系的常系数线性差分方程为:

式中ai、bj-1为滤波系数,当bj-1均为零时,该滤波器为FIR数字滤波器,当bj-1不均为零时,则为IIR数字滤波器。

1.2 IIR数字滤波器的硬件完结计划比较

滤波器的完结首要包含两大类:选用TMS320系列DSP芯片完结和选用PLD器材完结(首要包含FPGA和CPLD)。运用PLD器材完结时,能够选用硬件乘加模块,然后使其运算速度比选用DSP器材快许多。因而依据FPGA的自编程完结办法成了滤波器完结的首选[3]。以下扼要介绍IIR数字滤波器的规划计划和依据FPGA的完结办法[4]。

计划一:直接相乘累加式

关于二阶的IIR数字滤波器,其差分方程为:

  因而可用5个硬件乘法器和4个硬件加法器来完结,选用这种办法关于高阶的IIR数字滤波器的FPGA的规划来说是比较消耗资源的。

计划二:依据ROM查找表的VHDL结构化规划[5]

滤波器完结的首要任务是完结乘累加运算,选用ROM查找表办法能够防止运用硬件乘法器。由二阶IIR滤波器的差分方程能够看出:yn仅取决于变量xn、xn-1、xn-2、yn-1和yn-2,因而可将a0、a1、a2、b0、b1的一切部分积存储在ROM中,而以变量xn、xn-1、xn-2、yn-1和yn-2作为ROM的地址,从中选出对应的值,然后得到yn。

此办法防止了占首要运算量的乘法运算,节省了FPGA硬件资源,但运用不行灵敏。特别是当阶数比较大时,更改ROM内的数据非常不便利。

计划三:改进型规划

结合直接相乘累加式和ROM查表法的长处,用1个5路8位×1位的乘法器在8个时钟周期内完结。其完结结构如图1所示。

  图1中的X(n)与各自的系数的最高位相乘后,送入累加器相加后将和左移一位,以完结乘2运算。下一个时钟,寄存器内数据与系数的次高位相乘,再送入累加器,然后再左移一位。接下来的6个时钟进行相似的操作。第8个时钟后,将累加器所得数据输出即得到y(n),对累加器清零,接着再进行下一次运算。

比较3种计划,计划三完结较为便利简练,在节省了FPGA硬件资源的一起,使得规划灵敏,规划周期大为缩短,本规划即选用计划三来完结IIR数字滤波器。

2 IIR数字滤波器的详细完结和仿真

二阶级联法用于完结IIR数字滤波器硬件电路的使用是极为广泛的,为此本文首要完结数字滤波器的二阶节,然后用二阶节的级联完结更高阶的滤波器。

2.1 IIR数字滤波器二阶节的FPGA完结

IIR数字滤波器的二阶节电路选用模块化规划,把二阶节分为延时模块和补码乘加模块,其间补码乘加模块是规划的中心。

2.1.1 推迟模块

推迟模块功用是在clk时钟效果下将差分方程的各x、y值推迟一个时钟以完结一次延时运算,即当延时模块输入为x(n)和y(n)时,经过延时后输出x(n)、x(n-1)、x(n-2)、y(n-1)和y(n-2) ,然后将输出送到补码乘加模块运算。

2.1.2 补码乘加模块

补码乘加模块首要是用计划三的办法完结输入序列{x(n)}、{y(n)}与系数ai、bi别离相乘后再相加的进程,即完结。为了防止过多地运用乘法器,本规划中乘加单元(MAC)的乘法器选用阵列乘法器,以进步运算速度。

2.1.3 二阶节的顶层模块规划

顶层模块规划选用原理图输入办法,将推迟模块和补码乘加模块参加到体系中,并参加相应的输入输出引脚构成IIR滤波器的二阶节。

2.1.4 二阶节的体系仿真与成果剖析

本次规划的二阶节的输入端x(n)宽为8位,可接8位AD转化输出的数据,输出y(n)为16位数据。将完结的二阶节在QuartusII中进行编译归纳后,在波形图中别离给定不同的滤波器系数和输入不同的序列时,进行了波形仿真,这儿给出其间的一个仿真波形如图2所示(图2是完结体系函数为:H(z)=(5+5z-1+5z-2)/(1-z-1-z-2) 的二阶节的波形图,其间a0、a1、a2、b0、b1为滤波器系数,xn为输入序列,yn为输出序列)。


下面将对用FPGA完结的二阶节时序波形仿真值和用Matlab对二阶节的仿真成果相比较,别离对在输入序列相同、但滤波器系数不同和滤波器系数相同、但输入序列不平等几种状况别离进行了比较,比较成果如表1所示。

  由表1能够看出所规划的二阶节在不同系数和不同输入状况下的FPGA仿真值和由Matlab核算值根本共同,阐明选用计划三规划的二阶节达到了规划要求。此外,表中仿真值与核算值有所误差,而且跟着值的增大误差越来越大,这是因为输入位宽仅为8位的有限精度运算所引起的截断误差所造成的,要处理这一问题能够经过添加二进制位数来进步体系运算精度。

2.2 高阶IIR数字滤波器的FPGA完结

要完结一个高阶IIR数字滤波器,假如选用直接型结构完结,需求的乘法器和推迟单元相对较多,而且分子和分母的系数相差很大,因而需求较多的二进制位数才干完结相应的精度要求。而选用二阶节级联完结,一方面各根本节的零极点能够很便利地独自进行调整,另一方面能够下降对二进制位数的要求,因而选用级联结构。下面以四阶IIR数字滤波器为例来阐明高阶滤波器的完结。

2.2.1 四阶IIR滤波器的完结

四阶IIR数字滤波器需求选用2个二阶节级联构成。其体系构成原理图如图3所示。图中busconv模块为总线转化模块,效果是将16位数据转化为8位数据输出。

2.2.2 四阶IIR滤波器的仿真波形和成果剖析

四阶滤波器输入端x(n)宽为8位,输出y(n)为16位数据。与二阶节相同将四阶滤波器在QuartusII中进行编译归纳并进行了时序波形仿真。在仿真中,设定的输入序列xn为{1,2,3,4,5},输出为YN。第1个二阶节IIR2(1)的系数为:A00=1,A01=2,A02=1,B00=1,B01=1,第2个二阶节IIR2(2)系数为:A10=1,A11=1,A12=2,B10=1,B11=2,即完结的四阶滤波器的体系函数为:

相同将用FPGA完结的四阶IIR滤波器时序仿真值与用Matlab仿真值进行了比较,如表2所示。因为选用二阶节级联,这儿仅给出一组比较,其他状况与二阶节相同。

  由表2可见仿真成果与核算成果共同,且在不同的滤波器系数和不同输入序列时所得出的成果与Matlab仿真值都共同,阐明选用2个二阶节级联完结四阶IIR数字滤波器达到了规划要求。相同因为二阶节存在有限精度引起的截断误差,四阶滤波器也存在截断误差。

本文选用改进型办法在FPGA上成功完结了IIR数字滤波器,这种办法长处是不光减少了硬件乘法器的数量,节省了硬件资源,而且防止了系数发生变化时ROM中数据更改不便利的问题。缺陷是在时刻上付出了必定价值。在实践使用中可依据不同的阶数、精度等要求,经过修正IIR数字滤波器外围参数改动滤波器的频率响应以完结恣意阶数滤波器,而且能够依据不同要求挑选在不同规划的FPGA上加以完结。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/196645.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部