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 网络电信 二零一九年四月