您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于FPGA实现FIR滤波器的研究

时间:2007-1-20栏目:电子通信论文

增加。例如EPFl0K20包含1152个LC,而一个27×7位的表就需要394个LC。当N过大时,一个FPGA器件就不够用了。

为了减小规模,可以利用部分表计算,然后将结果相加。假定长度为LN的内积为:

基于FPGA实现FIR滤波器的研究

将和分配到L个独立的N阶并行DA的LUT之中结果如下:

基于FPGA实现FIR滤波器的研究

如图2所示,实现一个4N的DA设计需要3个次辅助加法器。表格的规模从一个2 N×B位的LUT降到4个2 N×B的位表。

如果再加上流水线寄存器,由于EPFl0K20每个LC后面都跟有一个寄存器,所以并没有增加电路规模,而速度却得到了提高。

2.2 并行方式

采用并行方式的好处是处理速度得到了提高。由于数据是并行输入,所以计算速度要比串行方式快,但它的代价是硬件规模更大了。下面举出全并行的例子。

设 sum[0]=c[0]x0+[0]+c[1]x0[1]+…+c[N-1]x0[N-1]

sum[B-1]=c[B-1]xB-1[0]+c[1]xB-1[1]+…c[N-1]+xB-1[N-1]

可将(1)式改写成如下形式

y=sum[0]+sum[1]2 1+sum[2] 2+…+sum[B-1]2 B-1  (2)

利用式(2)可得一种直观的加法器树,如图3所示。基于FPGA实现FIR滤波器的研究

虽然硬件规模加大了,但是如果把系数的个数限制在4个或8个,再加上流水线寄存器,这个代价还是值得的。而且每张表都是相同的,不用为每个采样都设计一张表,减小了设计量。

DA算法的主要特点,是巧妙地利用ROM查找表将固定系数的MAC运算转化为查表操作,其运算速度不随系数和输入数据位数的增加而降低,而且相对直接实现乘法器而言在硬件规模上得到了极大的改善。利用ALTERA的FLEXl0K实现的16阶8位系数的并行FIR滤波器,其时钟频率可以达到101MHz,而实现的16阶8位系数的串行FIR滤波器,其时钟频率可以达到63MHz,每9个时钟周期可完成一次计算。但是其系数是传统二进制的,造成了很大的冗余(对于用逐位相加法实现的乘法器,当系数有一位为零时不用相加,零位越多,冗余越大),而且查找表的大小随着滤波器阶数的增加成指数增加,虽然可以采用将大查找表分解为小查找表,但是无法从根本上解决这一问题,这些都是DA方法的缺点。后面将对FIR滤波器实现给出新的设计方法,进一步降低逻辑资源的消耗。

3 CSD码及最优化方法

一个整数X与另一整数Y的乘积的二进制表示可以写成:

基于FPGA实现FIR滤波器的研究

对于标准二进制,由于sn=0时的对应项Y2n并不参与累加运算,所以可以用另一种表示方法使非零元素的数量降低,从而使加法器的数目减少,降低硬件规模。有符号数字量(SD)有三重值{0,-1,+1},如果任意两个非零位均不相邻,即为标准有符号数字量(CSD)。

可以证明CSD表示对给定数是唯一的并且是最少非零位的。CSD表示相对于标准二进制表示的改进在于引入了负的符号位,从而降低了非零位个数,

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页