Page 29 - 网络电信2019年4月刊上
P. 29

光    通    信

            所以对于高阶的FIR滤波器设计一般不采用,而并行乘法器结构                            2、有符号的分布式FIR滤波器设计
            就会使用大量的乘法器。基于FPGA的高阶FIR滤波器,采用这种                          我们可以修改一下公式(3),使之能处理有符号补码数。
            方法就显得很不节省资源。分布式算法就是将乘法运算转换成                          在补码中,最高有效位是用来区别正数和负数的。
            基于ROM查找表结构,并且高效地实现多个乘法运算操作,在速                            所以可以采用如下的(B+1)位表达式:
            度上和资源占用上都有比利用乘法器结构设计FIR滤波器不可比
            拟的优势。                                                                                                  (7)
                                                                            b
                对于固定系数乘法运算,采用DA算法结构,可以有效地将                           其中1-2 *x B [n]用来计算符号位,x b 表示x[n]的第b位,
            乘法运算转换成基于查找表的加法运算。考虑有一个线性时不                          x[n]即是x的第n个样点。所以内积y可以表示为:
            变网络的输出可以用下式表示:
                                                                                                                   (8)
                                                              (2)    化简得:

                假设系数c[n]是已知常数,x[n]是变量,在无符号DA系统                                                                     (9)
            中假设变量x[n]的表达式如下:                                         要实现有符号DA系统,可以通过两种选择来修改无符号DA
                                                                 系统:(1)带有加减控制的累加器;(2)采用一个具有额外
                                                              (3)  输入的ROM。
                其中,表示x[n]的第b位,x[n]即是x的第n个样点。所以内                      本文采用可转换式累加器,与表1类似,可以将f B-1 做出同
            积y可以表示                                               样的一张查找表。如果将f B-1 与f 1 查找表的值存储在ROM中,就可
                                                                 以利用所有的相同位作为查找表ROM的地址分别查出与的值,然
                                                              (4)  后将f 1 进行累加就可以得到y的值。于是将乘累加运算转换成了
                化简后,可得:                                          基于查找表的加法运算。

                                                              (5)    四、改进的分布式算法FIR滤波器设计方法
                函数f(c[n],x b [n])的实现方法可以通过一个LUT实现                    可以通过以提高速度为目的和以缩小规模为目标两种方法
                                     N
            f(c[n],x b [n]),也就是说2 字宽、预先设定程序的LUT接                 对基本分布式算法进行改进。
            受一个N位输入向量x b =[x b [0],x b [1],…x b [N-1],输出为            1、以提高速度为目的的改进方法
            f(c[n],x b [n])。各个映射f(c[n],x b [n])都由相应的二次幂加权            以提高速度为目的,在这种结构中用增加额外的LUT、寄存
            并累加。利用如图2所示的移位加法器就能够有效实现累加。在                         器和加法器为代价提高速度。一个N阶乘积和计算的基本DA结构
            N次查询循环后就完成了对内积y的计算。                                  接收N个字中每个字内的一位。
                                                                     如果每个字中有两个位得以接受,则计算速度就可以从根
             图2 移位加法器DA结构
                                                                 本上翻倍。能够达到的最大速度是使用如图3所示的完全流水线
                                                                 式字并行结构。在此,为4位有符号系数在每个LUT循环内计算
                                                                 出了长度为4的乘积和的新结果。对于最大速度,我们还必须为
                                                                 向量x b [n]的每一位提供一个单独的ROM(具有相同的内容)。
                                                                 但是这样最大速度的代价就变得非常昂贵了:如果将输入位宽
                                                                 加倍,就需要两倍的LUT、寄存器和加法器。如果系数N的数量
                                                                 限制在4个或8个。
                                                                  图3 速度最优的高阶分布式算法结构


                在此可以将公式(6)中的f(c[n],x b [n])展开得:

                                                              (6)
                则f(c[n],x b [n])的结果可以由表2表示:

             表2 f(c[n],xb[n])结果查找表









            46                                         网络电信 二零一九年四月
   24   25   26   27   28   29   30   31   32   33   34