APP下载

基于VHDL的FIR低通数字滤波器设计与仿真

2016-11-09王建彬李响何东钢

数字技术与应用 2016年9期

王建彬 李响 何东钢

摘要:以FIR数字滤波器的基本理论为依据,程序设计部分设计滤波器电路中的寄存器(延时器)、第一级加法器、乘法器、第二级加减法器、输出等多个单元器件模块。采用模块化的自顶向下的设计思想,对各个功能模块采用VHDL语言的描述方法,VHDL程序设计代码在Quartus II 的集成开发环境下使用,并且利用其内部的仿真器对设计进行了仿真和验证。

关键词:FIR 数字滤波器 VHDL语言 Quartus

中图分类号:TN713.7 文献标识码:A 文章编号:1007-9416(2016)09-0195-02

信号处理广泛应用在通信、控制等领域,对电子、信息科学等的发展有巨大的影响。信号处理分为模拟信号和数字信号处理系统。数字信号处理中一个非常重要的应用技术就是数字滤波[1]。数字滤波器是根据实验设计好的程序,将一组数字序列输入通过运算后,转变为另一组数字序列的输出,信号形式和内容的改变,达到符合技术指标的信号加工或滤波要求。由于VHDL语言是一种标准硬件描述语言,具有设计方式多样、强大的硬件描述能力、很强的移植能力、设计描述与器件无关等很多其他硬件描述语言所不具备的优点[2]。以FIR低通数字滤波器的设计为例,按照设计原理,在数字逻辑设计的过程和方法中使用VHDL硬件描述语言,编写相应代码在Quartus II的集成开发环境下运行,并利用其内部的仿真器对设计做脉冲响应仿真和验证。

1 FIR数字滤波器的设计原理

FIR数字滤波器是一个线性时的不变系统,长度为M阶因果有限冲激响应滤波器可以用传输函数H(W)描述:

H(W)=

有限冲激响应滤波器在时域中的输入输出关系:

y[n]=x[n]*h[W]=

其中x[n]和y[n]分别是输入和输出序列[3]。

2 FIR数字滤波器的设计原理

设计一个线性相应的FIR 16阶初始h(0)=0的低通数字滤波器,采样频率为100 khz,截至频率为10khz,序列位宽为输入输出10位。整个设计分为程序设计和原理设计两部分。其中程序设计部分设计滤波器电路中的寄存器(延时器)、第一级加法器、乘法器、第二级加减法器、输出等单元器件模块[4]。

2.1 寄存器(延时器)

如图1所示,设计中用输入9位数据,通过dff9的触发寄存器实现寄存一组9位的二进制数据,VHDL语言实现寄存功能。

设计中用D触发器组成寄存器,实现寄存功能。这里用来寄存一组9位的二进制数据。

2.2 第一级加法器

如图2所示,9位数字输入和10位数字输出数据通过add9910构成加法器,实现两个二进制数字的相加运算。

2.3 乘法器

如图3所示,乘法器用来将数据乘以由Matlab计算得到的滤波系数,总共有8个乘法器。在乘法器设计时暂时没有考虑符号,符号问题由下面的减法器实现。

2.4 第二级加减法器

对于乘了滤波系数的数据,进行第二次的加,如图4所示。由于上面有的滤波系数是负的,所以这里用减法器对上一面的负系数做减法运算,如图5所示。

2.5 输出

如图6所示,输出通过一个加法器add151710完成10位数据的输出,通过一个15位与一个17位数据相加得到的数据取高10为作为最终结果。

3 仿真结果

用VHDL语言实现的单元器件在仿真实验中构成元器件,按照原理图连接的滤波器件电路在Quartus II 的集成开发环境下完成[5]。

4 仿真结果验证

由FIR数字滤波器的公式[6]:

y(m)==

利用Matlab计算出FIR数字滤波器的卷积y[m]的理论值和仿真器仿真得到输出结果y[m]对比,见表1所示。

FIR数字滤波器的卷积y[m]的理论值和仿真器仿真得到输出结果y[m]比较,结果完全吻合。数字滤波器设计符合设计要求。

5 结语

基于VHDL的FIR低通数字滤波器的性能优劣对信号处理的结果有重要的影响。本文对FIR数字低通滤波器进行了研究,利用VHDL对FIR数字滤波器划分的多个模块进行模块的设计,并完成系统设计。按照设计原理,在数字逻辑设计的过程和方法中使用VHDL硬件描述语言,编写相应代码在Quartus II的集成开发环境下运行,并利用其内部的仿真器对设计做脉冲响应仿真和验证。

参考文献

[1]胡广书.数字信号处理理论算法与实现[M].清华大学出版社,2003.

[2]佩德罗尼.VHDL数字电路设计教程[M].电子工业出版社,2005.

[3]程佩青.数字信号处理教程[M].清华大学出版社,2007.

[4]张学敏.基于MATLAB的FIR带通滤波器的设计与仿真[J].长春工程学院学报(自然科学版),2007(08).

[5]蔡楠.基于VHDL语言的fir滤波器软件设计[J].科技信息,2010(34).

[6]罗时书.基于VHDL语言的16阶FIR滤波器设计[J].电脑知识与技术,2010(36).