微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于FPGA的分布式算法FIR滤波器设计

基于FPGA的分布式算法FIR滤波器设计

时间:11-12 来源:电子测量技术 作者:赵岚 毕卫红等 点击:

乘两个输入数据预先相加,这样相当于将滤波器的阶数减半,减小了硬件规模。预相加单元采用在位串行电路中广泛应用的串行加法器来实现。

  (5) 查找表单元:如前所述,LUT的规模随滤波器阶数的增加呈指数增长,当滤波器的阶数很大时,查找表的规模过于庞大。为了减小规模,可以将1个有16位地址总线的LUT分割,产生4个4位地址总线部分LUT,先分别对4个部分表查表,再将结果相加。为防止相加时产生溢出,将16位查表输出经过1位符号扩展变为17位。

  (6) 查表结果相加单元:加法器是影响FIR滤波器性能的主要部件,其工作速度决定了FIR滤波器的效率,因此采用具有超前进位功能的流水线加法器。

  (7) 移位累加单元:得到的查表结果相当于一个部分积,移位累加单元将其与寄存器中的部分积相加,结果右移1位还放入寄存器中,直到所有的位数都查表结束。特别应注意,最高位查表得到的结果不是与上一个右移1位的部分积相加,而是相减。这里的加法器仍是采用具有超前进位功能的流水线加法器,作减法时,只需将被减数取补即可。

  (8) 锁存输出单元:加法器的输出不稳定,将其结果经过一锁存器得到稳定的输出。

  (9) 控制单元:产生复位,时序等控制信号,控制电路的总体运行。

  3.4 电路仿真

  在ALTERA公司的MAX+PLUS2软件环境下,用硬件描述语言VHDL对上述FIR滤波器的模块进行编程描述,并仿真各模块的波形,最后将各模块综合起来下载到器件FLEX10KE中形成FIR滤波器。

  用MATLAB设计了一幅度为0.22的50 Hz的正弦波,用250 Hz的采样器对其采样,得到周期序列[0,0.209 2,0.129 3,-0.129 3,-0.209 2],用16位二进制补码表示为:[0000H,1ACBH,108DH,EF73H,E538H],将其输入到FIR滤波器的输入端,滤波器的输出如图6所示,实验结果与理论计算一致。并取32位以后的输出结果,在MATLAB里绘制波形,如图7所示,可见,FPGA仿真结果正确,50 Hz的正弦波通过了FIR滤波器。

  4 结 论

  本文所介绍的基于FPGA、采用分布式算法实现FIR滤波器的方法,在提高系统运行速度和节省硬件资源方面具有很大的优势。而且,通过改变阶数和查找表中的系数,还可以将此设计灵活地运用于实现高通、低通和带阻滤波器,可移植性较好。因此,这种方法在高速数字信号处理中将有很好的应用前景。

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

网站地图

Top