VLSI数字信号处理系统——第八章快速卷积

Posted 夏风喃喃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VLSI数字信号处理系统——第八章快速卷积相关的知识,希望对你有一定的参考价值。

VLSI数字信号处理系统——第八章快速卷积

作者:夏风喃喃
参考:
(1) VLSI数字信号处理系统:设计与实现 (美)Keshab K.Parhi/著
(2) socvista https://wenku.baidu.com/u/socvista?from=wenku

一.引言

卷积是数字信号处理中最常见也是最重要的计算之一。利用卷积可以实现相关计算和 FIR 滤波等等。这里我们重点讨论快速卷积,快速卷积对卷积速度要求较高。在保证速度的前提下,尽可能使用简单运算(加法)来代替复杂运算(乘法),同时还有利于计算共享,从而节约面积,与此同时功耗也能得到一定程度的改善。

考虑如下复数乘法,(a + jb)是样值信号,(c + jd)是系数。
在这里插入图片描述
将其写成矩阵形式,有
在这里插入图片描述
从矩阵式中,可以看出一对复数相乘,需要 4 次乘法和 2 次加法。相同的功能,如果采用下面的计算过程
在这里插入图片描述
新的矩阵计算方式只需要 3 次乘法 3 次加法。第一个矩阵2次加法,第二个矩阵3次乘法,第三个矩阵1次加法。从应用角度说,因为是固定系数,c - d 和 c + d 所涉及的两次加法是不占计算量的。

实际上卷积有三种表示,

  1. 求和形式
    在这里插入图片描述
  2. 矩阵形式(有限长序列卷积)
    如2×2卷积:在这里插入图片描述
    如2×3卷积:
    在这里插入图片描述
  3. 多项式相乘形式(频域相乘)
    在这里插入图片描述

快速卷积算法,就是以卷积的多项式表示来进行构造的。

本章给出了设计快速卷积算法的两种著名方法。第二节讨论了基于拉格朗日插值的Cook-Toom算法,用于小尺寸的线性卷积。第三节讨论了基于中国剩余定理(CRT)的Winograd算法,用于尺寸稍大的线性卷积和循环卷积。第四节阐述了用短卷积算法导出长序列卷积的高计算效率的实现形式。第五节讨论了环形卷积及其与线性卷积的关系。第六节讲述了通过观察来设计快速卷积算法。

二.Cook-Toom算法

2.1 拉格朗日插值定理

β 0 , β 1 , … … , β n β_0,β_1,……,β_n β0β1βn为[a, b]上 n+1 个互不相同的点。如果在点 β i β_i βi(i = 0,1,……,n)处的函数值 S i S_i Si已知,则存在唯一的次数不高于 n 的多项式 S ( p ) S(p) S(p)使得 S ( p ) ∣ p = β i = S i S(p)|_{p=β_i} = S_i S(p)p=βi=Si ,该多项式有下式给出
在这里插入图片描述

2.2 卷积和拉格朗日插值的关系

卷积可以表示成多项式乘法,考虑 线性卷积,其中
在这里插入图片描述 在这里插入图片描述
卷积结果就是
在这里插入图片描述
中的
在这里插入图片描述
Cook-Toom 算法所要做的就是利用拉格朗日插值公式,导出 S ( p ) S(p) S(p)的符号式。

2.3 Cook-Toom算法

  1. 选择 L+N-1 个不同的实数 β 0 , β 1 , … … , β L + N − 2 β_0,β_1,……,β_{L+N-2} β0β1βL+N2,一般是选择整数,如0,±1,±2,±3等,不同的取值将会导致不同的快速卷积结果。
  2. 计算 H ( β i ) H(β_i) H(βi) X ( β i ) X(β_i) X(βi),i = 0,1,……,L+N-2。
  3. 计算 S ( β i ) = H ( β i ) X ( β i ) S(β_i) = H(β_i)X(β_i) S(βi)=H(βi)X(βi),i = 0,1,……,L+N-2。
  4. 用拉格朗日插值公式,算出 S ( p ) S(p) S(p)的符号式。

在这里插入图片描述
在这里插入图片描述
Cook-Toom算法可以理解为矩阵的分解。通常,卷积可以表示为矩阵形式
在这里插入图片描述
Cook-Toom算法将其分解为
在这里插入图片描述
其中,C是后置加法矩阵,D是前置加法矩阵,H是主对角线元素为 H i H_i Hi的对角线矩阵。通用乘法的数目完全由对角线矩阵H的非零对角元素的数目来确定。

2.4 修改后的Cook-Toom算法

  1. 选择L+N-2个不同的实数 β 0 , β 1 , … … , β L + N − 3 β_0,β_1,……,β_{L+N-3} β0β1βL+N3,一般是选择整数,如0,±1,±2,±3等,不同的取值将会导致不同的快速卷积结果。
  2. 计算 H ( β i ) H(β_i) H(βi) X ( β i ) X(β_i) X(βi),i = 0,1,……,L+N-3。
  3. 计算 S ( β i ) = H ( β i ) X ( β i ) S(β_i) = H(β_i)X(β_i) S(βi)=H(βi)X(βi),i = 0,1,……,L+N-3。
  4. 计算 S ′ ( β i ) = S ( β i ) − S L + N − 2 p L + N − 2 S'(β_i) = S(β_i) - S_{L+N-2}p^{L+N-2} S(βi)=S(βi)SL+N2pL+N2,i = 0,1,……,L+N-3。
  5. 用拉格朗日插值公式,算出 S ′ ( p ) S'(p) S(p)的符号式。
  6. 计算 S ( p ) = S ′ ( p ) + S L + N − 2 p L + N − 2 S(p) = S'(p) + S_{L+N-2}p^{L+N-2} S(p)=S(p)+SL+N2pL+N2

在这里插入图片描述
在这里插入图片描述

三.Winograd算法

3.1 中国剩余定理

Winograd短卷积算法基于中国剩余定理(CRT),它的描述如下:

CRT:如果已知一个非负整数在给定的不同模数下对应的余数,若这些模数互素并且已知该整数小于这些模数之积,则该非负整数可唯一确定。

整数CRT:已知 c i = c   m o d   m i c_i=c\\ mod\\ m_i ci=c mod mi,i=0,1,…,K-1,其中 m i m_i mi为互素的模数,又令 M = ∑ i = 0 K − 1 m i M=\\sum_{i=0}^{K-1}m_i M=i=0K1mi M i = M / m i M_i=M/m_i Mi=M/mi,求解 N i M i + n i m i = G C D ( M i , m i ) = 1 N_iM_i+n_im_i=GCD(M_i,m_i)=1 NiMi+nimi=GCD(Mi,mi)=1 N i N_i Ni。则有 c = ( ∑ i = 0 K − 1 c i N i M i )   m o d   M c=(\\sum_{i=0}^{K-1}c_iN_iM_i)\\ mod\\ M c=(i=0K1VLSI数字信号处理系统——第十五章数字强度缩减

VLSI数字信号处理系统——第十四章冗余运算

VLSI数字信号处理系统——第七章脉动结构设计

VLSI数字信号处理系统——第十三章位级运算架构

VLSI数字信号处理系统——第十七章低功耗设计

VLSI数字信号处理系统——第十章流水线结构的并行自适应递归滤波器