基于FPGA的改进型FIR滤波器的实现
本设计采用Altera公司的Cyclone II EP2C35F672C8器件,在Quartus II 5.0下仿真,FIR滤波器为16阶,输入数据为8位(最高位代表符号位)。如果采用单个查找表的面积为28×16 bit,面积太大。采用拆分查找表的结构能减少面积,在Altera公司的一系列FPGA中LUT查找表采用四输入查找表,因此单个表可以拆分为2个四输入的查找表。因为设计的是线性相位滤波器,这样单个表的面积就得到了最优化。同时单个查找表的连线是LUT查找表的内部连线,减少了互联的资源和连线的延迟。查找表计算方法如表1所示。
设输入序列为{99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0},滤波器的系数为{-12 -18 13 29 -13 -52 14 162 242 14 -52 -13 29 13 -18}。仿真结果如图5所示。
本设计的时钟主频可达73.49 MHz,占用了236个逻辑单元,占整个LC(Logic cell)的2%。可见拆分查找表的方式实现FIR滤波器速度较快,占用的资源少。
若要实现更高阶的滤波器,拆分查找表法的优势将更加明显。另外,如果是线性相位的滤波器,表的个数将能缩小一倍。本设计即为线性相位滤波器。
3.2 改进型FIR滤波器在FPGA中实现的特点分析
为了分析改进型FIR滤波器在FPGA中实现的特点,利用VHDL语言程序分别设计了16阶的串行、并行及直接型FIR滤波器,并与相应的拆分查找表法FIR滤波器进行比较,其各自的运行速度及占用FPGA资源的情况如表2所示。
从表2可以看出,改进型滤波器与直接型相比存在两大明显的优势。一方面,在滤波器阶数相同时,改进型FIR滤波器在FPGA资源占用上比直接型更少;另一方面,系统运行的速度比直接型更快。而且,随着滤波器阶数的增加,这种优势更加明显。串行滤波器完成一次运算需要8个时钟周期,为了把数据分为8个时钟周期进行计算,采用了移位寄存器,这样单个表的面积相当大,从而占用了大量资源,工作速度也受到了限制。并行分布式滤波器在1个时钟周期完成了累加,提高了工作速度,但所用面积较大。拆分查找表法滤波器大大减少了面积,而且速度并没有降低。
本设计采用了拆分查找表方法,影响系统速度的是加法器组,可以对滤波器进一步改进,如对加法器组利用流水线、编码等技术可以提高工作速度。
通过以上的理论分析和仿真结果表明,基于FPGA器件的拆分查找表FIR算法,占用资源少、运算速度快,在资源允许的条件下可根据实际应用任意确定滤波器的长度和阶数,是一种比较实用可靠的高效设计方法。
- FIR数字滤波器分布式算法的原理及FPGA实现(08-07)
- 塑料光纤通信中基带升余弦滤波器的FPGA实现(06-05)
- 一种用于数字下变频的高阶分布式FIR滤波器及FPGA实现(04-29)
- 基于DSPBuilder的FIR滤波器的系统设计(03-19)
- 基于FPGA的主从式高速数据采集与传输系统(06-05)
- 基于FPGA流水线分布式算法的FIR滤波器的实现(06-05)
