一种用于数论变换乘法的基16运算电路制造技术

技术编号:25707901 阅读:35 留言:0更新日期:2020-09-23 02:55
本发明专利技术公开了一种用于数论变换乘法的基16运算电路,包括16个操作数生成模块,对16个输入数据的每一个进行高位填零后以12比特为一个字分割为6个字,合并输出1路16个96比特操作数、12路6个192比特操作数3路8个192比特操作数,每个操作数生成模块连接一个操作数模加模块,对每个操作数生成模块的输出的操作数进行模加;模p模块,将每个操作数模加模块输出的数据对质数p取模输出,质数p=2

【技术实现步骤摘要】
一种用于数论变换乘法的基16运算电路
本专利技术涉及一种运算电路,特别是涉及一种用于数论变换乘法的基16运算电路。
技术介绍
大整数乘法除了传统的长乘法,还有-Strassen算法。-Strassen算法的核心思想是:对两个长度为n的大整数分别做一次环上的FFT,转换为频域分布;对两个整数的频域分布做点乘,得到乘积的频域分布;对乘积的频域分布做一次环上的IFFT,由此得到乘积。使用数论变换而不是离散傅立叶变换,可以通过使用模块化算术而不是浮点算术来避免舍入误差问题。数论变换乘法特指-Strassen算法中使用数论变换的乘法。数论变换和逆数论变换作为数论变换乘法中的运算核心,占据了NTT乘法中90%以上的运算量和运算时间,优化数论变换的速度、面积和功耗,对于NTT乘法的整体性能,具有关键性的影响。一个1048576点的数论变换可以被分解成5级基16运算单元和旋转因子乘法的运算。其中旋转因子的计算可以事先计算好并存于ROM中,需要使用时直接读取即可。基16运算的计算量占数论变换的90%以上,它的优化对数论变换的效率至关重要。大整数乘法器FPGA设计与实现,谢星等,电子与信息学报,2019年。该论文描述了一种基于-Strassen算法的大整数乘法器硬件架构。论文将65536点的数论变换,分解成64点与1024点的形式,1024点数论变换使用2级基32运算串行构建的结构。其基32运算包括32个移位单元和树形大数求和处理单元。论文所采用的“0”填充的方式,使得每个树形大数求和处理单元,需要处理32个192位的数据,整个基32运算需要处理32*32=1024个操作数。该基32运算电路效率不够高,导致电路实现后所需的功耗和资源比较大。
技术实现思路
针对上述现有技术的缺陷,本专利技术提供了一种用于数论变换乘法的基16运算电路,解决基16运算电路功耗及资源开销大的问题。本专利技术技术方案如下:一种用于数论变换乘法的基16运算电路,包括:操作数生成模块,设有16个,16个操作数生成模块编号为Xk,k=0,1,2,...,15,每个所述操作数生成模块包括分割电路、合并电路和填充零电路,所述分割电路对16个输入数据的每一个进行高位填零后以12比特为一个字分割为6个字,分割后的输入数据为xn,m,0≤n<16,0≤m<6,所述合并电路将所述分割为16×6个字的输入数据形成操作数输出,16个所述输出操作数生成模块的所述分割电路中1个输出为16个96比特操作数、12个输出为6个192比特操作数以及3个输出为8个192比特操作数输出,所述填充零电路将所述合并电路输出操作数时的空位填入“0”;操作数模加模块,对每个所述操作数生成模块的输出的操作数进行模加;以及,模p模块,实现将每个所述操作数模加模块输出的数据对质数p取模后输出,所述质数p=264-232+1。进一步地,所述输出为16个96比特操作数的操作数生成模块编号为X0,每个96比特操作数的后6个字为输入的数据,前2个字被分配为零。进一步地,所述输出为6个192比特操作数的操作数生成模块编号为Xk,k为奇数,每个操作数OPm由32个不同的输入数据xn,m,0≤n<16,使用相同的字索引m,0≤m<6合并而成,xn,m的最低位在OPm中的位置,是由12×(m+nk)(mod192)计算所得。进一步地,所述输出为8个192比特操作数的操作数生成模块编号为X4、X8和X12,8个操作数分为4组,每组2个操作数,OP0和OP1是一组,OP2和OP3是一组,以此类推,每组内的操作数OP2j和OP2j+1由24个不同的输入数据xn,m,4j≤n≤4j+3,0≤m<6合并而成,xn,m的最低位在OP2j和OP2j+1中的位置,是由12×(m+nk)(mod192)计算所得,xn,m优先置于OP2j中,如OP2j中该位置已经被占用,则置于OP2j+1中对应的位置。进一步地,所述输出为6个192比特操作数的操作数生成模块编号为除X0、X4、X8和X16外的Xk,k为偶数,6个操作数分为2组,OP0至OP2是一组,OP3至OP5是一组,每组内的操作数OP3j至OP3j+2由48个不同的输入数据xn,m,8j≤n≤8j+7,0≤m<6合并而成,xn,m的最低位在OP3j至OP3j+2中的位置,是由12×(m+nk)(mod192)计算所得,xn,m以2个字为周期合并操作数,优先置于OP3j至OP3j+2中索引号较小的OP中。本专利技术所提供的技术方案的优点在于:利用操作数移位后的“零填充”的空位,合并数论变换乘法中基16运算的操作数,将操作数从现有技术的256个合并到112个,大幅减小了计算开销,提高了基16运算的计算效率。附图说明图1为本专利技术用于数论变换乘法的基16运算电路的总体结构示意图。图2为操作数生成模块中分割电路对输入数据填充零分割方法示意图。图3为操作数生成模块中分割电路示意图。图4为X0操作数生成模块的合并电路得到的输出数据示意图。图5为X0操作数生成模块的合并电路示意图。图6为X1操作数生成模块的合并电路合并后的操作数。图7为X1操作数生成模块中0号操作数OP0的合并电路。图8为X3操作数生成模块的合并电路合并后的操作数。图9为X4操作数生成模块的合并电路合并后的操作数。图10为X2操作数生成模块的合并电路合并后的操作数。图11为16操作数模加模块的电路示意图。图12为6操作数模加模块的电路示意图。图13为8操作数模加模块的电路示意图。具体实施方式下面结合实施例对本专利技术作进一步说明,应理解这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围,在阅读了本专利技术之后,本领域技术人员对本专利技术的各种等同形式的修改均落于本申请所附权利要求所限定的范围内。基16运算的公式如下其中,0≤k<16,p是质数,W16是第16个单位根。在质数p为Solinas质数,p=264-232+1。该质数支持高效的取模操作:2192modp=1,296modp=-1,264modp=232-1。利用该质数计算得到的单位根W16=212是2的幂次方的特性,可以将以上的乘加运算,方便地转换为移位和模加运算,降低数论变换的计算复杂性。由此,基16运算可以写成将每个xn以12比特为一个基本单位,分成6个字,称为xn,m,0≤m<6。xn可以表示为其中m表示第m个字,xn的数据宽度是64比特,xn,m的数据宽度是12比特,xn,5的有效数据位是4比特。将输入数据分割后,基16运算可以写成以下公式,利用“0填充”可以合并移位后的操作数,减少模加的运算操作数。请结合图1所示,本实施例涉及的一种用于数论变换乘法的基16运算电路,包括X0至X15共16个操作数生成模块、操作数模加模块和模p模块,其中操作数模加模块根据输入操作数的数量不同分为16操作数模加模本文档来自技高网
...

【技术保护点】
1.一种用于数论变换乘法的基16运算电路,其特征在于,操作数生成模块,设有16个,16个操作数生成模块编号为Xk,k=0,1,2,...,15,每个所述操作数生成模块包括分割电路、合并电路和填充零电路,所述分割电路对16个输入数据的每一个进行高位填零后以12比特为一个字分割为6个字,分割后的输入数据为x

【技术特征摘要】
1.一种用于数论变换乘法的基16运算电路,其特征在于,操作数生成模块,设有16个,16个操作数生成模块编号为Xk,k=0,1,2,...,15,每个所述操作数生成模块包括分割电路、合并电路和填充零电路,所述分割电路对16个输入数据的每一个进行高位填零后以12比特为一个字分割为6个字,分割后的输入数据为xn,m,0≤n<16,0≤m<6,所述合并电路将所述分割为16×6个字的输入数据形成操作数输出,16个所述输出操作数生成模块的所述分割电路中1个输出为16个96比特操作数、12个输出为6个192比特操作数以及3个输出为8个192比特操作数输出,所述填充零电路将所述合并电路输出操作数时的空位填入“0”;
操作数模加模块,对每个所述操作数生成模块的输出的操作数进行模加;
以及,
模p模块,实现将每个所述操作数模加模块输出的数据对质数p取模后输出,所述质数p=264-232+1。


2.根据权利要求1所述的用于数论变换乘法的基16运算电路,其特征在于,所述输出为16个96比特操作数的操作数生成模块编号为X0,每个96比特操作数的后6个字为输入的数据,前2个字被分配为零。


3.根据权利要求1所述的用于数论变换乘法的基16运算电路,其特征在于,所述输出为6个192比特操作数的操作数生成模块编号为Xk,k为奇数,每个操作数OPm由16个不同的输入数据xn,m,0≤n...

【专利技术属性】
技术研发人员:华斯亮刘玉申徐健卞九辉张静亚张慧国
申请(专利权)人:常熟理工学院
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1