一、FIR数字滤波器
FIR滤波器用当前和过去输入样值的加权和来形成它的输出,如下所示的前馈差分方程所描述的。
FIR滤波器又称为移动均值滤波器,因为任何时间点的输出均依赖于包含有的M个输入样值的一个窗。由于它的响应只依赖于有限个输入,FIR滤波器对一个离散事件冲激有一个有限长非零响应,即一个M阶FIR滤波器对一个冲激的响应在M个时钟周期之后为零。
FIR滤波器可用图1所示的z域块图来描述。
二、FIR数字滤波器设计的实现
目前FIR滤波器的实现方法有三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要。使用DSP器件实现虽然简单,但由于程序顺序执行,执行速度必然不快。FPGA/CPLD有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好。但长期以来,FPGA/CPLD一直被用于系统逻辑或时序控制上,很少有信号处理方面的应用,其原因主要是因为在FPGA/CPLD中缺乏实现乘法运算的有效结构。
现在的FPGA产品已经能够完全胜任这种任务了。其中Altera公司的Stratix系列产品采用1.5V内核,0.13um全铜工艺制造,它除了具有以前Altera FPGA芯片的所有特性外,还有如下特点:芯片内有三种RAM块,即512bit容量的小RAM(M512)、4KB容量的标准RAM(M4K) 、512KB的大容量RAM(MegaRAM)。内嵌硬件乘法器和乘加结构的DSP块,适于实现高速信号处理;采用全新的布线结构,分为三种长度的行列布线,在保证延时可预测的同时增加布线的灵活性;增加片内终端匹配电阻,提高信号完整性,简化PCB布线;同时具有时钟管理和锁相环能力。
FIR滤波器的Verilog HDL设计实例
1、设计意图
本例主要是在Stratix器件内实现基本有限脉冲响应滤波器。
FIR的基本结构包括一系列的乘法和加法。FIR的运算可用式(1)的方程描述,现重写如下:
2、Verilog HDL代码编写风格
HDL代码编写应该具有很好的易读性和可重用性,而自顶向下的分割方法可以帮助我们达到的结果。HDL代码在达到功能的情况下要尽可能的简洁,尽量避免使用带有特殊库单元的实例,因为这样会使得整个进程变得不可靠。
在本设计中,我们将设计划分成一个文件和三个次级文件,并且调用了QuartusII中的MegaFunction功能辅助完成整个设计。
图3显示FIR滤波器的方块图
表1:FIR滤波器的设计范例的端口列表
完全可综合设计的一个优点就是同样的HDL代码能够用于验证和综合。在使用HDL代码之前必须要验证设计的功能,且简单的方法就是利用验证工具,其次是利用仿真工具作有目的的仿真。
QuartusII内部带有仿真器,只要通过建立正确的Vector Waveform File(向量波形文件)就可以开始仿真了。图4所示为QuartusII内部仿真器得到的8阶FIR的脉冲响应波形。
利用Verilog HDL设计数字滤波器的优点就是可使设计更加灵活。比较硬件电路图设计,Verilog HDL语言设计的参数可以很容易在Verilog程序中更改,通过综合工具的简化和综合即可以得到电路图,其效率要高出利用卡诺图进行人工设计许多。而且编译过程也非常简单高效。编码风格能够在综合过程中节省芯片使用的单元,从而降低设计成本。
参考文献:
[1]. 夏宇闻。VerilogHDL数字系统设计教程,北京航空航天大学出版社,北京. 2003.
[2]. Altera Corporation. Introduction to QuartusII. 2003
[3]. Michael D. Ciletti. Advanced Digital Design with Verilog HDL. Prentice Hall, NJ.2005.
[4].彭保等.基于VerilogHDL的FPGA设计. 微计算机信息, 2004年第20卷第10期