CN103049716A - 基于一阶矩的卷积器 - Google Patents
基于一阶矩的卷积器 Download PDFInfo
- Publication number
- CN103049716A CN103049716A CN2012105535808A CN201210553580A CN103049716A CN 103049716 A CN103049716 A CN 103049716A CN 2012105535808 A CN2012105535808 A CN 2012105535808A CN 201210553580 A CN201210553580 A CN 201210553580A CN 103049716 A CN103049716 A CN 103049716A
- Authority
- CN
- China
- Prior art keywords
- register
- convolution
- acc
- assignment
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于一阶矩的卷积器,属于数字信号处理领域。本发明通过预先对卷积核序列数据值和序号进行统计,作为后续计算的控制信号,将循环卷积计算转化成只含少量移位和加法运算的操作,设计出结构简单且对任意长度和数据分布范围都适用的高效数字信号卷积计算器。本发明在卷积计算中避免三角函数和复数计算的引入,提高计算精度;克服现有的快速卷积器对乘法器或大容量存储资源的需求;消除在计算卷积时对长度的限制;在减少硬件资源占用和降低功耗的同时保持较高的计算速度。
Description
技术领域
本发明涉及数字信号处理的卷积和相关计算领域,尤其针对有限长度的循环卷积和相关的无乘法计算领域及其VLSI(超大规模集成电路)设计。
背景技术
卷积运算和相关函数运算均是数字信号处理中最基本、常用的计算,由于它们的计算复杂度高,一定程度上影响了信号实时处理的性能。因此,如何在保持低功耗的同时提高其运算速度、减少硬件资源需求,在数字信号处理中具有十分重要的理论和实用价值。现有的高效算法和硬件结构大致可分为以下四类:
(1)基于快速傅里叶变换的计算方法
由于傅里叶变换存在各种快速计算方法,而时域的卷积运算与其对应的频域乘积运算等价,因此可将待卷积的数据先进行快速傅里叶变换,再将变换后的两组数据对应相乘,最后进行反傅里叶变换,得到卷积结果。该方法借助于快速傅里叶变换(FFT)的计算优势,与直接进行卷积计算相比,大大提高了计算速度。
缺点:增加傅里叶变换环节后引入了三角函数和复数的计算,且经过正反两次傅里叶变换对数据产生的截断误差降低了最终结果的精确性;计算过程中仍存在大量乘法,复杂度较高;各种快速傅里叶变换算法对卷积长度有相应要求,缺乏通用性。
(2)基于数论变换、多项式分解和矩阵分解的计算方法
应用数论变换和多项式中国剩余定理,如短循环卷积算法,Agarwal-Cooley嵌套卷积算法和分裂嵌套循环卷积算法等,将两个长数列的卷积转化成若干较短数列的卷积,或将大的卷积矩阵分块并行计算,避免了三角函数和复数的引入,能较快地完成卷积计算。
缺点:这些计算过程中仍存在大量乘法操作;计算结构复杂;大部分结构只能针对数据长度能分解成特定值乘积的情况,缺乏通用性。
(3)基于脉动阵列结构的计算方法
为更快实现卷积和相关计算,适用于VLSI实现且专门针对卷积和相关计算的脉动阵列算法结构被提出。结合该技术,对原有卷积和相关快速算法进行改进后得到的新方法大大提高了卷积和相关的计算速度。
缺点:用该结构直接计算卷积,计算量大;结合快速卷积算法后同样存在结构复杂、对卷积和相关计算有长度限制,缺乏通用性,且硬件资源消耗较大。
由于以上方法中都包含有乘法操作,而在相同的硬件技术发展背景下乘法实现占用的资源大且速度较加法操作慢,因而如何避免乘法器的使用,设计出计算速度更快、资源消耗更低的卷积和相关器是提高计算性能的关键。
(4)结合分布式算法和脉动阵列结构的无乘法计算方法
现有的无乘法卷积和相关的方法都采用事先对卷积核序列或相关核序列进行预处理并存储于大容量存储器中,将输入序列组合作为该存储器的地址值,取出相应值进行移位和累加,完成计算。主要有传统分布式算法(即DA算法)、改进型存储高效的分布式算法和基于分布式算法的硬件高效的脉动式阵列结构。
传统的分布式算法是早期计算循环卷积和相关的经典无乘法算法。主要是根据算法原理将卷积核序列或相关核序列预先计算并存储,在计算时将输入数据序列的相同比特位从高到低且按每个数据的先后顺序组合作为地址值,取出预先处理并存储于存储器中的卷积核序列值,最后移位累加完成计算。在整个计算中,该算法只使用加法和移位操作,对任意长度的卷积都能在较少周期内快速完成卷积和相关计算。
缺点:存储处理好的卷积核序列和相关核序列所需的存储器大小与计算点数成指数倍增长。此外,当卷积和相关的数据点数较大时,寻址范围大,硬件资源消耗高。
改进型存储高效的分布式算法针对传统DA算法的存储上有了很大改进,大大减少了存储资源的占用。通过增加一个地址解码器和桶形移位寄存器,完全消除了待存储的冗余数据。
缺点:当卷积长度很大时,所需的多对一地址解码器设计较复杂,存储资源需求仍然庞大。
基于分布式算法的硬件高效的脉动式阵列结构可将卷积长度分段,对每段数据都同时进行分布式卷积计算,进一步降低了对存储容量的需求,在延时-面积积这一性能指标的衡量下,比以往的无乘法计算方法更优。
缺点:该算法只能适用于卷积长度为非质数的情况,并且当卷积长度为大质数之积时,存储资源需求较大。
发明内容
本发明公开了一种卷积器,其所要解决的技术问题是在卷积计算中避免三角函数和复数计算的引入,提高计算精度;克服现有的快速卷积器对乘法器或大容量存储资源的需求;消除在计算卷积和相关时对长度的限制;在减少硬件资源占用和降低功耗的同时保持较高的计算速度。
一种卷积器,包括第一寄存器cnt1、递减器cnt2、第二寄存器cnt3、两行累加器组acc[1],acc[2]以及M+1行寄存器组reg[0],reg[1],…,reg[M],M是卷积长度N用二进制表示的比特数目;每一行寄存器组由N个寄存器构成,每一行累加器组由N个累加器构成;reg[0]由输入序列{x(n)}赋值,n=0,1,2,…,N-1;
第一寄存器cnt1由输入序列{q(n)}赋值,cnt1的每个比特位cnt1[m],m=0,1,…M-1经过m个周期的延时后分别控制第m行的寄存器组赋值即ROR{x(n)}m表示对序列{x(n)}右循环m个位置;经过M个时钟周期后,寄存器reg[M]的值为序列ROR{x(n)}q(n);
递减器cnt2由输入序列{p(i)},i=0,1,2,…,2L-1赋值,L为数据位宽;当cnt2为0时,i=i-1,递减器cnt2被更新赋值即cnt2=p(i),否则,n=n-1,寄存器cnt1被更新赋值即cnt1=q(n);
第二寄存器cnt3由递减器cnt2延时M个时钟周期后对其赋值,当cnt3不为0,则acc[1]=acc[1]+reg[M],当cnt3为0,则acc[2]=acc[2]+acc[1];
当第二寄存器cnt3接收到最后一个值p(0)时,完成全部累加操作,acc[2]中的数据序列即为最终的卷积结果Y;
所述输入序列{p(i)}表示卷积核{h(n)}中数值为i的元素个数,所述输入序列{q(n)}的含义为:对卷积核{h(n)}先按数值大小重新排列,后按序号大小重新排列之后得到一新序列,q(n)对应为该新序列的第n个数值在原始卷积核{h(n)}中的序号。
进一步地,包括多个卷积器和一个加法器组,其中该加法器组包含N个加法器;将卷积核{h(n)}中的数据二进制化后拆分为多个子卷积核,针对每一个子卷积核设置一个卷积器,各卷积器均连接加法器组,各卷积器的卷积结果通过加法器组移位相加得到最终卷积结果。
一种卷积器,包括第一寄存器cnt1、递减器cnt2、第二寄存器cnt3、第三寄存器cnt4、U+2行累加器组acc[1],acc[2]和accU[j],j=0,1,2,…,U-1,以及M+1行寄存器组reg[0],reg[1],…,reg[M];每一行寄存器组由N个寄存器构成,每一行累加器组由N个累加器构成;reg[0]由输入序列{x(n)}赋值,n=0,1,2,…,N-1;
将卷积核{h(n)}中的数据二进制化后拆分成两部分之和即数据位宽L分解为L=U+V,hU(n)和hV(n)分别是h(n)拆分后的高U比特和低V比特组成的数据;
第一寄存器由输入序列{qV(n)}赋值,cnt1的每个比特位cnt1[m],m=0,1,…M-1经过m个周期的延时后分别控制第m行寄存器组赋值,即ROR{x(n)}m表示对序列{x(n)}右循环m个位置;经过M个时钟周期后,寄存器reg[M]的值为序列
递减器cnt2由输入序列{pV(i)},i=0,1,2,…,2V-1赋值;当cnt2为0时,i=i-1,递减器cnt2被更新赋值即cnt2=pV(i),否则,n=n-1,寄存器cnt1被更新赋值cnt1=qV(n);
第二寄存器cnt3由递减器cnt2延时M个时钟周期后对其赋值,第三寄存器cnt4由输入序列{h′U(n)}赋值;
当i不为0且cnt3不为0,则n=n-1,acc[1]=acc[1]+reg[M],cnt4被更新赋值即cnt4=h′U(n),若此时cnt4的第j个比特位cnt4[j]为1,则accU[j]=accU[j]+reg[M];
当i不为0且cnt3为0,则acc[2]=acc[2]+acc[1];
当i为0且cnt3不为0,n=n-1,cnt4被更新赋值即cnt4=h′U(n),若此时cnt4的第j个比特位cnt4[j]为1,则accU[j]=accU[j]+reg[M];
当i为0且cnt3为0,acc[2]=acc[2]+accU[j]V+j,accU[j]V+j表示accU[j]中的每个元素均左移V+j位,此时acc[2]中的数据序列为最终卷积结果;
所述输入序列{pV(i)}表示卷积核{hV(n)}中数值为i的元素个数,所述输入序列{qV(n)}的含义为:对卷积核{hV(n)}先按数值大小重新排列,后按序号大小重新排列之后得到一新序列,qV(n)对应为该新序列的第n个数值在原始卷积核{hV(n)}中的序号;所述输入序列{h′U(n)}={hU(qV(0)),hU(qV(1)),…,hU(qV(N-1))}。
本发明的技术效果体现在:
本发明利用基于一阶矩的快速计算方法为设计思想,通过预先对卷积核序列或相关核序列的数据值和序号进行统计,作为后续计算的控制信号,将循环卷积和相关计算转化成只含少量移位和加法运算的操作,设计出结构简单且对任意长度和数据分布范围都适用的高效数字信号循环卷积和相关计算器。
当卷积长度远大于数据值分布范围时,本发明采用最初基于一阶矩的卷积方法设计出的并行计算结构;当卷积长度小于或近似于数据值分布范围时,本发明采用改进的基于一阶矩的卷积方法设计出的并行计算结构。这样,与现有无乘法结构——改进型存储高效的分布式结构相比,在以数据吞吐率/硬件资源为衡量指标下,本发明的结构具有显著优势,且硬件功耗更低。此外,当卷积长度越大,或卷积长度为非2的倍数时,本发明优势更为明显。
附图说明
图1是卷积长度为N、数据位宽为L的基于一阶矩的循环卷积器结构示意图;
图2是卷积长度为N、数据位宽为L的基于第一种改进方法的结构示意图;
图3是卷积长度为N、数据位宽为L的基于第二种改进方法的移位累加模块结构示意图;
具体实施方式
下面详细介绍本项研究技术的理论思想,以循环卷积为例。线性卷积可通过对卷积序列后端补零转化成循环卷积的计算;循环相关与循环卷积类似,仅数据序列的移位方向相反,这里不再赘述。
假设有两个N点的序列{x(n)}、{h(n)},其中{h(n)}是卷积核序列,{x(n)}是输入序列,n∈{0,1,…,N-1},则循环卷积公式如下:
这里x(·)N表示对N进行取模运算。
1.循环卷积的一阶矩转化
由于卷积核序列通常为一组固定值,设定参与卷积的数据位宽为L比特,则卷积核序列值的分布范围为[0,2L-1]。定义子集Si(i=0,1,2,…,2L-1),则可表示为
Si={n|h(n)=i,n∈{0,1,2,…,N-1}},0≤i≤2L-1. (2)
根据Si,将与之对应相乘的输入项进行累加,则可得到一个新的序列{ai(k)}为
由公式(3)可知,ai(k)是序列{x(k-n)N}中满足h(n)=i的所有元素的累加和。因此,公式(1)可另外表述为:
2.一阶矩的快速计算方法
定义序列{cm(k)},m∈{1,2,…,2L-1},赋值如下:
…
…
将其带入公式(4),则有:
公式组(5)中每个cm(k)的赋值从硬件实现角度来说只需用一个累加器完成,输入数据依次从变化到a1(k),所需计算周期为2L-1。公式(6)的累加同样只需一个累加器且用2L-1个时钟周期完成,当得到cm(k)值后的下个周期就可将其作为下一级累加器的输入,依次累加至得到最终卷积结果y(k)。因此,当对卷积核序列进行预处理之后,整个计算过程只需2个累加器和2L-1+N个时钟周期,其中获得序列{ai(k)}(i=0,1,2,…,2L-1)需N-1个周期,获得序列{cm(k)}(m=1,2,…,2L-1)需有2L-1个周期,此外需1个周期完成最后的累加。以上运算可用函数形式简单表述为
for m=2L-2 to 1
if(Sm≠Φ) c[1]=c[1]+am(k)
c[0]=c[0]+c[1]
end for
其中c[0],c[1]即为所需的2个累加器。
上述方法适应于卷积长度N大于数据值分布范围(即N>2L-1)的情况。当数据值分布范围大于或远大于卷积长度(即2L-1>N)意味着在统计得到的子集Si中有较多空元素,所需的周期数也同时随数据位宽L成2的指数幂增长,上述方法不再高效。
3.针对大范围数据值分布的改进方法
当数据位宽L较大时,本发明将{h(n)}中的数据二进制化后拆分成两部分之和,即将L分解为
L=U+V (7)
那么{h(n)}也将被分成两个新序列{hU(n)}和{hV(n)},其中hU(n)和hV(n)分别是h(n)拆分后的高U比特和低V比特组成的新数据。相似地,定义2V个子集 和2U个子集 分别将下标集{0,1,2,…,N-1}分成2V和2U部分:
因此,公式(4)最终变成
y(k)=y1(k)+2V·y2(k) (12)
其中,
这样y1(k)和y2(k)部分变成了分布范围缩小到0至2V-1和0至2U-1的一阶矩形式,其中y1(k)是对{h(n)}分解之后,其低比特部分{hV(n)}与输入{x(n)}的卷积结果,y2(k)是其高比特部分{hU(n)}与输入{x(n)}的卷积结果。
当y1(k)和y2(k)同时计算时,在对卷积核序列进行预处理之后,单个计算过程只需4个累加器和max{2U,2V}+N个计算周期,且一阶矩计算时最多需要2·(2U+2V-4)+1次加法操作和1次移位操作。若L较大,可将其分拆成更多部分,例如,L=L1+L2+…+LT,1≤T≤L,每部分最终都可转化成一阶矩形式,这样在一阶矩计算部分,单个卷积值计算最多需要次加法和T-1移位操作,整个计算所需周期为若在第一种方法的基础上将y2(k)的计算用更多移位操作来取代其中的加法操作,定义子集如下:
这里hU(n)[r]表示hU(n)的第r比特。
公式(12)可重新表示为
基于以上分析,第二种改进方法的y1(k)仍然可用一阶矩结构来计算,y2(k)部分的计算只需增加U个移位累加器,当所有对应的累加完成之后进行简单的移位操作,最后将两部分结果相加,得到卷积结果y(k)。因此,改进方法对单个卷积计算最多只需2·(2V-2)+U+1次加法操作和U次移位操作。当y1(k)和y2(k)同时计算,所需计算时间为2V+N个周期,所需资源为2个累加器和U个移位累加器。U越大,完成卷积计算所需时间越短,但耗用硬件资源越多。
在以上理论的指导下,结合高效的硬件设计方法,对卷积长度为N、数据位宽为L的循环卷积可按计算先后顺序分为以下几个步骤(并行计算N个卷积值):
1.统计预处理
由于卷积核{h(n)}(n=0,1,2,…,N-1)通常为一组固定值,可事先对其进行统计,得到所需信息。通常做法是对{h(n)}遍历两次:第一次遍历统计,获得{h(n)}中数值为i的元素个数,用序列{p(i)}(i=0,1,2,…,2L-1)表示;再次遍历,获得将该序列先按数值大小i、后按对应序号n的大小重新排列之后得到一新序列,该新序列的第n个数值在原始卷积核{h(n)}中的序号用序列{q(n)}(n=0,1,2,…,N-1)表示。
例1:对于N=8,L=2,卷积核{h(n)}={2,3,1,2,0,2,1,3},第一次遍历统计,取值为0的个数为1,取值为1的个数为2,取值为2的个数为3,取值为3的个数为2,即
p(0)=1,p(1)=2,p(2)=3,p(3)=2.
再次遍历,当h(n)顺序通过时,按数值大小不断调整其位置,最终使得序列按从小到大的顺序排列,h(n)中元素值0对应的序号为4即q(0)=4;元素值1对应的序号为2和6,按序号由小到大排序得到q(1)=2,q(2)=6;元素值2对应的序号为0、3和5,按序号由小到大排序得到q(3)=0,q(4)=3,q(5)=5;元素值3对应的序号为1和7,按序号由小到大排序得到q(6)=1,q(7)=7;此时新序列对应的原下标值所组成的序列为{q(n)},即
q(0)=4,q(1)=2,q(2)=6,q(3)=0,
q(4)=3,q(5)=5,q(6)=1,q(7)=7.
2.卷积的一阶矩并行形式转化
将式(1)改成矩阵形式表示为
从上式可知,每个h(n)只需要与矩阵X的第n列所有元素相乘,而第n列是由第0列向下循环移位n个位置得到。若将{h(n)}的下标用q(n)代替,则上式变为
Y=[(ROR{x(n)}q(0))T,(ROR{x(n)}q(1))T,…(ROR{x(n)}q(N-1))T]·[h(q(0)),h(q(1)),…,h(q(N-1))]T (19)
=h(q(0))·(ROR{x(n)}q(0))T+h(q(1))·(ROR{x(n)}q(1))T+…+h(q(N-1))·(ROR{x(n)}q(N-1))T
这里ROR{x(n)}m表示对序列{x(n)}右循环m个位置。
根据{h(n)},{p(i)}和{q(n)}之间的关系,可得出
显然,式(20)是一阶矩的矩阵形式。下面本发明简单的用一个桶形移位模块和一个累积模块就可以设计出卷积的并行计算结构。
3.基于一阶矩的并行计算结构
作为前段输入数据的处理模块,桶形移位模块的结构如图1所示。其主体部分由M+1行寄存器组构成,每组又包含N个寄存器,如图1中的reg[0],reg[1],…,reg[M],这里M是数值N用二进制表示所需的比特数,即[log2 N],reg[0]中对应存储N个输入数据。对于0≤m<M,第m行与第m+1的关系可用函数表示为
此外,图中的cnt2是一个递减器,其输入为p(i);寄存器cnt1的每个比特位cnt1[m]经过m个周期的延时后分别控制第m行的寄存器组赋值,而cnt1本身由q(n)赋值。当cnt2为0时i=i-1,cnt2被更新赋值;否则,n=n-1,cnt1被更新赋值。经过M个时钟周期后,就可连续得到桶形移位的输出序列ROR{x(n)}q(n),n=N-1,…2,1,0,此时累加模块开始工作,如图1所示。最终,当i=0时,式(20)所需的所有循环移位操作完成。
累加模块仅由两行累加器组构成,每行包含N个累加器,即图1中的acc[1],acc[2]。第一行acc[1]对应接收来自桶形移位模块的输出。整个模块的功能可用简单的函数表示为
这里cnt3由cnt2延时M个周期后对其赋值,作为该模块的输入控制信号。当cnt3为0,表明式(20)中的某个Ai已得到并作为最终结果的一部分完成了累加操作。最后当cnt3接收到最后一个值p(0)时,完成全部累加操作,acc[2]中的数据序列就是最终的卷积结果Y。
4.改进方法的全并行结构
卷积长度小于或近似于数据值分布范围时,本发明同样可根据上面提出的两种改进方法得到对应的并行计算结构来实现卷积操作。对于前一种结构,对L拆分后只需用相应个数的上述结构同时计算,将所得结果进行必要的移位操作之后相加,得到最终卷积结果,图2即为将L按式(7)分为两部分之后对应的结构图,该结构包括多个卷积器和一个加法器组,其中该加法器组包含N个加法器;将卷积核{h(n)}中的数据二进制化后拆分为多个子卷积核,针对每一个子卷积核设置一个卷积器,各卷积器均连接加法器组,各卷积器的卷积结果通过加法器组移位相加得到最终卷积结果。
而对于第二种改进方法得到的并行结构,可在原结构的基础上稍作调整,以便得到更优的硬件结构。
假设数据位宽L仍为U和V之和,首先预处理时,对{hV(n)}遍历两次,类似地,可得到相应的统计序列{pV(i)}(i=0,1,2,…,2V-1)和{qV(n)}(n=0,1,2,…,N-1),这里{pV(i)}是{hV(n)}中数值等于i的元素个数,{qV(n)}是对卷积核{hV(n)}先按数值大小重新排列,后按序号大小重新排列之后得到一新序列,qV(n)对应为该新序列的第n个数值在原始卷积核{hV(n)}中的序号。同时hU(n)在{hU(n)}中的位置也将以{qV(n)}中元素的值作为序号,重新调整,得到{h′U(n)}={hU(qV(0)),hU(qV(1)),…,hU(qV(N-1))}。
其次,构建相同的桶形移位模块,分别用{qV(n)}和{pV(i)}序列取代图1中的{q(n)}和{p(i)}序列作为控制信号的输入。在桶形移位模块连续工作M个时钟周期后启动新的移位累加模块,并将reg[M]中的序列作为移位累加模块的输入。
与一阶矩的累加模块相比,新的移位累加模块增加了U行累加器组,每行由N个累加器组成,如图3所示。每行累加器组分别由cnt4对应的比特位和cnt3同时控制,cnt4的输入是序列{h′U(n)},n逐渐从N-1变化到0。当i不为0且cnt3为非0值时,n=n-1,cnt4被赋以新值,输入序列分别累加到对应的acc[1]和accU[j](j=0,1,2,…,U-1)(若cnt4[j]为1,则累加)中;当i不为0且cnt3为0,acc[1]中的数被对应累加到acc[2]中。若i为0但输入cnt3中的pV(0)为非0值,则cnt4[j]和accU[j](j=0,1,2,…,U-1)继续执行操作即n=n-1,cnt4被更新赋值即cnt4=h′U(n),若此时cnt4的第j个比特位cnt4[j]为1,则accU[j]=accU[j]+reg[M],acc[1]停止操作直到cnt3为0;当i为0且cnt3为0,此时将accU[j](j=0,1,2,…,U-1)中的每个元素分别左移V+j位后分别对应累加到acc[2]中。最后在acc[2]中的数据序列即为对应的所有卷积结果Y。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种卷积器,包括第一寄存器cnt1、递减器cnt2、第二寄存器cnt3、两行累加器组acc[1],acc[2]以及M+1行寄存器组reg[0],reg[1],…,reg[M],M是卷积长度N用二进制表示的比特数目;每一行寄存器组由N个寄存器构成,每一行累加器组由N个累加器构成;reg[0]由输入序列{x(n)}赋值,n=0,1,2,…,N-1;
第一寄存器cnt1由输入序列{q(n)}赋值,cnt1的每个比特位cnt1[m],m=0,1,…M-1经过m个周期的延时后分别控制第m行的寄存器组赋值即ROR{x(n)}m表示对序列{x(n)}右循环m个位置;经过M个时钟周期后,寄存器reg[M]的值为序列ROR{x(n)}q(n);
递减器cnt2由输入序列{p(i)},i=0,1,2,…,2L-1赋值,L为数据位宽;当cnt2为0时,i=i-1,递减器cnt2被更新赋值即cnt2=p(i),否则,n=n-1,寄存器cnt1被更新赋值即cnt1=q(n);
第二寄存器cnt3由递减器cnt2延时M个时钟周期后对其赋值,当cnt3不为0,则acc[1]=acc[1]+reg[M],当cnt3为0,则acc[2]=acc[2]+acc[1];
当第二寄存器cnt3接收到最后一个值p(0)时,完成全部累加操作,acc[2]中的数据序列即为最终的卷积结果Y;
所述输入序列{p(i)}表示卷积核{h(n)}中数值为i的元素个数,所述输入序列{q(n)}的含义为:对卷积核{h(n)}先按数值大小重新排列,后按序号大小重新排列之后得到一新序列,q(n)对应为该新序列的第n个数值在原始卷积核{h(n)}中的序号。
2.根据权利要求1所述的卷积器,其特征在于,包括多个卷积器和一个加法器组,其中该加法器组包含N个加法器;将卷积核{h(n)}中的数据二进制化后拆分为多个子卷积核,针对每一个子卷积核设置一个卷积器,各卷积器均连接加法器组,各卷积器的卷积结果通过加法器组移位相加得到最终卷积结果。
3.一种基于一阶矩的卷积器,包括第一寄存器cnt1、递减器cnt2、第二寄存器cnt3、第三寄存器cnt4、U+2行累加器组acc[1],acc[2]和accU[j],j=0,1,2,…,U-1,以及M+1行寄存器组reg[0],reg[1],…,reg[M];每一行寄存器组由N个寄存器构成,每一行累加器组由N个累加器构成;reg[0]由输入序列{x(n)}赋值,n=0,1,2,…,N-1;
将卷积核{h(n)}中的数据二进制化后拆分成两部分之和即数据位宽L分解为L=U+V,hU(n)和hV(n)分别是h(n)拆分后的高U比特和低V比特组成的数据;
第一寄存器由输入序列{qV(n)}赋值,cnt1的每个比特位cnt1[m],m=0,1,…M-1经过m个周期的延时后分别控制第m行寄存器组赋值,即ROR{x(n)}m表示对序列{x(n)}右循环m个位置;经过M个时钟周期后,寄存器reg[M]的值为序列
递减器cnt2由输入序列{pV(i)},i=0,1,2,…,2V-1赋值;当cnt2为0时,i=i-1,递减器cnt2被更新赋值即cnt2=pV(i),否则,n=n-1,寄存器cnt1被更新赋值cnt1=qV(n);
第二寄存器cnt3由递减器cnt2延时M个时钟周期后对其赋值,第三寄存器cnt4由输入序列{h′U(n)}赋值;
当i不为0且cnt3不为0,则n=n-1,acc[1]=acc[1]+reg[M],cnt4被更新赋值即cnt4=h′U(n),若此时cnt4的第j个比特位cnt4[j]为1,则accU[j]=accU[j]+reg[M];
当i不为0且cnt3为0,则acc[2]=acc[2]+acc[1];
当i为0且cnt3不为0,n=n-1,cnt4被更新赋值即cnt4=h′U(n),若此时cnt4的第j个比特位cnt4[j]为1,则accU[j]=accU[j]+reg[M];
当i为0且cnt3为0,acc[2]=acc[2]+accU[j]V+j,accU[j]V+j表示accU[j]中的每个元素均左移V+j位,此时acc[2]中的数据序列为最终卷积结果;
所述输入序列{pV(i)}表示卷积核{hV(n)}中数值为i的元素个数,所述输入序列{qV(n)}的含义为:对卷积核{hV(n)}先按数值大小重新排列,后按序号大小重新排列之后得到一新序列,qV(n)对应为该新序列的第n个数值在原始卷积核{hV(n)}中的序号;所述输入序列{h′U(n)}={hU(qV(0)),hU(qV(1)),…,hU(qV(N-1))}。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210553580.8A CN103049716B (zh) | 2012-12-19 | 2012-12-19 | 基于一阶矩的卷积器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210553580.8A CN103049716B (zh) | 2012-12-19 | 2012-12-19 | 基于一阶矩的卷积器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049716A true CN103049716A (zh) | 2013-04-17 |
CN103049716B CN103049716B (zh) | 2015-07-22 |
Family
ID=48062349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210553580.8A Expired - Fee Related CN103049716B (zh) | 2012-12-19 | 2012-12-19 | 基于一阶矩的卷积器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049716B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967459A (zh) * | 2017-12-07 | 2018-04-27 | 北京小米移动软件有限公司 | 卷积处理方法、装置及存储介质 |
CN108205519A (zh) * | 2016-12-20 | 2018-06-26 | 上海寒武纪信息科技有限公司 | 矩阵乘加运算装置和方法 |
CN111047025A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 一种卷积计算方法及装置 |
CN111262592A (zh) * | 2018-11-30 | 2020-06-09 | 展讯半导体(南京)有限公司 | 序列的循环移位装置及方法、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7349817B2 (en) * | 2005-04-20 | 2008-03-25 | Samsung Electronics Co., Ltd. | Apparatus and method for reducing peak-to-average power ratio in a broadband wireless communication system |
CN102681815A (zh) * | 2012-05-11 | 2012-09-19 | 深圳市清友能源技术有限公司 | 用加法器树状结构的有符号乘累加算法的方法 |
-
2012
- 2012-12-19 CN CN201210553580.8A patent/CN103049716B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7349817B2 (en) * | 2005-04-20 | 2008-03-25 | Samsung Electronics Co., Ltd. | Apparatus and method for reducing peak-to-average power ratio in a broadband wireless communication system |
CN102681815A (zh) * | 2012-05-11 | 2012-09-19 | 深圳市清友能源技术有限公司 | 用加法器树状结构的有符号乘累加算法的方法 |
Non-Patent Citations (2)
Title |
---|
杨靓 等: "卷积的一种快速算法分析", 《微电子学与计算机》 * |
郑宝 等: "一种基于多项式变换的快速卷积算法", 《微计算机信息》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205519A (zh) * | 2016-12-20 | 2018-06-26 | 上海寒武纪信息科技有限公司 | 矩阵乘加运算装置和方法 |
WO2018113597A1 (zh) * | 2016-12-20 | 2018-06-28 | 上海寒武纪信息科技有限公司 | 矩阵乘加运算装置、神经网络运算装置和方法 |
CN107967459A (zh) * | 2017-12-07 | 2018-04-27 | 北京小米移动软件有限公司 | 卷积处理方法、装置及存储介质 |
CN107967459B (zh) * | 2017-12-07 | 2021-08-24 | 北京小米移动软件有限公司 | 卷积处理方法、装置及存储介质 |
CN111047025A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 一种卷积计算方法及装置 |
CN111047025B (zh) * | 2018-10-15 | 2024-04-09 | 华为技术有限公司 | 一种卷积计算方法及装置 |
CN111262592A (zh) * | 2018-11-30 | 2020-06-09 | 展讯半导体(南京)有限公司 | 序列的循环移位装置及方法、存储介质 |
CN111262592B (zh) * | 2018-11-30 | 2022-10-25 | 展讯半导体(南京)有限公司 | 序列的循环移位装置及方法、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103049716B (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112106078A (zh) | 神经网络处理元件 | |
CN103294446B (zh) | 一种定点乘累加器 | |
Duan et al. | Floating-point mixed-radix FFT core generation for FPGA and comparison with GPU and CPU | |
WO2019224554A1 (en) | Processing matrix vector multiplication | |
CN103870438B (zh) | 一种利用数论变换计算循环卷积的电路结构 | |
CN105426345A (zh) | 一种矩阵求逆运算方法 | |
CN103049716B (zh) | 基于一阶矩的卷积器 | |
CN109144469B (zh) | 流水线结构神经网络矩阵运算架构及方法 | |
CN109634558A (zh) | 可编程的混合精度运算单元 | |
Meher et al. | Low-Latency, Low-Area, and Scalable Systolic-Like Modular Multipliers for $ GF (2^{m}) $ Based on Irreducible All-One Polynomials | |
US6658441B1 (en) | Apparatus and method for recursive parallel and pipelined fast fourier transform | |
CN113313244B (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN105718424B (zh) | 一种并行快速傅立叶变换处理方法 | |
Wu et al. | High-performance architecture for the conjugate gradient solver on FPGAs | |
Amaricai | Design trade-offs in configurable FPGA architectures for k-means clustering | |
Waris et al. | AxSA: On the design of high-performance and power-efficient approximate systolic arrays for matrix multiplication | |
CN117454946A (zh) | 支持非结构化稀疏矩阵计算的张量核架构系统 | |
Zhang et al. | Pass-efficient randomized LU algorithms for computing low-rank matrix approximation | |
Chen et al. | Parallel integer polynomial multiplication | |
Roziner et al. | Fast Fourier transforms over finite groups by multiprocessor systems | |
CN1205583C (zh) | 可以减小误差的平方根计算器 | |
WO2022016261A1 (en) | System and method for accelerating training of deep learning networks | |
CN103942027A (zh) | 一种可重构的快速并行乘法器 | |
Groszewski et al. | Deterministic Stochastic Computation Using Parallel Datapaths | |
RU2559771C2 (ru) | Устройство для основного деления модулярных чисел |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150722 Termination date: 20191219 |
|
CF01 | Termination of patent right due to non-payment of annual fee |