APP下载

基于FPGA串并结合FIR滤波器的设计

2012-04-29于亚萍陈雪强刘源卫勇

湖北农业科学 2012年14期
关键词:滤波器分布式算法

于亚萍 陈雪强 刘源 卫勇

摘要:根据FIR滤波器的特性和分布式(DA)算法的特点,基于FPGA实现FIR滤波器的原理和方法,在拆分查找表的基础上,利用串并结合DA算法对数字滤波器的设计进行优化,设计更高阶次的滤波器并节省所占用的硬件资源。采用串并结合DA算法设计了16阶FIR低通滤波器,在Quartus II 7.0下进行仿真,结果验证了该方法滤波效果好,能够有效地减少FPGA硬件资源的使用,提高FIR的运算速度。

关键词:FIR滤波器;查找表;FPGA;分布式(DA)算法

中图分类号:TN713文献标识码:A文章编号:0439-8114(2012)14-3092-04

Design of FPGA-Based Serial-Parallel FIR Filter

YU Ya-ping1,CHEN Xue-qiang2,LIU Yuan1,WEI Yong1

(1.Department of Mechanic and Electronic Engineering,Tianjin Agricultural University,Tianjin 300384, China;

2. Jinma Coking Limited Company, Jiyuan City of Henan Province, Jiyuan 454650, Henan,China)

Abstract: According to the characteristics of FIR filter and distributed algorithm (DA), the theory and method of FIR Filter was realized using DA based on FPGA. On the basis of table partitioning, the designation of FIR filters was optimized by serial-parallel arithmetic aiming at filters with higher order while saving the hardware it would use. 16-order FIR filters was designed by serial and parallel DA and simulated in Quartus Ⅱ 7.0. Results showed that the FIR filters were with small resource usage and high speed compared with traditional methods.

Key words: FIR filter; look-up table; FPGA; distributed algorithm

数字滤波器是数字信号处理的重要手段,分为有限脉冲响应数字(Finite impulsive response,FIR)滤波器和无限脉冲响应数字(Infinite impulsive response,IIR)滤波器两种。其中FIR滤波器在数字信号处理的过程中有很好的线性相位和稳定性,被广泛应用于工业、农业和医学领域中[1]。

目前FIR滤波器的硬件实现有以下4种方式:①使用单片通用数字滤波器集成电路,这种电路使用起来比较简单,由于字长和阶数的规格较少,不易满足实际需要。②使用DSP芯片[2],DSP芯片是依靠软、硬件结合来实现FIR滤波器,速度受到限制。③使用可编程逻辑器件FPGA/CPLD[3],用FPGA来实现数字信号处理可以很好地解决并行和顺序性的矛盾,而且易于测试与硬件升级[4]。

在FPGA中,进行传统乘法运算占用了大量的硬件资源,分布式(DA)算法巧妙地利用ROM查找表将固定系数的乘累加运算转换成查找表操作[5,6],避免了乘法运算。查找表后数据执行的都是简单的加法运算,可以较大程度地提高运算速度[7]。

该研究在拆分查找表的基础上,采用串并结合的DA算法进行FIR滤波器的设计,能很好地实现实时处理,有效减少硬件的使用,提高滤波器的运算速度。

1DA算法

DA算法是一项重要的FPGA技术,它与传统算法实现乘加运算的不同在于执行部分积运算的先后顺序不同[8,9]。

对于一个无符号系统,DA算法为:

式中,x[n]是变量,表示如下:

对于有符号系统,DA算法为:

DA算法对数据相同位分别加权求和,要实现有符号DA系统,利用一个LUT实现映射f(c[n],xb[n]),采用带有加/减控制的累加器,对前(B-1)位进行移位累加,对第B位进行减法运算。

1.1串行DA算法

将输入数据的相同位进行寻址,预先设定LUT接收一个N位输入向量xb={xb[0],xb[1]…xb[N-1]},输出为f(c[n],xb[n])。各个映射f(c[n],xb[n])都有相应的二次幂加权并累加,N次查询循环后就完成了对内积y的计算。串行DA算法如图1所示。

这种计算方法节省芯片的内部资源,运算速度与输入数据的长度有关,比较慢。

1.2拆分查找表DA算法

如果输入系数N过多,LUT的地址随系数呈指数增加。假定长度为LN的内积,则:

可以用一个DA结构实现。可得到:

拆分查找表DA算法如图2所示,实现一个4N的DA设计需要3个次辅助加法器,表格的规模由24N×B降到了4个2N×B。若要实现更高阶的滤波器,拆分查找表法的优势将更加明显,另外,如果是线性相位的滤波器,表的个数还能缩小一半。但是拆分查找表法只能降低硬件资源的有效使用,不能提高FIR的运算速度。

1.3串并结合DA算法

并行DA算法是通过增加ROM、寄存器和加法器提高速度,让输入数据每一位的相同位同时寻址,ROM表的内容相同,将寻址内容进行相应的二次幂加权并相加,每级的加法运算都是并行的。并行DA算法能使系统在1个系统时钟内完成滤波运算,但占用资源太多。

全串行方式是在每个时钟周期中对所有变量的一个相同位进行串行处理,全并行方式是每个时钟周期对所有变量的所有相同位进行并行处理,这两种方法是针对资源优化设计和速度优化设计的两种最优情况。根据设计者对FIR速度大小的要求,可以通过串并结合的方式提高FIR的速度,使资源利用达到最优。若:

对于一个数据宽度和寻址查找表宽度均为8位的FIR滤波器来说,可以写为:

y=[sum0]+[sum1]21+[sum2]22+[sum3]23++[sum4]+[sum5]21+[sum6]22+[sum7]23×24

两个基数都为21的输出加权累加器,每个系统的时钟脉冲可以算两位。根据系统对资源和运算速度的要求,可以对一次并行处理的数据位数进行合理的安排。DA算法的串并结合实现结构如图3所示。

2串并结合的FIR低通数字滤波器的FPGA实现

2.1采用窗函数对参数进行设计

2.1.1参数设计使用MATLAB软件中的Filter design toolbox数字滤波器设计软件模块FDATool进行设计[10],FIR滤波器的设计指标:采样频率10 MHz,截止频率1.5 MHz,滤波器阶数16阶,输入数据宽度12位,系数数据宽度12位,采用Kaiser窗进行设计,β=0.5,线性偶对称。

2.1.2运算量化量化是将滤波器的系数由浮点数转换为FPGA可以进行运算的定点数。考虑到溢出,将h(n)扩大210倍,再表示为12位二进制补码,可得到:

h(0)=h(15)=0.028 219 0=29=0000000111012C

h(1)=h(14)=-0.007 315 9=-8=1111111110002C

h(2)=h(13)=-0.049 899 0=-51=1111110011012C

h(3)=h(12)=-0.061 658 0=-63=1111110000012C

h(4)=h(11)=-0.014 040 0=-14=1111111100102C

h(5)=h(10)=0.089 426 0=92=0000010111002C

h(6)=h(19)=0.209 090 0=214=0000110101102C

h(7)=h(18)=0.288 940 0=296=0001001010002C

2.2FPGA的实现

采用FPGA实现时,首先将输入数据存入数组中寄存起来,然后以寄存器中每一个输入数据的相同位的值为地址,去对应查找表中的值,根据DA算法的公式,进行相应二次幂加权后累加,减去数据最高位,就能得到正确的滤波器输出。该系统在拆分查找表的基础上,采用串并结合方法对输入数据进行构建,共由数据存储延时模块、查找表模块、移位累加模块、控制模块组成。系统结构框架如图4所示。

2.2.1数据存储延时模块设计的滤波器阶数为16阶,可以采用FIR网络的线性型结构,首先将12位的输入数据并行输入数据寄存器中,由于该滤波器系数有16个,分别将16位输入数据存入16×13列数组中的前12列中,按位存储,第13列扩展位存储的数据与符号位相同。由于FIR数字滤波器的单位取样响应是对称的,滤波系数对称,将输入数据x(i)和x(15-i)相加之后存入寄存器,可以将16阶系数寻址降为8阶。分别将每一次输入数据的第1位到第6位、第7位到第12位和第13位数据并行输入,在控制模块的作用下,每一个系统时钟脉冲,数据左移一位,将第一列数据输出作为地址寻找查找表的内容。

2.2.2查找表模块抽头系数查找表模块将滤波器系数的各种组合固化在ROM中[11],它的地址来自于输入数据移位模块相同位的输出,通过查找表得到卷积数据,并将这些数据输出到移位相加模块。设计将查找表划分为两个四抽头查找表LUT1和LUT2,LUT1用VHDL语言实现如下:

Case table_address0 is

When"0000"=>table_out_12b<="000000000000";

When "0001"=>table_out_12b<="000000011101";-- 29

When "0010"=>table_out_12b<="111111111000";-- -8

When "0011"=>table_out_12b<="000000010101";-- 21

When "0100"=>table_out_12b<="111111001101";-- -51

When "0101"=>table_out_12b<="111111101010";-- -22

When "0110"=>table_out_12b<="111111000101";-- -59

When "0111"=>table_out_12b<="111111100010";-- -30

When "1000"=>table_out_12b<="111111000001";-- -63

When "1001"=>table_out_12b<="111111011110";-- -34

When "1010"=>table_out_12b<="111110111001";-- -71

When "1011"=>table_out_12b<="111111010110";-- -42

When "1100"=>table_out_12b<="111110001110";-- -114

When "1101"=>table_out_12b<="111110101011";-- -85

When "1110"=>table_out_12b<="111110000110";-- -122

When "1111"=>table_out_12b<="111110100011";-- -93

When others=>table_out_12b<="000000000000"

2.2.3移位累加模块移位累加模块的主要功能是实现数据的累加,主要由加减器单元和移位累加单元组成。为了使累加器的结果不产生溢出,需要对累加器进行冗余设计,输入数据和滤波器系数的位数均为N,累加器的长度为M,滤波器的长度为L,对于有符号数:M=2N+log2L-1,设计中累加器的长度为27位。

2.2.4控制模块控制模块主要控制信号的输入、移位相加和数据的输出,使上述各个模块按照一定的时序进行操作,最终完成滤波功能。系统仿真波形如图5所示。

3结论

理论分析和试验结果表明,在采用拆分查找表的基础上用串并结合的方式,不仅能够节省硬件资源,而且能够提高FIR的运算速度。该设计采用FPGA器件CycloneⅡ EP2C5F256C6进行方案验证,仅占用逻辑单元631个,采用串并结合的FIR数字滤波器具有良好的滤波效果,在资源允许的条件下,可根据实际应用任意确定滤波器的阶数和运算速度,是一种比较实用可靠的设计方法。

参考文献:

[1] 刘建成,邹应全,徐伟.基于FPGA的FIR滤波器设计与仿真[J]. 南京信息工程大学学报(自然科学版),2010,2(5):400-404.

[2] 周日贵,龚勇清,聂爱球,等. 定点DSP实现高精度FIR数字滤波[J]. 仪表技术与传感器,2004(2):400-404.

[3] 吕绍娟,赵不贿. FIR数字滤波的 FPGA实现[J]. 微计算机信息,2008,24(20):223-224.

[4] 徐志军,徐光辉. CPLD/FPGA的开发与应用[M]. 北京:电子工业出版社,2003.

[5] 黄晓红,蔡江利. 基于FPGA 的改进型FIR滤波器的实现[J]. 电子技术应用,2009,35(5):32-33.

[6] 杨洪军,王振友. 基于分布式算法和查找表的FIR滤波器的优化设计[J]. 山东理工大学学报(自然科学版),2009,23(5):104-106.

[7] 刘德建,郑继禹.基于流水线技术的FIR 滤波器的设计与实现[J]. 电测与仪表,2008,45(6):54-56.

[8] MEYER-BAESE U. 数字信号处理的FPGA实现[M]. 刘凌,胡永生,译. 北京:清华大学出版社,2003.

[9] XIE J F,HE J J,TAN G Z. FPGA realization of FIR filters for high-speed and medium-speed by using modified distributed arithmetic architectures[J].Microelectronics Journal,2010,41(6):365-370.

[10] 李彬. FIR数字滤波器的FPGA实现技术研究[D]. 成都:西南交通大学,2007.

[11] 罗朝霞,高书莉. CPLD/FPGA设计及应用[M]. 北京:人民邮电出版社,2007.

猜你喜欢

滤波器分布式算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
从滤波器理解卷积
进位加法的两种算法
开关电源EMI滤波器的应用方法探讨
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于Canny振荡抑制准则的改进匹配滤波器
一种改进的整周模糊度去相关算法
基于TMS320C6678的SAR方位向预滤波器的并行实现