基于Verilog HDL的小波滤波器的设计与实现
扫描二维码
随时随地手机看文章
现代计算机和通信系统中广泛采用数字信号处理的技术和方法,其基本思路是先把信号用一系列的数字来表示,然后对这些数字信号进行各种快速的数学运算。其目的是多种多样的,有的是为了加密,有的是为了去掉噪声等无关的信息,称为滤波;有时也把某些种类的数字信号处理运算成为变换,如离散的傅里叶变换(DFT),小波变换(Wavelet T)等。VerilogHDL是目前应用最广泛的一种硬件描述语言,用于数字电子系统的设计。可用它进行各种级别的逻辑设计,并进行数字逻辑系统的仿真验证,时序分析,逻辑综合。小波滤波器的设计属于复杂算法的电路设计,因此利用Veril—ogHDL对双正交小波滤波器进行建模、仿真,实现电路的自动化设计,将是一种较为理想的方法。
l 小波滤波器的设计
对于小波函数,要求它具有正交性、紧支集、对称性和平滑性。正交性可以使变换无冗余;紧支集则带来优良的空间分辨率;对称性保证了与其对应滤波器的相位为线性;平滑性可以产生较小的失真。这样使离散二进小波变换受到很大的限制,为此,人们提出一种双正交的小波变换。本文设计小波滤波器正是基于双正交小波变换的一种双通道完全重构滤波器,因此可以对信号进行分解后实现精确重构,所以对信号的滤波有很好的作用。由于它具有正变换二元上抽样采样和反变换二元下抽样采样特性,在进行滤波器设计时可以将双正交小波滤波器设计成具有多相结构的双通道完全重构滤波器。双正交小波变换可以看成原始信号通过一系列高低通滤波器滤波并经过抽样后所得到的结果,重构过程与此相反。为了使变换后的信号能够完全重建,须满足Y(n)=x-kX(n),在这里取k=1。双正交小波滤波器分解和重构过程如图1所示。
设G(z),H(z)分别为分解低通,高通滤波器,下采样后用H(z)滤波等价于先用H(z2)滤波,然后下采样,所以:
其中:Ge和Go分别是G(z)的偶数项和奇数项,He和H。分别是H(z)的偶数项和奇数项。根据式(1),式(2)可以建立双正交小波滤波器的多相结构模型如图2所示。
下面对双正交小波滤波器用VerilogHDL进行顶层设计:
对于双正交小波滤波器的部件Ge,Go,He,Ho设计,采用行为描述方式进行设计。VerilogHDL行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和RTL级的模型设计。在Veril—ogHDL语言中行为描述分为算法和RTL两种。算法级:用语言提供的高级结构能够实现算法的运行模型。RTL级:描述数据在寄存器之间的流动和如何处理,控制这些数据的流动,采用改进的DA算法(如图3所示)。DA算法完成一次滤波所需要B次的累加(或减)也就是B个时钟周期完成一次运算,B位输入数据的位宽。它的查找表(LUT)的大小是由滤波器的阶数N决定的,共需要2N个查找表单元,如果系数N过多,用单个LUT不能够执行全字查找则可把系数分组,利用部分表并将结果相加,为了简单的阐述算法,在此系数只分了2组,每个单元的位宽是由滤波器的系数的量化决定的。Ge,Go,He,Ho四个滤波器虽然长度不同,但具有相同的电路结构,如图4所示。
计算控制器用于控制滤波单元中移位寄存器移位,累加器的循环周期和计算输出,并控制移位寄存器的数据输入。
2 利用VerilogHDL语言实现以上功能
2.1 用VerilogHDL语言进行算法建模
计算机控制器(calculate—controller)的veril—ogHDL模型:
寄存器组中每个寄存器的位数为0,1,…,num一1。
2.2 定制ROM
QuartusⅡ包含有许多有用的LPM(Library ofParameterized Modules)模块,它们是复杂或高级系统构建的重要组成部分,可以与QuartusⅡ普通设计文件一起使用,该文使用“Tools”菜单下的MegaWizardPlug—In Manager命令定制ROM的元件。如图5所示。
2.3 用VerilogHDL进行数据流建模
滤波器的建模过程如下:
3 验证仿真
利用Altera公司的QuartusⅡ7.2软件内部带有仿真器对滤波器的VerilogHDL模型进行波形仿真,通过建立正确的Vector Waveform File(向量波形文件)就可以开始仿真了。如图6所示。
通过QuartusⅡ的波形仿真功能,对输入输出进行波形仿真,对其结果进行定量分析。通过时序分析和功能分析结果,对设计进行进一步的完善。在仿真中,in—put滤波器输入数据,output滤波器输入数据x0,x1,x2,x3,x4为移位寄存器组中寄存器,count为控制计数器,table-in为流水线寄存器。所得结果如图6所示。经验证,仿真结果和实际运算结果一致。所以对于大多数连续的LTI系统都可以采用以上方法进行分析,但是他也有局限性:对于时变系统,非线性系统分析,它无能为力;只适合分析一维变量,对于多维变量,它无能为力;可采用状态变量分析方法;就精确度来说,这种分析方法不是很高。
尽管连续LTI系统有很多缺点,但是通过对LTI系统的分析可以培养系统建模和求解能力,为以后分析其他系统作参考。