CN103870438B - 一种利用数论变换计算循环卷积的电路结构 - Google Patents
一种利用数论变换计算循环卷积的电路结构 Download PDFInfo
- Publication number
- CN103870438B CN103870438B CN201410062873.5A CN201410062873A CN103870438B CN 103870438 B CN103870438 B CN 103870438B CN 201410062873 A CN201410062873 A CN 201410062873A CN 103870438 B CN103870438 B CN 103870438B
- Authority
- CN
- China
- Prior art keywords
- data
- ram
- buffer storage
- selector
- input
- 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.)
- Active
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明属于集成电路设计技术领域,具体为一种利用数论变换计算循环卷积的电路结构。其包括输入数据缓存RAM、输出数据缓存RAM、运算RAM、计数器、主控制器、地址产生模块、蝶形运算模块和取模运算单元等。本发明中变换只需要加法(减法)及移位操作而不用乘法,从而提高了运算速度,费马数论变换(FNT)还消除了FFT带来的舍入误差,故能得到高精度的卷积,并且不需要基函数的存取,从而节省的存储空间,是一种以更小的芯片面积和更低的功耗实现快速循环卷积运算的电路结构,能够较好地应用于图像滤波和图像处理领域。
Description
技术领域
本发明属于集成电路设计技术领域,具体涉及一种新型利用数论变换计算循环卷积的电路结构。
背景技术
卷积是一种线性运算,其本质是滑动平均思想,广泛应用于图像滤波,图像处理中常见的mask运算就是卷积。另外,卷积在工程和数学中还有很多其他应用,统计学中,加权的滑动平均是一种卷积。概率论中,两个统计独立变量X与Y的和的概率密度函数是x与Y的概率密度函数的卷积。声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示。电子工程与信号处理中,任意一个线性系统的输出都可以通过将输入信号与系统函数做卷积获得,物理学中,任意一个线性系统都存在卷积。
所谓两个序列xn(n=0,1,…,N-1)和hn(n=0,1,…,N-1)的循环卷积是指:
上式中的符号<k>N表示整数k模N的最小非负剩余,也就是整数k被正整数N 除所余的非负整数。
循环卷积可用变换法实现,一般常用的变换为快速傅里叶变换(FFT)。分别计算xn和hn(n=0,1,2,…,N-1)的FFT,即Xk,Hk,将它们相乘得到yn的FFT,即Yk=Xk*Hk(k=0,1,2,…,N-1),最后将Yk进行反变换(IFFT),就得到yn,示意图如图1所示。
由图1可知,利用FFT计算长度为N的序列的循环卷积,需要两次正变换,一次拟变换和N次乘法,一个N点的FFT变换需要O(Nlog2N)次乘法。
以数论为基础的计算循环卷积的方法叫做数论变换(NTT)。特别引人关注的是NTT中有一种Fermata数变换(FNT),这样变换只需要加法(减法)及移位操作而不用乘法,从而提高了运算速度。FNT还消除了FFT带来的舍入误差,故能得到高精度的卷积,并且不需要基函数的存取,从而节省的存储空间。但是,FNT也有缺点,主要是没有明显的物理意义;序列{xn}的变换{Xk}不再是频谱,因此中间过程不能如FFT那样用于测频;在加上字长受限制,不够灵活。
数论变换(NTT)是一种有限域内的运算,它和FFT一样都是一种线性正交变换,具有FFT类似的性质,具有循环卷积特性,因此可用于计算两个序列的循环卷积,并且具有FFT一样的快速算法。但不同之处有两点,第一是以α代替FFT中的WN,由于α是一正整数,不像FFT那样要预先储存基函数WN;第二是每一步运算过程都要判断一下中间量是否超过模M,如果超过模M,就应去小于模M的同余值,以防溢出。由NTT计算序列循环卷积的过程示意图如图2所示。
对序列xn进行数论变换的公式如下:
其中变换矩阵T为:
对于费马数论变换(FNT),模M为费马数(M=2N+1),整数α为M的N阶本源单位根,N为序列xn的长度。
与快速傅里叶变换(FFT)一样,数论变换(NTT)也有快速算法,快速算法的流程图如图6所示。
这相当于FFT的按频率抽取的算法,同样可用按时间抽取的算法。用上述快速算法,可将原来所需的N2个乘法降为Nlog2N次乘法。如果α是2或者2的幂,则只需要Nlog2N次移位操作。
为了使NTT具有快速演算的效果,通常对M、N、α的要求是:
1.变换长度N必须适合FFT类型的快速演算,因而要求N是高度复合的数。当
N=2m时,就能满足这样的要求,同时,由于N表示输入采样点的个数,所以不能过小。
2.数论变换的一个特点是用一个整数α代替FFT中的WN,FFT需要大量的复乘,
而NTT只需作α的方幂的乘法。如果能选择α,使得α的幂是一种简单运算,那就能起到节省运算的目的。如果选取α为2或2的幂,这时在作2的方幂的乘法时,仅为移位操作。
3.为了便于模M的运算,当用二进制表示M时,其位数(一般称为字长)越小
越好。但M的值不能过小,以防止溢出。对于费马数论变换(FNT),M取作费马数:
M = Ft = 2b + 1,其中b=2t (t=0,1,2,…)
对于FNT,N=2b=2t+1,α=2,能满足要求,例如当t=5时,M=232+1,N=64;
可以看到变换长度N受到模M大小的限制,为了解决这一问题,可以利用多维数论变换,例如若采用二维数论变换,当M大小一样时,能实现N=2048点的数论变换。目前,模M取作费马数,是较为合适的模数。
发明内容
本发明的目的在于提供一种实现快速循环卷积运算的电路结构。
本发明利用数论变换中的费马数论变换(FNT)计算循环卷积的流程如下:在输入端的2路8位的序列xn和yn,分别经过数论变换得到对应的频域内的序列Xk和Yk,Xk与Yk相乘得到积Gk,Gk再经过数论变换逆变换即可得到序列gn,也即是序列xn和yn的循环卷积。
本发明提供一种利用数论变换计算循环卷积的电路结构,其包括输入数据缓存RAM、运算RAM、计数器、主控制器、地址产生模块、蝶形运算模块、取模运算单元和输出数据缓存RAM;其中:
输入数据缓存RAM,对输入数据进行缓存;
计数器,在1-N之间循环计数,N为变换序列长度,其计数输出作为主控制器的输入;
主控制器,根据计数器的值控制地址产生模块,以及产生蝶形运算单元移位数的值和符号;
地址产生模块,输出读写运算RAM的地址,以及判断是不是最后一位写地址,并将判断结果输出到输出数据缓存RAM;
运算RAM,用于存取由蝶形运算单元计算得到的中间结果;
蝶形运算模块,分别从运算RAM读取中间运算结果、从输入数据缓存RAM读取输入序列数据和从主控制读取移位控制信号,进行蝶形运算;
取模运算模块,将蝶形运算模块得到的数据对费马数进行取模,并将结果输出到输出数据缓存RAM;
输出数据缓存RAM,对输出数据进行缓存;其中:
所述蝶形运算单元中包含逻辑移位、取反、选择器、加减控制逻辑和加减法器;其中:
逻辑移位,用于进行逻辑移位操作,移位数据为输入数据缓存RAM模块输出的序列,移位量为主控制器输入的移位控制信号;
取反,对移位后的数据乘以-1;
选择器,对移位输出和移位输出取反后的数据进行选择,选择端的控制信号为移位控制信号的最高位;
加减控制逻辑,用来控制加减法器进行加法或减法操作;
加减法器,进行加减法运算;
由输入数据缓存RAM输入的数据yn先经过移位操作,具体移位数值由从主控制器输入的数据shift进行控制;然后移位后的数据分为2路,一路不进行任何操作,另一路进行取反操作;之后2路数据经过选择器,从主控制器输入的信号控制选择器进行数据选择;最后,选择器的输出与从运算RAM读入的数据进行相加得到输出。
本发明中,所述取模运算单元中包括选择器、选择器控制逻辑和减法器;其中:
选择器,对两个输入数据选择;
选择器控制逻辑,产生选择器的选择端信号;
减法器,进行减法运算;将输入数据In的高位数据In[63:32]减去低位数据In[31:0],再减去符号位In[64:64],即可得到输入数据In[64:0]对模M=Ft=2^32+1的取模运算结果。
本发明中利用费马数论变换(FNT)计算循环卷积的整体电路结构示意图如图3所示;输入数据先经过输入数据缓存RAM进行缓存,主控制器根据计数器的值通知地址产生模块产生对应的地址,这些地址分别输入到输入数据缓存RAM、运算RAM产生对应的运算数据,这些数据被输入到蝶形运算模块参与运算,根据条件分别将蝶形单元的运算结果输出到运算RAM或取模运算单元,取模运算单元计算得到的结果输出到输出数据缓存RAM,输出数据缓存RAM则在地址产生模块的控制下输出最终的计算结果。
本发明中,蝶形运算单元不需要乘法器,有3路输入信号,从运算RAM输入的序列xn;从输入数据缓存RAM输入的序列yn;从主控制器输入的移位控制信号shift。
本发明的有益效果在于:其变换只需要加法(减法)及移位操作而不用乘法,从而提高了运算速度,费马数论变换(FNT)还消除了FFT带来的舍入误差,故能得到高精度的卷积,并且不需要基函数的存取,从而节省的存储空间,是一种以更小的芯片面积和更低的功耗实现快速循环卷积运算的电路结构,能够较好地应用于图像滤波和图像处理领域。
附图说明
图1利用数论变换(FTT)计算循环卷积的流程图。
图2利用数论变换(NTT)计算循环卷积的流程图。
图3利用费马数论变换(FNT)计算循环卷积的整体电路结构示意图。
图4 蝶形运算单元内部结构图。
图5 取模运算单元内部结构图。
图6 NTT快速算法流图。
具体实施方式
利用NTT计算循环卷积的整体流程图如图2所示。
对于费马数论变换电路模块,有一个8bits的数据输入端口,一个32bits的数据输出端口。在输入端口,8bits的输入数据先经过输入数据缓存RAM缓存,然后在时钟信号的控制下被送入蝶形运算单元参与运算;本发明实现的是N(N=2k,k=1,2,3...)点循环卷积的计算,因此计数器的宽度为N bits,在0-2N之间循环计数;主控制器根据计数器的值控制地址产生模块,以及产生蝶形运算单元移位数的值和符号;地址产生模块输出读写运算RAM的地址,以及判断是不是最后一位写地址,并将判断结果输出到输出数据缓存RAM;运算RAM用于存取由蝶形单元计算得到的中间结果;取模运算单元从蝶形运算单元得到65bits的数据,然后将数据对费马数F=2^32+1取模,并将结果输出到输出数据RAM, 输出数据缓存RAM则在地址产生模块的控制下输出最终的计算结果。
如图4所示,在蝶形运算单元,有3路输入信号,从运算RAM输入的中间结果xn为65bits;从输入数据RAM输入的数据yn为8bits;从主控制器输入的移位控制信号shift为6bits,其中第5bits用于控制移位数量,第6bit是符号位。由输入数据RAM输入的数据线经过移位操作,具体移位数值由从主控制器输入的数据进行控制。然后移位后的数据分为2路,一路不进行任何操作,另一路进行取反操作,然后2路数据经过选择器,从主控制器输入的信号控制选择器进行数据选择。最后,选择器的输出与从运算RAM读入的数据进行相加得到输出。
如图5所示,在取模运算单元,输入数据In的高位数据In[63:32]减去低位数据In[31:0],再减去符号位In[64:64],即可得到输入数据In[64:0]对模M=Ft=2^32+1的取模运算结果。
Claims (1)
1.一种利用数论变换计算循环卷积的电路结构,其特征在于:其包括输入数据缓存RAM、运算RAM、计数器、主控制器、地址产生模块、蝶形运算模块、取模运算单元和输出数据缓存RAM;其中:
输入数据缓存RAM,对输入数据进行缓存;
计数器,在1-N之间循环计数,N为变换序列长度,其计数输出作为主控制器的输入;
主控制器,根据计数器的值控制地址产生模块,以及产生蝶形运算单元移位数的值和符号;
地址产生模块,输出读写运算RAM的地址,以及判断是不是最后一位写地址,并将判断结果输出到输出数据缓存RAM;
运算RAM,用于存取由蝶形运算单元计算得到的中间结果;
蝶形运算模块,分别从运算RAM读取中间运算结果、从输入数据缓存RAM读取输入序列数据和从主控制读取移位控制信号,进行蝶形运算;
取模运算模块,将蝶形运算模块得到的数据对费马数进行取模,并将结果输出到输出数据缓存RAM;
输出数据缓存RAM,对输出数据进行缓存;其中:
所述蝶形运算单元中包含逻辑移位、取反、选择器、加减控制逻辑和加减法器;其中:
逻辑移位,用于进行逻辑移位操作,移位数据为输入数据缓存RAM模块输出的序列,移位量为主控制器输入的移位控制信号;
取反,对移位后的数据乘以-1;
选择器,对移位输出和移位输出取反后的数据进行选择,选择端的控制信号为移位控制信号的最高位;
加减控制逻辑,用来控制加减法器进行加法或减法操作;
加减法器,进行加减法运算;
由输入数据缓存RAM输入的数据yn先经过移位操作,具体移位数值由从主控制器输入的数据shift进行控制;然后移位后的数据分为2路,一路不进行任何操作,另一路进行取反操作;之后2路数据经过选择器,从主控制器输入的信号控制选择器进行数据选择;最后,选择器的输出与从运算RAM读入的数据进行相加得到输出;
所述取模运算单元中包括选择器、选择器控制逻辑和减法器;其中:
选择器,对两个输入数据选择;
选择器控制逻辑,产生选择器的选择端信号;
减法器,进行减法运算;将输入数据In的高位数据In[63:32]减去低位数据In[31:0],再减去符号位In[64:64],即可得到输入数据In[64:0]对模M=Ft=2^32+1的取模运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410062873.5A CN103870438B (zh) | 2014-02-25 | 2014-02-25 | 一种利用数论变换计算循环卷积的电路结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410062873.5A CN103870438B (zh) | 2014-02-25 | 2014-02-25 | 一种利用数论变换计算循环卷积的电路结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870438A CN103870438A (zh) | 2014-06-18 |
CN103870438B true CN103870438B (zh) | 2016-08-17 |
Family
ID=50908982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410062873.5A Active CN103870438B (zh) | 2014-02-25 | 2014-02-25 | 一种利用数论变换计算循环卷积的电路结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870438B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205519B (zh) * | 2016-12-20 | 2022-01-25 | 上海寒武纪信息科技有限公司 | 矩阵乘加运算装置和方法、处理装置、芯片、电子装置 |
CN108229666A (zh) * | 2017-11-03 | 2018-06-29 | 东南大学 | 基于费马数变换的卷积神经网络硬件加速架构 |
CN109886943A (zh) * | 2019-01-25 | 2019-06-14 | 淮阴师范学院 | 一种基于数论变换的图像聚焦测度实现方法 |
US20210073316A1 (en) * | 2019-09-09 | 2021-03-11 | Facebook, Inc. | Number-theoretic transform hardware |
CN111221501B (zh) * | 2020-01-07 | 2021-11-26 | 常熟理工学院 | 一种用于大数乘法的数论变换电路 |
CN111694542B (zh) * | 2020-05-06 | 2021-12-07 | 常熟理工学院 | 一种用于数论变换乘法的基16运算电路 |
CN111694541B (zh) * | 2020-05-06 | 2023-04-21 | 常熟理工学院 | 一种用于数论变换乘法的基32运算电路 |
CN111694540B (zh) * | 2020-05-06 | 2023-04-21 | 常熟理工学院 | 一种用于数论变换乘法的基64运算电路 |
CN111737638A (zh) * | 2020-06-11 | 2020-10-02 | Oppo广东移动通信有限公司 | 基于傅里叶变换的数据处理方法及相关装置 |
CN113608717B (zh) * | 2021-10-11 | 2022-01-04 | 苏州浪潮智能科技有限公司 | 一种数论变换计算电路、方法及计算机设备 |
CN114185514B (zh) * | 2021-12-13 | 2024-03-08 | 合肥工业大学 | 一种基于费马模数的多项式乘法器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023519A (zh) * | 2012-10-26 | 2013-04-03 | 中国兵器科学研究院 | 一种费马数变换的方法和装置 |
-
2014
- 2014-02-25 CN CN201410062873.5A patent/CN103870438B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023519A (zh) * | 2012-10-26 | 2013-04-03 | 中国兵器科学研究院 | 一种费马数变换的方法和装置 |
Non-Patent Citations (3)
Title |
---|
"Implementation of cyclic convolution based on FNT";A.Laxman等;《IJRET:International Journal of Research in Engineering and Technology》;20121130;第1卷(第3期);第238-243页 * |
"一种可参数化快速FNT的FPGA实现";陶涛等;《微电子学与计算机》;20041130;第21卷(第10期);第165-168页 * |
"一种用FNT变换完成大点数循环卷积IP核的VLSI实现";李新兵等;《微电子学与计算机》;20041231;第21卷(第11期);第158-160页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103870438A (zh) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870438B (zh) | 一种利用数论变换计算循环卷积的电路结构 | |
CN101782893B (zh) | 可重构数据处理平台 | |
US6366936B1 (en) | Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm | |
CN101847986B (zh) | 一种实现fft/ifft变换的电路及方法 | |
CN103927290A (zh) | 一种任意阶下三角复矩阵求逆运算方法 | |
US8805914B2 (en) | Method and apparatus for performing numerical calculations | |
CN109977347B (zh) | 一种支持多模式配置的可重构fft处理器 | |
CN103678257A (zh) | 基于fpga的正定矩阵浮点求逆器及其求逆方法 | |
CN110647719B (zh) | 基于fpga的三维fft计算装置 | |
CN102298570A (zh) | 一种点数可变的混合基 fft/ifft实现装置及其方法 | |
CN101847137B (zh) | 一种实现基2fft计算的fft处理器 | |
CN103488459B (zh) | 一种改进的高基cordic方法及基于其的复数乘法运算单元 | |
CN111723336B (zh) | 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 | |
WO2018027706A1 (zh) | Fft处理器及运算方法 | |
US20020178195A1 (en) | Memory address generating apparatus and method | |
Hamilton et al. | Large stencil operations for GPU-based 3-D acoustics simulations | |
US9262378B2 (en) | Methods and devices for multi-granularity parallel FFT butterfly computation | |
Meher | New approach to LUT implementation and accumulation for memory-based multiplication | |
CN114996638A (zh) | 一种顺序架构的可配置快速傅里叶变换电路 | |
CN103034621B (zh) | 基2×k并行fft架构的地址映射方法及系统 | |
CN103699355B (zh) | 一种变阶流水串行乘累加器 | |
CN102004720B (zh) | 可变长快速傅立叶变换电路及实现方法 | |
CN103049716B (zh) | 基于一阶矩的卷积器 | |
JP2008217359A (ja) | 高速フーリエ変換装置及び高速フーリエ変換処理方法 | |
CN108008665B (zh) | 基于单片fpga的大规模圆阵实时波束形成器及波束形成计算方法 |
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 |