【48812】IIR数字滤波器规划-在FPGA上完成恣意阶IIR数字滤波
上完成恣意阶滤波器的办法。此规划扩展性好,便于调理滤波器的功用,可以精确的经过不同的要求在不同规划的
IIR数字滤波器在许多范畴中有着宽广的运用。与FIR数字滤波器比较,它可以用较低的阶数取得高选择性,所用存储单元少,经济而效率高,在相同门级规划和相同时钟速度下可以给我们供给更好的带外衰减特性。下面介绍一种在FPGA上完成IIR数字滤波器的办法。
选用这种级联结构完成IIR滤波器的长处是每一个基本节仅仅关系到滤波器的某一对极点和一对零点,调整系数a0i、a1i、a2i,只独自地调整了滤波器第i对零点而不影响其他任何零、极点。相同,调整b1i、b2i系数、也只独自调整了第i对极点。因而,这种结构便于精确地完成滤波器的零、极点,也便于调整滤波器的频率响应功用。这种结构的另一个长处是存储单元需求较少,在硬件完成时,可以用一个二阶节进行时分复用,以此来下降对FPGA硬件资源的要求。
运用MATLAB信号处理东西箱中的滤波器规划和剖析东西(EDATool)可以很方便地规划出契合运用要求的未经量化的IIR滤波器。需求将MATLAB规划出的IIR滤波器进一步分化和量化,然后取得可用FPGA完成的滤波器系数。
因为选用了级联结构,因而如何将滤波器的每一个极点和零点相组合,然后使得数字滤波器输出所含的噪声最小是个非常要害的问题。为了发生最优的量化后的IIR数字滤波器,选用如下过程进行规划:
选取具有最大起伏的极点以及间隔它最近的零点,运用它们组成一个二阶基本节的传递函数;
关于剩余的极点和零点选用与(2)相相似的过程,直至构成一切的二阶基本节。
经过上面三步法进行的规划可以确保IIR数字滤波器中N位乘法器发生的量化舍入差错最小。 为了规划出可用FPGA完成的数字滤波器,需求对上一步分化取得的二阶基本节的滤波器系数进行量化,即用一个固定的字长加以表明。量化过程中因为存在不同程度的量化差错,由此会导致滤波器的频率响应呈现差错,严峻时会使IIR滤波器的极点移到单位圆之外,体系因而失掉稳定性。为了取得最优的滤波器系数,选用以下过程进行量化:
除了系数存在量化差错,数字滤波器运算过程中有限字长效应也会形成差错,因而对滤波器中乘法器、加法器及寄存器的数据宽度要也做到合理的规划,以避免发生极限环现象和溢出振动。
由上一节规划出来的IIR数字滤波器能愈加进一步用VHDL言语加以描绘,经过编译、功用仿真、归纳和时序仿真之后就可以在FPGA上完成了。因为选用了级联结构,每一个二阶基本节的VHDL描绘都是相似的,仅仅滤波器的系数不一样,下面侧重评论二阶基本节的VHDL描绘。
选用VHDL描绘的二阶基本节的顶层结构如图3所示。数据在履行单元内做处理。履行单元内部包含算术和逻辑单元以及一些寄存器;算术和逻辑单元主要由串行乘法器和累加器组成;存储器包含作业RAM和系数ROM两部分,别离用于寄存核算的中心成果和滤波器的系数;存储器和履行单元经过内部总线相连接;操控模块包含程序ROM和程序操控单元,程序ROM中寄存有滤波算法的程序,程序操控单元用于解说指令并为数据处理模块发生操控信号。