基于FPGA的FIR滤波器设计与仿真
3 查找表结构的FIR算法
LUT本质上是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个具有4位地址线的16×1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路后,FPGA开发软件会自动计算逻辑电路的所有结果,并把结果写到RAM中,当输入一个信号进行运算就等于输入一个地址,找出对应的内容,然后输出。
由式(2)可见FIR滤波器系统函数是一种卷积的运算形式。如果用FPGA直接实现则计算速度很慢且占用大量的LE(逻辑单元),达不到系统对实时性的要求,于是想到能否将上述卷积运算转化成加减运算。
分布式算法(distributed arithmetic,DA)早在1973年就已经被Croisier提出来了,但是直到FPGA出现以后,才被广泛应用在FPGA中计算乘积和。
设FIR滤波器的阶数为N,输入数据x(n)的位宽为k,则x(n)可表示为:

也就是说:我们可以把每个输入数据的每一位的值分别与相应的FIR系数相乘(因为x(n)为数字信号,每个输入数据的每一位的值都为0或1,所以与h(n)相乘的结果非0即为h(n))然后再相加,然后再把所有位的相加值错位相加,可得到卷积的结果从而实现了将卷积运算转换成加法运算。
这样我们就可以针对N阶FIR滤波器的系数预先建立一个2的N次方的一个存储表,将系数和存放在对应的存储单元中。进行卷积运算时把输入数据的每一位组合成地址码,通过地址查找到相应的系数和,然后把所有位数的系数和移位相加即可完成卷积运算。通过查表的方式可以大大减少求和的次数,提高运算速度。
4 设计思路及步骤
4.1 FPGA系统设计的方法
用FPGA实现数字系统设计一般可分成以下几个步骤:设计输入、功能仿真、编译综合生成网表文件、设计实现、时序仿真、下载到芯片进行硬件验证。在每一步检查到的错误或缺陷都可以返回到上一层进行修改。
随着数字系统规模的不断增大,其复杂度也随之增大。层次化设计将系统逐层分为较小的、规模可控制的模块,是控制数字系统设计复杂度的一种有效方法。
层次化设计中有两个重要的核心思想,即模块化和原件重用。模块化是指将系统划分为几个子模块,而这些子模块又分别划分为更小的模块,直至不可再分。每个模块都可以看成是上一层模块的一个元件。原件重用是指同一个原件可以被不同的实体调用,或者被同一个实体多次调用。这样不但大大减轻了设计者的工作量,而且使程序结构更加优化,具有更好的可读性。
4. 2 设计实例的参数选取及生成
MATLAB的信号处理工具箱中包括许多可用于设计FIR数字滤波器的M文件。根据要设计的滤波器的参数、通带截止频率、阻带截止频率、采样频率、通带或阻带波纹要求等参数,可以利用MATLAB中的数字信号处理工具箱生成滤波器的系数。
在设计中,采用16阶FIR,输入数据宽12位,滤波器系数以及由这些系数演算出的ROM的初始化数据文件*.mif文件可以通过MATLAB计算生成。
因为是16阶的FIR,这样就需要65536个ROM单元来实现,ROM单元的位宽采用16位。利用器件中的ROM建立这样的查找表,首先要将ROM的初始化数据写到*.mif文件中,然后在Ouartsus II中将其指向对应的ROM设计模块。
当FIR的阶数增大时,ROM的存储量是以2的倍数增长的,因此采用一个ROM快分时查找表的方法来降低对ROM存储容量的要求。
4.3 模块化设计
用原理图和VHDL相结合的输入方式,分模块进行设计,项层模块采用图形化输入,在Quartsus II中进行设计输入。
系统由控制模块、输入数据移位模块、地址发生模块、存储器模块、运算模块等组成。下面介绍每一模块的基本功能。
(1)控制模块的作用是产生一系列的控制信号,对上述各种模块进行精确的控制。控制模块在收到A/D转换结束信号后,依次产生移位寄存器使能信号、并行到串行转换的装入信号、移位相加的装入信号、加减控制信号和滤波器结果输出信号等控制信号。使上述各个模块按照一定的时序进行操作,最终完成滤波功能。该模块采用VHDL的描述方式比较方便。
(2)输入数据移位模块的主要功能是使A/D转换后的数据通过不同的触发器,从而产生不同的延迟,以便取出输入数据不同位置上的数值,来构成ROM的地址。
(3)地址发生器模块的主要功能是将通过输入数据移位模块的不同延迟分别转换为查找表的串行地址,提供给存储器模块。根据结构化的程序设计思想,本模块可由12个单通道并、串转换模块组成。
(4)存储器模块是这种查找表结构FIR的核心。FPGA中ROM模块的设计可以通过Quartsus II软件中的Mega Wizard向导来生成。
(5)运算模块主要功能是将ROM的输出数据在此进行移位相加。这里实现的主要是加法和减法运算,运算速度很快。
最后的项层模块采用图形化输入,这样可以使设计思路更加清晰,也符合自上而下的FPGA主流设计方法。
评论