FIR数字滤波器在数字信号处理的进程中有很好的线性相位和稳定性,被广泛使用于音频处理、语音处理、信息体系等各种体系中。跟着现代电子技能及EDA技能的开展,特别是可编程逻辑电路的开展,FIR数字滤波器的完结将变得更具有灵活性和实时性。FIR滤波器的完结有多种办法,其间根据分布式算法FIR滤波器的FPGA完结选用硬件结构,此算法的特色是运转速度快,能较好地完结实时处理,特别适合于高速实时的信号处理。本文提出了一种根据分布式算法改善型FIR滤波器的FPGA完结,并规划和完结了改善型FIR滤波器。
1 FIR数字滤波器的直接型结构
FIR数字滤波器的输入与输出能够用下式表明:
式中:N为滤波器的阶数(或抽头数);x(k)为第k时间的输入样本值;h(k)为第k级抽头系数。FIR由于其单位脉冲响应h(n)是有限长而得名,即h(n)是一个有限长序列,对h(n)做Z改换就得到FIR数字滤波器的体系函数H(z):
由此能够得到FIR数字滤波器直接型的结构图如图1所示。
2 改善型FIR数字滤波器算法
2.1 分布式算法的原理
分布式算法是一种重要的FPGA技能,广泛使用在核算乘积和之中。除了卷积之外,相关、DFT核算和RNS反演映射等都能够转化为乘积和(sum of products)的办法。
(1)无符号分布式算法
假定N项的乘积和表明为:
又设系数h(n)是已知的常系数,x(n)是变量,设x(n)的表达式如下:
其间xb(n)表明x(n)的第b位,x(n)是x的第n次采样,则y又能够表明为:
(2)有符号分布式算法
关于有符号数补码数选用补码的表明办法。需求留意的是,在补码中,最高有用位是用来差异正数和负数的。将选用(B+1)位表达式:
要完结有符号分布式体系,一般选用“带有加/减控制器的累加器”完结此体系,当xb(n)为0时进行加法运算,为1时进行减法运算。
2.2 串行分布式算法
串行分布式算法结构如图2所示。使用一个LUT完结映射,即2N字宽,预先编写好程序的xb=[xb(0),xb(1),…,xb(N-1)]的映射,经查找表查找后输出,N次查询循环后就完结了核算成果。
以三阶四位有符号的数字滤波器为例,令滤波器的系数为{-2,1,3},LUT可选用根据FPGA的逻辑查找表或使用FPGA自带的ROM完结。用case表完结的中心代码如下:
Process (table_ in)
Begin
Case table_ in is
when “000”=> table_ out=0;
when “001”=> table_ out=-2;
when “010”=> table_ out=3;
when “011”=> table_ out=1;
when “100”=> table_ out=1;
when “101”=> table_ out=-1;
when “110”=> table_ out=4;
when “111”=> table_ out=2;
when others=> table_ out=0;
end case;
end process;
2.3 并行分布式算法
并行分布式算法结构如图3所示,图中虚线代表流水线寄存器,输入选用逐次采样(每次一个字)、位并行的办法。将每个数据的相同位递给LUT,关于输入的每一位都需求装备相应独自的表,且表的规划不固定(输入位宽等于滤波器抽头的数量),但表的内容相同。且不同的位对应不同的值,然后将从LUT中读取的数据经过处理后送入加法器中,每级的加法运算都是并行的。
2.4 拆分查找表
并行分布式算法尽管能够有用进步体系运算的速度,可是占用的资源太大。串行分布式算法占用的资源小,但体系的运算速度慢。并且当N很大时,即在FIR滤波器中假如阶数很高时,作为查找表的ROM将很大,例如:假定N=16,输入LUT的位宽为16,则ROM的巨细为16×216 bit,即1 Gbit。N每添加一位,ROM容量就添加一倍,这种以2的幂次递加的资源占用是硬件资源不行承受的。
当体系对速度要求不太高、而滤波器的阶数很高时,能够选用拆分表削减ROM容量并将成果累加。假如再加上流水线寄存器,这个改善并没有下降速度,却能够极大削减LUT的规划规划。
假定长度为LN的内积:
能够用一个DA结构完结。将和分配到L个独立的N阶并行DA的LUT之中,成果如下:
例如:完结一个4N的DA规划需求3个次辅佐加法器。而表格的规划从一个4N×2B的LUT下降到4个N×2B表。图4是拆分查找表的硬件结构图。
3 根据FPGA完结的改善型FIR滤波器结构功能
3.1 16阶8位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算法,占用资源少、运算速度快,在资源答应的条件下可根据实践使用恣意确认滤波器的长度和阶数,是一种比较有用牢靠的高效规划办法。