DIY编程器网
标题:
二维FIR滤波器的FPGA实现
[打印本页]
作者:
liyf
时间:
2012-1-27 14:09
标题:
二维FIR滤波器的FPGA实现
摘要:对二维信号实时处理涉及大量的复数运算且对运算速度要求很高,因此二维有限长单位脉冲响应滤波器(2D—FIR)的结构比一维滤波器要复杂得多。通过对二维滤波器重要运算单元复数乘法的分析、优化减小了其所需实数乘法器的个数。采用Quartus II软件综合可以得到算法优化后的二维滤波器占用逻辑资源减少了16%,工作速度提高了13%。
0 引言
二维有限长单位脉冲响应滤波器(2D—FIR)用于对二维信号的处理,如在通信领域中广泛采用2D-FIR完成对I、Q两支路基带信号的滤波[1]。由于涉及大量复数运算并且实时性要求高,如果不对算法作优化在技术上很难实现。目前主要设计方案是利用FPGA厂商提供的一维FIR知识产权核(IP),组成二维滤波器[2]。这种方案没有考滤复数运算的特点,不可能在算法上优化,而且IP核的内部代码是不可修改的,因此在不同厂商的器件上不可移植。2D_FIR的复数运算都需转成实数运算来实现的,而其中实数乘法运算占用逻辑资源远比实数加法多。通过分析复数乘法特点,减小其所需实数乘法器个数就可以减小逻辑资源占用率并提高运算速度。这种方案优点在于直接优化算法,不会受IP核限制可移植性很强。
1 2D—FlR的设计
采用FPGA设计复数FIR滤波器常见的方案[2]为:用FPGA厂商提供的4个实数FIR滤波器IP核组合成2D—FIR滤波器。很明显这种设计没有考虑复数运算的特点,2D—FIR滤波器占用资源至少4倍于实数FIR滤波器,硬件资源耗费过大,性能也会受到不小的影响。因此从算法上分析并优化滤波器的结构非常必要。
1.1 算法优化
2D—FIR滤波器结构采用卷积型,它对输入数据的处理就是进行卷积运算[3],如(1)式所示:
为滤波器抽头系数。由(1)式可以看出其运算过程是
一个复数乘法由4个实数乘法和2个实数加法构成。而相同位数的实数乘法器与实数加法器相比会占更多的硬件资源,也会对电路性能产生更多的负面影响。通过优化后的复数乘法如下:
0.1*i]。为了方便验证仿真结果,事先计算出输出数据并转化为带符号位的整数[-10457+3486i,0+17428i,0,4096+12288i,32768—4096i,9626—7987i…]。从图3中的仿真结果可以看到,经过十几个时钟周期的延时后复数FIR滤波器的输出为[3486+10457 i,17428,0,4096+12288i,32767-4096i,9626-7987i…],前面两个数据与计算结果不一致是因为:复滤波器刚开始工作时内部移位寄存器默认的数据是0而不是外部输入的数据,当数据全部装载入滤波器后,计算结果完全满足设计要求。
通过对算法与电路的优化使2D—FIR滤波器的性能提高了13%,逻辑资源的占用减小了16%。文中所提出的方案比常规方法更有效,而且具有更强的可移植性。
欢迎光临 DIY编程器网 (http://www.diybcq.com/)
Powered by Discuz! X3.2