《一种利用数论变换计算循环卷积的电路结构.pdf》由会员分享,可在线阅读,更多相关《一种利用数论变换计算循环卷积的电路结构.pdf(9页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103870438 A (43)申请公布日 2014.06.18 CN 103870438 A (21)申请号 201410062873.5 (22)申请日 2014.02.25 G06F 17/14(2006.01) G06F 7/72(2006.01) (71)申请人 复旦大学 地址 200433 上海市杨浦区邯郸路 220 号 (72)发明人 韩军 杨春峰 曾晓洋 (74)专利代理机构 上海正旦专利代理有限公司 31200 代理人 陆飞 王洁平 (54) 发明名称 一种利用数论变换计算循环卷积的电路结构 (57) 摘要 本发明属于集成电路设计技术领域, 具体为 。
2、一种利用数论变换计算循环卷积的电路结构。其 包括输入数据缓存 RAM、 输出数据缓存 RAM、 运算 RAM、 计数器、 主控制器、 地址产生模块、 蝶形运算 模块和取模运算单元等。本发明中变换只需要加 法 (减法) 及移位操作而不用乘法, 从而提高了运 算速度, 费马数论变换 (FNT) 还消除了 FFT 带来的 舍入误差, 故能得到高精度的卷积, 并且不需要基 函数的存取, 从而节省的存储空间, 是一种以更小 的芯片面积和更低的功耗实现快速循环卷积运算 的电路结构, 能够较好地应用于图像滤波和图像 处理领域。 (51)Int.Cl. 权利要求书 1 页 说明书 4 页 附图 3 页 (19。
3、)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书4页 附图3页 (10)申请公布号 CN 103870438 A CN 103870438 A 1/1 页 2 1. 一种利用数论变换计算循环卷积的电路结构, 其特征在于 : 其包括输入数据缓存 RAM、 运算 RAM、 计数器、 主控制器、 地址产生模块、 蝶形运算模块、 取模运算单元和输出数据 缓存 RAM ; 其中 : 输入数据缓存 RAM, 对输入数据进行缓存 ; 计数器, 在 1-N 之间循环计数, N 为变换序列长度, 其计数输出作为主控制器的输入 ; 主控制器, 根据计数器的值控制地址产生模块, 以及产生。
4、蝶形运算单元移位数的值和 符号 ; 地址产生模块, 输出读写运算 RAM 的地址, 以及判断是不是最后一位写地址, 并将判断 结果输出到输出数据缓存 RAM ; 运算 RAM, 用于存取由蝶形运算单元计算得到的中间结果 ; 蝶形运算模块, 分别从运算RAM读取中间运算结果、 从输入数据缓存RAM读取输入序列 数据和从主控制读取移位控制信号, 进行蝶形运算 ; 取模运算模块, 将蝶形运算模块得到的数据对费马数进行取模, 并将结果输出到输出 数据缓存 RAM ; 输出数据缓存 RAM, 对输出数据进行缓存 ; 其中 : 所述蝶形运算单元中包含逻辑移位、 取反、 选择器、 加减控制逻辑和加减法器 ;。
5、 其中 : 逻辑移位, 用于进行逻辑移位操作, 移位数据为输入数据缓存 RAM 模块输出的序列, 移 位量为主控制器输入的移位控制信号 ; 取反, 对移位后的数据乘以 -1 ; 选择器, 对移位输出和移位输出取反后的数据进行选择, 选择端的控制信号为移位控 制信号的最高位 ; 加减控制逻辑, 用来控制加减法器进行加法或减法操作 ; 加减法器, 进行加减法运算 ; 由输入数据缓存 RAM 输入的数据 yn 先经过移位操作, 具体移位数值由从主控制器输 入的数据 shift 进行控制 ; 然后移位后的数据分为 2 路, 一路不进行任何操作, 另一路进行 取反操作 ; 之后 2 路数据经过选择器, 。
6、从主控制器输入的信号控制选择器进行数据选择 ; 最 后, 选择器的输出与从运算 RAM 读入的数据进行相加得到输出。 2. 根据权利要求 1 所述的电路结构, 其特征在于 : 所述取模运算单元中包括选择器、 选 择器控制逻辑和减法器 ; 其中 : 选择器, 对两个输入数据选择 ; 选择器控制逻辑, 产生选择器的选择端信号 ; 减法器, 进行减法运算 ; 将输入数据 In 的高位数据 In63:32 减去低位数据 In31:0, 再减去符号位 In64:64, 即可得到输入数据 In64:0 对模 M=Ft=232+1 的取 模运算结果。 权 利 要 求 书 CN 103870438 A 2 1。
7、/4 页 3 一种利用数论变换计算循环卷积的电路结构 技术领域 0001 本发明属于集成电路设计技术领域, 具体涉及一种新型利用数论变换计算循环卷 积的电路结构。 背景技术 0002 卷积是一种线性运算, 其本质是滑动平均思想, 广泛应用于图像滤波, 图像处理中 常见的 mask 运算就是卷积。另外, 卷积在工程和数学中还有很多其他应用, 统计学中, 加权 的滑动平均是一种卷积。概率论中, 两个统计独立变量 X 与 Y 的和的概率密度函数是 x 与 Y 的概率密度函数的卷积。声学中, 回声可以用源声与一个反映各种反射效应的函数的卷积 表示。电子工程与信号处理中, 任意一个线性系统的输出都可以通。
8、过将输入信号与系统函 数做卷积获得, 物理学中, 任意一个线性系统都存在卷积。 0003 所谓两个序列 xn(n=0,1,N-1) 和 hn(n=0,1,N-1) 的循环卷积是指 : 上式中的符号 N表示整数 k 模 N 的最小非负剩余, 也就是整数 k 被正整数 N 除所余 的非负整数。 0004 循环卷积可用变换法实现, 一般常用的变换为快速傅里叶变换 (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) , 就得。
9、到 yn, 示意图如图 1 所示。 0005 由图 1 可知, 利用 FFT 计算长度为 N 的序列的循环卷积, 需要两次正变换, 一次拟 变换和 N 次乘法, 一个 N 点的 FFT 变换需要 O(Nlog2N) 次乘法。 0006 以数论为基础的计算循环卷积的方法叫做数论变换 (NTT) 。特别引人关注的是 NTT 中有一种 Fermata 数变换 (FNT) , 这样变换只需要加法 (减法) 及移位操作而不用乘法, 从而提高了运算速度。FNT 还消除了 FFT 带来的舍入误差, 故能得到高精度的卷积, 并且不 需要基函数的存取, 从而节省的存储空间。但是, FNT 也有缺点, 主要是没有。
10、明显的物理意 义 ; 序列 xn 的变换 Xk 不再是频谱, 因此中间过程不能如 FFT 那样用于测频 ; 在加上字 长受限制, 不够灵活。 0007 数论变换 (NTT) 是一种有限域内的运算, 它和 FFT 一样都是一种线性正交变换, 具有 FFT 类似的性质, 具有循环卷积特性, 因此可用于计算两个序列的循环卷积, 并且具有 FFT 一样的快速算法。但不同之处有两点, 第一是以 代替 FFT 中的 WN, 由于 是一正整 数, 不像 FFT 那样要预先储存基函数 WN; 第二是每一步运算过程都要判断一下中间量是否 超过模 M, 如果超过模 M, 就应去小于模 M 的同余值, 以防溢出。由。
11、 NTT 计算序列循环卷积的 过程示意图如图 2 所示。 说 明 书 CN 103870438 A 3 2/4 页 4 0008 对序列 xn 进行数论变换的公式如下 : 其中变换矩阵 T 为 : 对于费马数论变换 (FNT) , 模 M 为费马数 (M=2N+1) , 整数 为 M 的 N 阶本源单位根, N 为序列 xn 的长度。 0009 与快速傅里叶变换 (FFT) 一样, 数论变换 (NTT) 也有快速算法, 快速算法的流程图 如图 6 所示。 0010 这相当于 FFT 的按频率抽取的算法, 同样可用按时间抽取的算法。用上述快速算 法, 可将原来所需的N2个乘法降为Nlog2N次乘。
12、法。 如果是2或者2的幂, 则只需要Nlog2N 次移位操作。 0011 为了使 NTT 具有快速演算的效果, 通常对 M、 N、 的要求是 : 1.变换长度N必须适合FFT类型的快速演算, 因而要求N是高度复合的数。 当N=2m时, 就能满足这样的要求, 同时, 由于 N 表示输入采样点的个数, 所以不能过小。 0012 2. 数论变换的一个特点是用一个整数 代替 FFT 中的 WN, FFT 需要大量的复乘, 而 NTT 只需作 的方幂的乘法。如果能选择 , 使得 的幂是一种简单运算, 那就能起到 节省运算的目的。如果选取 为 2 或 2 的幂, 这时在作 2 的方幂的乘法时, 仅为移位操。
13、作。 0013 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 取作费马数, 是较为合适的。
14、模数。 发明内容 0014 本发明的目的在于提供一种实现快速循环卷积运算的电路结构。 0015 本发明利用数论变换中的费马数论变换 (FNT) 计算循环卷积的流程如下 : 在输入 说 明 书 CN 103870438 A 4 3/4 页 5 端的 2 路 8 位的序列 xn 和 yn, 分别经过数论变换得到对应的频域内的序列 Xk 和 Yk, Xk 与 Yk 相乘得到积 Gk,Gk 再经过数论变换逆变换即可得到序列 gn, 也即是序列 xn 和 yn 的循环 卷积。 0016 本发明提供一种利用数论变换计算循环卷积的电路结构, 其包括输入数据缓存 RAM、 运算 RAM、 计数器、 主控制器、。
15、 地址产生模块、 蝶形运算模块、 取模运算单元和输出数据 缓存 RAM ; 其中 : 输入数据缓存 RAM, 对输入数据进行缓存 ; 计数器, 在 1-N 之间循环计数, N 为变换序列长度, 其计数输出作为主控制器的输入 ; 主控制器, 根据计数器的值控制地址产生模块, 以及产生蝶形运算单元移位数的值和 符号 ; 地址产生模块, 输出读写运算 RAM 的地址, 以及判断是不是最后一位写地址, 并将判断 结果输出到输出数据缓存 RAM ; 运算 RAM, 用于存取由蝶形运算单元计算得到的中间结果 ; 蝶形运算模块, 分别从运算RAM读取中间运算结果、 从输入数据缓存RAM读取输入序列 数据和从。
16、主控制读取移位控制信号, 进行蝶形运算 ; 取模运算模块, 将蝶形运算模块得到的数据对费马数进行取模, 并将结果输出到输出 数据缓存 RAM ; 输出数据缓存 RAM, 对输出数据进行缓存 ; 其中 : 所述蝶形运算单元中包含逻辑移位、 取反、 选择器、 加减控制逻辑和加减法器 ; 其中 : 逻辑移位, 用于进行逻辑移位操作, 移位数据为输入数据缓存 RAM 模块输出的序列, 移 位量为主控制器输入的移位控制信号 ; 取反, 对移位后的数据乘以 -1 ; 选择器, 对移位输出和移位输出取反后的数据进行选择, 选择端的控制信号为移位控 制信号的最高位 ; 加减控制逻辑, 用来控制加减法器进行加法。
17、或减法操作 ; 加减法器, 进行加减法运算 ; 由输入数据缓存 RAM 输入的数据 yn 先经过移位操作, 具体移位数值由从主控制器输 入的数据 shift 进行控制 ; 然后移位后的数据分为 2 路, 一路不进行任何操作, 另一路进行 取反操作 ; 之后 2 路数据经过选择器, 从主控制器输入的信号控制选择器进行数据选择 ; 最 后, 选择器的输出与从运算 RAM 读入的数据进行相加得到输出。 0017 本发明中, 所述取模运算单元中包括选择器、 选择器控制逻辑和减法器 ; 其中 : 选择器, 对两个输入数据选择 ; 选择器控制逻辑, 产生选择器的选择端信号 ; 减法器, 进行减法运算 ; 。
18、将输入数据 In 的高位数据 In63:32 减去低位数据 In31:0, 再减去符号位 In64:64, 即可得到输入数据 In64:0 对模 M=Ft=232+1 的取 模运算结果。 0018 本发明中利用费马数论变换 (FNT) 计算循环卷积的整体电路结构示意图如图 3 所 示 ; 输入数据先经过输入数据缓存 RAM 进行缓存, 主控制器根据计数器的值通知地址产生 模块产生对应的地址, 这些地址分别输入到输入数据缓存 RAM、 运算 RAM 产生对应的运算数 说 明 书 CN 103870438 A 5 4/4 页 6 据, 这些数据被输入到蝶形运算模块参与运算, 根据条件分别将蝶形单元。
19、的运算结果输出 到运算 RAM 或取模运算单元, 取模运算单元计算得到的结果输出到输出数据缓存 RAM, 输出 数据缓存 RAM 则在地址产生模块的控制下输出最终的计算结果。 0019 本发明中, 蝶形运算单元不需要乘法器, 有 3 路输入信号, 从运算 RAM 输入的序列 xn ; 从输入数据缓存 RAM 输入的序列 yn ; 从主控制器输入的移位控制信号 shift。 0020 本发明的有益效果在于 : 其变换只需要加法 (减法) 及移位操作而不用乘法, 从而 提高了运算速度, 费马数论变换 (FNT) 还消除了 FFT 带来的舍入误差, 故能得到高精度的卷 积, 并且不需要基函数的存取,。
20、 从而节省的存储空间, 是一种以更小的芯片面积和更低的功 耗实现快速循环卷积运算的电路结构, 能够较好地应用于图像滤波和图像处理领域。 附图说明 0021 图 1 利用数论变换 (FTT) 计算循环卷积的流程图。 0022 图 2 利用数论变换 (NTT) 计算循环卷积的流程图。 0023 图 3 利用费马数论变换 (FNT) 计算循环卷积的整体电路结构示意图。 0024 图 4 蝶形运算单元内部结构图。 0025 图 5 取模运算单元内部结构图。 0026 图 6 NTT 快速算法流图。 具体实施方式 0027 利用 NTT 计算循环卷积的整体流程图如图 2 所示。 0028 对于费马数论变。
21、换电路模块, 有一个 8bits 的数据输入端口, 一个 32bits 的数据 输出端口。在输入端口, 8bits 的输入数据先经过输入数据缓存 RAM 缓存, 然后在时钟信号 的控制下被送入蝶形运算单元参与运算 ; 本发明实现的是 N(N=2k,k=1,2,3.) 点循环卷 积的计算, 因此计数器的宽度为 N bits, 在 0-2N之间循环计数 ; 主控制器根据计数器的值 控制地址产生模块, 以及产生蝶形运算单元移位数的值和符号 ; 地址产生模块输出读写运 算 RAM 的地址, 以及判断是不是最后一位写地址, 并将判断结果输出到输出数据缓存 RAM ; 运算 RAM 用于存取由蝶形单元计算。
22、得到的中间结果 ; 取模运算单元从蝶形运算单元得到 65bits 的数据, 然后将数据对费马数 F=232+1 取模, 并将结果输出到输出数据 RAM, 输出 数据缓存 RAM 则在地址产生模块的控制下输出最终的计算结果。 0029 如图 4 所示, 在蝶形运算单元, 有 3 路输入信号, 从运算 RAM 输入的中间结果 xn 为 65bits ; 从输入数据RAM输入的数据yn为8bits ; 从主控制器输入的移位控制信号shift为 6bits, 其中第 5bits 用于控制移位数量, 第 6bit 是符号位。由输入数据 RAM 输入的数据线 经过移位操作, 具体移位数值由从主控制器输入的。
23、数据进行控制。然后移位后的数据分为 2 路, 一路不进行任何操作, 另一路进行取反操作, 然后 2 路数据经过选择器, 从主控制器输 入的信号控制选择器进行数据选择。最后, 选择器的输出与从运算 RAM 读入的数据进行相 加得到输出。 0030 如图 5 所示, 在取模运算单元, 输入数据 In 的高位数据 In63:32 减去低位数据 In31:0, 再减去符号位 In64:64, 即可得到输入数据 In64:0 对模 M=Ft=232+1 的取 模运算结果。 说 明 书 CN 103870438 A 6 1/3 页 7 图 1 图 2 图 3 说 明 书 附 图 CN 103870438 A 7 2/3 页 8 图 4 图 5 说 明 书 附 图 CN 103870438 A 8 3/3 页 9 图 6 说 明 书 附 图 CN 103870438 A 9 。