VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减
Posted 夏风喃喃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减相关的知识,希望对你有一定的参考价值。
VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减
作者:夏风喃喃
参考:
(1) VLSI数字信号处理系统:设计与实现 (美)Keshab K.Parhi/著
(2) socvista https://wenku.baidu.com/u/socvista?from=wenku
文章目录
一.引言
经典的滤波器分两类:FIR和IIR。FIR是有限长冲击响应滤波器,硬件电路是非递归的;而IIR是无限长冲击响应滤波器,硬件电路存在递归环路,值得注意的是,IIR可以看成是一个FIR和递归环路的级联。本章的目的在于如何并行实现FIR滤波器,在获得高吞吐率的同时尽可能节约面积和功耗。
FIR其实也是一个卷积的过程,只是这个卷积不是短卷积,而是长卷积。卷积其实是一种多相式乘法,快速卷积给出了“短”多相式乘法的有效实现,只要是多相式乘法,就能用快速卷积知识搞定。接下来讨论的FIR并行实现其实可看成是“短”多相式乘法。
本章的核心思想就是分治与子结构共享。
二.并行FIR滤波器
1.并行FIR滤波器的多相式分解表示
FIR多相分解也是一种“分而治之”处理,其做法就是将“待卷积”的两个序列 x ( n ) x(n) x(n)和 h ( n ) h(n) h(n)按交叉数据分配的原则分为“相同数量的”若干个子序列。
1.1 二相分解
FIR滤波器卷积表示:
y
(
n
)
=
x
(
n
)
∗
h
(
n
)
y(n) = x(n) * h(n)
y(n)=x(n)∗h(n)
x
(
n
)
x(n)
x(n)是无限序列,
h
(
n
)
h(n)
h(n)是有限序列,将
x
(
n
)
x(n)
x(n)和
h
(
n
)
h(n)
h(n)分别做奇偶2相分解。
在频域,可表示为
其中
同理有
其中
滤波结果的频域表示为
如果
Y
(
z
)
Y(z)
Y(z)也做2相分解,则正好有
其中
矩阵表示为
将
z
2
z^2
z2替换为
z
z
z,则公式(7)就是
也就是说
y
(
n
)
y(n)
y(n)的奇偶序列分别对应两个子序列的和,2相分解2并行FIR滤波器如下图所示:
1.2 三相分解
X 0 X_0 X0( z 3 z^3 z3)、 X 1 X_1 X1( z 3 z^3 z3)和 X 2 X_2 X2( z 3 z^3 z3)分别对应时域 x ( 3 k ) x(3k) x(3k)、 x ( 3 k + 1 ) x(3k+1) x(3k+1)和 x ( 3 k + 2 ) x(3k+2) x(3k+2); H 0 H_0 H0( z 3 z^3 z3)、 H 1 H_1 H1( z 3 z^3 z3)和 H 2 H_2 H2( z 3 z^3 z3)是 H ( z ) H(z) H(z)的三个子滤波器。
3相分解3并行FIR滤波器频域为:
因此,
矩阵表示为
3相分解3并行FIR滤波器如下图所示:
1.3 多相分解
多相分解可以将
X
(
z
)
X(z)
X(z)、
H
(
z
)
H(z)
H(z)和
Y
(
z
)
Y(z)
Y(z)分解为如下的L个子序列来获得L并行FIR滤波器:
多相分解的FIR滤波器矩阵表示如下
注意:
L
L
L并行FIR滤波器需要
L
2
L^2
L2次子滤波运算,每次运算长度为
N
/
L
N/L
N/L(N为原始滤波器抽头数),需要
N
/
L
N/L
N/L次乘法,
(
N
/
L
−
1
)
(N/L-1)
(N/L−1)次加法。
因此,这种L并行FIR滤波器需要
L
2
∗
(
N
/
L
)
L^2*(N/L)
L2∗(N/L)次,即
L
N
LN
LN次乘法运算和
L
2
∗
(
N
/
L
−
1
)
L^2*(N/L-1)
L2∗(N/L−1)次,即
L
(
N
−
1
)
L(N-1)
L(N−1)次加法运算。虽然多相式表示法没有缩减并行滤波器的复杂性,但它可以用于获得快速并行FIR滤波器。
2.快速FIR算法(FFAs)
由Winograd提出,2个L-1阶多项式相乘,可仅用(2L-1)个乘积项来实现。这种乘法数量的缩减是以加法数量的增加为代价实现的。因为FIR滤波器的多相表达式形式中的成绩项等于块表达式的滤波运算,于是并行FIR滤波器可近似用(2L-1)个长度为N/L的FIR滤波器来实现。(N为原始滤波器抽头数)
快速FIR算法(FFAs)就是依赖这种方法生成复杂度降低的并行滤波器结构。L并行滤波器可以近似用(2L-1)个长度为(N/L)的滤波运算来实现,需要(2N-N/L)次乘法。例如,N=4,L=2,传统2并行需要4次子滤波运算(即 L 2 L^2 L2),每次运算长度为2(即N/L),共需要8次乘法(即LN)。而2并行快速滤波方法仅仅需要6次乘法,当N值很大时,FFAs可以大大缩减乘法的数量。
2.1 二并行和三并行低复杂度FIR滤波器
2并行快速FIR滤波器:
将传统多相分解得到的并行滤波器改写如下:
这个2并行快速滤波器产生了共享公共项,在计算
Y
0
Y_0
Y0和
Y
1
Y_1
Y1时可以共用。如下图所示。
此结构使用三个长度为N/2的子滤波器和4个预/后处理加法运算来实现。需要3*(N/L)=1.5N次乘法和3*(N/L-1)+4=1.5N+1次加法,而传统多相分解导出的并行滤波器需要LN=2N次乘法和L(N-1)=2(N-1)次加法。
2并行快速FIR滤波器可以用矩阵表示:
其中diag是对角矩阵,
Q
2
Q_2
Q2是后处理矩阵,
P
2
P_2
P2是预处理矩阵。
Q
2
H
2
P
2
Q_2H_2P_2
Q2H2P2即公式9-16中的
H
H
H,FFAs即实现了对
H
H
H的对角化。
3并行快速FIR滤波器(理解):
快速3并行FIR算法可以通过递归2并行快速FIR算法实现。
可用矩阵表示为
可用6个长度为N/3的子滤波器和3个预处理和7个后处理加法器构成。3并行快速FIR滤波器如下图所示:
2.2 转置的并行滤波器
任何并行FIR滤波器结构通过转置操作都可以得到另一个并行的等价结构。通常,转置的结构具有相同的硬件复杂度,而有限字长性能却不同。
考虑矩阵形式
Y
=
H
X
Y=HX
Y=HX表达的并行滤波运算,其中
H
H
H是一个L×L矩阵。通过将
H
H
H矩阵转置并交换
X
X
X和
Y
Y
Y的位置,可以得到该并行滤波算法的等价实现。
快速2并行滤波器的转置变换如下
2.3 由线性卷积得到的并行滤波算法
任何L×L卷积算法也可以得到L并行快速滤波器结构。
为了用2×2快速卷积得到一个2并行滤波器,考虑下面理想2×2线性卷积:
求取该算法的转置并对
s
i
s_i
si、
h
i
h_i
hi和
x
i
x_i
xi做适当的替换,得到2并行滤波器结构:
用这种方法与用2并行FFA直接转置变换所得到的的结构是相同的。
2.4 用于大块尺寸的快速并行FIR算法(略)
三.离散余弦变换和反离散余弦变换
DCT与IDCT:
DCT是正交变换,IDCT可以通过转置DCT实现,反之亦然。直接实现DCT需要N(N-1)次乘法运算,减少计算数量的算法是很有必要的。
1.算法结构变换
算法结构变换可以用来获得有效的DCT实现,所用乘法数量急剧减少。
例题:
2.对 2 m 2^m 2m点DCT的频率抽取快速DCT
该算法通过2的幂次的分解,将乘法的数量减少到大约 ( N / 2 ) l o g 2 N (N/2)log_2N (N/2)log2N。
快速 N = 2 m N=2^m N=2m点IDCT算法:
记
X
^
(
k
)
=
e
(
k
)
X
(
k
)
\\hat X(k) = e(k)X(k)
X^(k)=e(k)X(k),特殊的,
X
^
(
−
1
)
=
0
\\hat X(-1) = 0
X 以上是关于VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减的主要内容,如果未能解决你的问题,请参考以下文章 VLSI数字信号处理系统——第十章流水线结构的并行自适应递归滤波器