现场可编程门阵列FPGA(Field-Programmable Gate Array)在器件密度、处理速度等达到片上系统的要求后,其具有系统内可重构的特性成为实现DSP应用的优选方案之一。而且国外有许多院校和科研机构都在研究FPGA与DSP的应用,实现了FPGA在电机转子控制设备[1]、三相数字信号处理[2]、宇宙射线射频干扰[3]等研究上的突破。FPGA的DSP解决方案为数字信号处理开创了新的领域,使得构造的数字信号处理系统既能够保持基于软件解决方案的灵活性,又能接近ASIC的性能。数字滤波器是数字信号处理的重要组成部分,其实质是用有限精度算法实现的离散线性时不变系统对数字信号进行滤波处理[4]。数字滤波器根据其单位冲激响应函数的时域特性可分为无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器两类。FIR滤波器是有限长单位冲激响应非递归型滤波器。它可以在幅度特性随意设计的同时,保证精确严格的线性相位,广泛应用于数字信号处理系统中。
1 FIR滤波器基本原理
FIR滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,其具有以下特点。
(1)系统的单位冲激响应h(n)在有限个n值处不为零。
(2)系统函数H(z)在|z|>0处收敛,极点全部在z=0处(因果系统)。
(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。
本文基于MAC的FIR滤波器采用了32个寄存器,分别寄存输入的32个8位宽数据,然后通过MAC结构将数据与MATLAB计算的H(n)系数进行乘法运算,将结果累加,输出累加和数据并向右移动7位,舍弃后7位,即缩小128倍。出于FPGA不便于处理浮点型数据,在滤波器的参数上扩大了128倍,而使得最终的MAC结构输出的数据都扩大了相同的倍数,于是在这里舍弃后7位数据,从而实现缩小128倍的效果,使得输出正确的输出信号。
通过Modelsim导入在滤波器设计中MATLAB自动产生的Modelsim的通用Testbench文件,利用这个Testbench文件作为本文设计的FIR低通滤波器的测试激励文件。仿真结果如图4所示,高频部分被滤除,保留了低频信号部分。
通过综合测试可知,在资源占用方面,本FIR滤波器仅占用556个逻辑单元(LE),216个寄存器资源以及203 bit的存储资源。资源占用皆不到5%,占用面积极小。同时在速度方面,本FIR滤波器能够工作的最高频率Fmax为195.73 MHz,工作速度也能够达到设计要求。
3 基于并行分布式算法的FIR滤波器
基于分布式算法(DA)的计算最显然而直接的形式是位串行,对基本算法的扩展可消除这一潜在的吞吐能力限制[5]。位串行处理数据可得到适中的运算速度。若输入变量长度为N位,则需要N个时钟周期来完成一次内积计算。提高运算速度常见方法是将输入字段分割成L个子字段,然后并行处理这些子字段。该方法需要L倍的存储查找表,从而导致存储需求和成本的直线上升。通过将输入变量分解为一位子字段可获得最大速度。通过这种分解,每一时钟周期就可计算出一个新的输出采样。采用MATLAB的Filter Design HDL CODER工具箱的数字滤波器设计软件模块FDATool(Filter Design & Analysis Tool)进行设计,设定指标如下:Beta值为0.5的Kaiser窗函数,采样频率为5 MHz,截止频率为1.5 MHz,阶数为32阶。得到FIR的滤波器系数H(n),将H(n)扩大128倍,再表示为8位二进制补码,以便于作为该低通滤波器的系数,同时在滤波器的输出,将输出结果向右移动7位,以缩小128倍,达到正确输出结果。
采用MATLAB平台,对FIR滤波器进行建模,并配置相应滤波器参数。采用频率为0.5 MHz的正弦波和一个随机噪声,通过叠加合成后输入到设计的FIR滤波器,得到输入输出波形,该FIR滤波器能够很好地去除高频部分,保留低频信号,其结构如图5所示。
通过DSP Builder的交叉编译平台,在经过分析综合、编译仿真等流程后得到本设计的32阶FIR滤波器在FPGA上的具体实现结构。
编译综合后,再次加入两正弦波,频率分别为0.5 MHz和2 MHz,叠加合成后通过实例化后的FIR滤波器,滤波结果如图6所示。可见,本FIR滤波器成功滤除高频信号成分,保留了低频信号。
通过Quartus II布局布线及综合仿真,FIR滤波器最终适配到FPGA中,系统占用1 042个逻辑单元(LE),寄存器为274个。可达到的最大工作频率Fmax为236.13 MHz,设计占用逻辑资源较少,工作频率较高,完全符合设计目标。
本文设计的FIR滤波器的两种方案中,滤波器的阶数均为32阶,两种方案均在Altera公司的Cyclone II系列EP2C35F672C8 FPGA芯片上实现,采用Quartus II 11.1综合布局布线后,所占用的硬件资源总结如表1所示。
从表1可知,本文与参考文献[6]相比,MAC结构的硬件资源上要减少约29%,DA算法的也减少了约73%;与参考文献[7]相比,MAC硬件资源减少约47%,DA减少约9%,而在运行速度方面,MAC的增加了约8%,DA的也增加了约25%;与参考文献[8]相比,MAC的硬件资源减少约13%,DA的减少约43%。
本文采用FPGA平台实现了FIR数字低通滤波器,同一个滤波器,实现结构不同,所耗费的资源和所能够达到的速度完全不同。本文采用流水线技术提高了滤波器的运行速率,同时运用逻辑单元实现乘法运算并复用该模块以达到减少逻辑单元消耗,并通过适当时序约束,对布局布线进行控制,通过手动布局,提高资源运用率。与其他同类型的滤波器相比,本文的MAC结构滤波器硬件资源占用减少了约30%,且运行速度增加了约19%;DA算法滤波器也减少了约41%,运行速度增加了约25%,不仅节约的硬件资源,而且提高了系统处理速度。
参考文献
[1] MORALES-CAPORAL R, BONILLA-HUERTA E, HERNANDEZ C, et al. Transducerless acquisition of the rotor position for predictive torque controlledPM synchronous machines based on a DSP-FPGA digital system[C]. IEEE Transactions on Industrial Informatics, 2013,9(2): 799-807.
[2] NASCIMENTO P S B, NEVES F A S, DOMINGUES M A O. FPGA design methodology for DSP industrial applications A case study of a three phase positive sequence detector[C]. 2012 25th Symposium on Integrated Circuits and Systems Design (SBCCI), 2012:1-6.
[3] SZADKOWSKI Z, FRAENKEL E D. FPGA/NIOS implementation of an adaptive FIR filter using linear prediction to reduce narrow band RFI for radio detection of cosmic rays[C]. Real Time Conference(RT), 2012 18th IEEE-NPSS, 2012:1-8.
[4] 史明泉.基于DSP的FIR滤波器的C语言算法实现[J].无线电工程,2011,41(1):13-14.
[5] 岑光.基于FPGA的FIR数字滤波器研究与设计[D].西安:西安电子科技大学,2011.
[6] 崔亮,张芝贤.基于FPGA设计的FIR滤波器的实现与对比[J].电子设计工程,2012,20(20):168-170.
[7] 李仙琴,周盛,计建军,等.基于FPGA的两种高速高阶FIR滤波器的设计与比较[J].国际生物医学工程杂志,2008,31(6):325-329.
[8] 李飞.低资源高速度FIR滤波器设计及其FPGA实现[D].湘潭:湘潭大学,2011.