微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > IIR数字滤波器的FPGA仿真与实现

IIR数字滤波器的FPGA仿真与实现

时间:06-05 来源:互联网 点击:

方案三设计的二阶节达到了设计要求。此外,表中仿真值与计算值有所偏差,而且随着值的增大偏差越来越大,这是由于输入位宽仅为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上加以实现。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top