CN111198672B - 一种基于二元扩域的点加和倍点电路及其控制方法 - Google Patents
一种基于二元扩域的点加和倍点电路及其控制方法 Download PDFInfo
- Publication number
- CN111198672B CN111198672B CN201911396345.2A CN201911396345A CN111198672B CN 111198672 B CN111198672 B CN 111198672B CN 201911396345 A CN201911396345 A CN 201911396345A CN 111198672 B CN111198672 B CN 111198672B
- Authority
- CN
- China
- Prior art keywords
- exclusive
- input
- gate combination
- receiving
- gate
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种基于二元扩域的点加和倍点电路及其控制方法,所述点加和倍点电路包括有限状态机、模乘模块、模平方模块、模加模块、模逆模块、数据寄存器、状态寄存器、计数寄存器和控制信号寄存器。通过使用有限状态机来调用模乘模块、模平方模块、模加模块和模逆模块,从而实现点加、倍点以及坐标变换等运算。由于不同的模块可被重复调用,因此可以减少硬件冗余,充分利用硬件资源,简化电路结构,使得整个电路在执行每个指令时耗费较少时钟周期来工作,最终表现为减少计算任务的时间花费、减少耗电量和发热量过、增加应用这种点加和倍点电路的移动终端的续航能力等效果。本发明广泛应用于电路与系统技术领域。
Description
技术领域
本发明涉及电路与系统技术领域,尤其是一种基于二元扩域的点加和倍点电路及其控制方法。
背景技术
在应用椭圆曲线密码算法等场合,对于Jacobian加重射影坐标系下的椭圆曲线y2+xyz=x3+ax2z2+bz6,要求出P3(x3,y3,z3)=P2(x2,y2,z2)+P1(x1,y1,z1),需要经历以下点加过程:
要求出P3(x3,y3,z3)=P1(x1,y1,z1)+P1(x1,y1,z1),需要经历以下倍点过程:
由上述表达式可以看出,点加过程和倍点过程都涉及多轮模乘、模平方和模加的过程。如果进行坐标变换,还涉及多轮的模逆过程。
现有技术中,为了能够快速实现点加运算和倍点运算的电路,需要设置大量的模乘、模平方、模加和模逆电路,以提高点加运算和倍点运算的效率。但是,并不是在点加运算和倍点运算的每一轮计算中都需要使用到同样多的硬件资源,因此现有技术通常会造成过多的硬件冗余,硬件资源无法获得充分的利用,使得整个电路显得过于复杂,伴随而来的是耗费较多时钟周期来工作,最终表现为计算任务的时间花费过长、点加和倍点电路的耗电量和发热量过大、应用于移动终端时续航能力变差等缺点。
发明内容
针对上述至少一个技术问题,本发明的目的在于提供一种基于二元扩域的点加和倍点电路及其控制方法。
一方面,本发明实施例包括一种基于二元扩域的点加和倍点电路,包括:
有限状态机,用于将点加运算和/或倍点运算分解为模乘运算、模平方运算、模加运算和/或模逆运算;
模乘模块,用于在所述有限状态机的控制下,执行模乘运算;
模平方模块,用于在所述有限状态机的控制下,执行模平方运算;
模加模块,用于在所述有限状态机的控制下,执行模加运算;
模逆模块,用于在所述有限状态机的控制下,执行模逆运算;
数据寄存器,用于存储所述模乘模块、模平方模块、模加模块和/或模逆模块执行运算所产生的中间量;
状态寄存器,用于存储所述有限状态机的现态和/或次态;
计数寄存器,用于存储对所述模乘模块、模平方模块、模加模块和/或模逆模块的调用次数;
控制信号寄存器,用于存储所述模乘模块、模平方模块、模加模块和/或模逆模块执行运算的开始信号和结束信号。
另一方面,本发明实施例还包括一种对所述点加和倍点电路的控制方法,包括以下步骤:
所述控制信号寄存器预存开始信号和结束信号;
所述有限状态机从所述控制信号寄存器读出所述开始信号和/或结束信号,根据所述开始信号和/或结束信号的组合关系,查找相应的状态转移条件;
根据查找到的所述状态转移条件,所述有限状态机进行状态转移。
本发明的有益效果是:实施例中的点加和倍点电路,通过使用有限状态机来调用模乘模块、模平方模块、模加模块和模逆模块,从而实现点加、倍点以及坐标变换等运算。由于不同的模块可被重复调用,因此可以减少硬件冗余,充分利用硬件资源,简化电路结构,使得整个电路在执行每个指令时耗费较少时钟周期来工作,最终表现为减少计算任务的时间花费、减少耗电量和发热量过、增加应用这种点加和倍点电路的移动终端的续航能力等效果。
附图说明
图1为实施例中所述点加和倍点电路的结构示意图;图2为实施例中所述模乘模块的结构示意图;图3为实施例中所述第一组合逻辑单元的结构示意图;图4为实施例中所述64位乘法器的结构示意图;图5为实施例中所述64位乘法器与其各下级乘法器之间的关系示意图;
图6为实施例中所述8位乘法器的结构示意图;图7为实施例中所述4位乘法器的结构示意图;图8为实施例中所述第二组合逻辑单元的结构示意图;图9为实施例中所述约减单元的结构示意图;图10为实施例中所述模平方模块的结构示意图;图11为实施例中所述补零单元的结构示意图;图12为实施例中所述模加模块的结构示意图;图13为实施例中所述模逆模块的结构示意图;图14为实施例中所述模逆模块中的有限状态机的状态跳转示意图;图15为实施例中所述点加和倍点电路中的有限状态机的状态跳转示意图;图16为实施例中对所述点加和倍点电路的仿射——射影工作模式的仿真效果示意图;图17为实施例中对所述点加和倍点电路的射影——仿射工作模式的仿真效果示意图;图18和图19为实施例中对所述点加和倍点电路的点加工作模式的仿真效果示意图。
具体实施方式
参照图1,所述点加和倍点电路由有限状态机、模乘模块、模平方模块、模加模块、模逆模块、数据寄存器、状态寄存器、计数寄存器和控制信号寄存器组成。其中,所述有限状态机是整个点加和倍点电路的控制核心,其控制模乘模块和模平方模块等进行工作。
1、模乘模块
参照图2,所述模乘模块包括有限状态机、第一输入单元、第二输入单元、第一组合逻辑单元、64位乘法器、寄存器组、第二组合逻辑单元、约减单元和输出单元。
参照图2,所述有限状态机上设有使能端en,用于接收使能信号,当en=1时有限状态机处于使能状态。所述有限状态机上还设有时钟端clk,用于接收时钟信号,使得有限状态机在时钟信号的触发下进入到不同状态,在不同状态下,有限状态机分别控制模乘模块中的不同模块执行相应的运算,最终完成模乘过程。
本实施例中,所述第一输入单元、第二输入单元和输出单元均为可存储258位数据的寄存器。
通过数据输入输出接口输入的第一乘数A和第二乘数B分别由第一输入单元和第二输入单元进行缓存。在有限状态机的控制下,第一组合逻辑单元从第一输入单元和第二输入单元读出第一乘数A和第二乘数B。
参照图3,所述第一组合逻辑单元由第一异或门组合XORS1、第二异或门组合XORS2、第三异或门组合XORS3、第四异或门组合XORS4、第五异或门组合XORS5、第六异或门组合XORS6、第一数据选择器MUX1、第二数据选择器MUX2和第三数据选择器MUX3组成。
本实施例中,所述第一组合逻辑单元将第一乘数A的低256位看成是由四组64位数据{A3,A2,A1,A0}组成,也就是A3、A2、A1、A0的位数均为64位。同理,所述第一组合逻辑单元将第二乘数B的低256位看成是由四组64位数据{B3,B2,B1,B0}组成,也就是B3、B2、B1、B0的位数均为64位。
本实施例中,第一异或门组合XORS1、第二异或门组合XORS2、第三异或门组合XORS3、第四异或门组合XORS4、第五异或门组合XORS5和第六异或门组合XORS6分别由64个双输入异或门。所谓双输入异或门,是指这样的异或门具有两个输入端和一个输出端,通过这两个输入端接收两个输入值,然后对这两个输入值进行异或运算,从输出端输出异或运算的结果。
每个异或门组合的“一组输入端”,是从这个异或门组合中的每个异或门分别取出一个输入端组成。由于每个异或门组合分别由64个异或门组成,因此每个异或门组合的一组输入端可以接收64位数据。
图3中的“控制信号”来自有限状态机。所述控制信号的具体数值由有限状态机根据所处的状态来决定,它可以控制各数据选择器从其接收到的多组64位数据中选择其中的一组或多组进行输出。按照图3所示的连接方式,所述第一数据选择器从接收到的A2和A1中择一输出,所述第二数据选择器从接收到的B2和B1中择一输出,所述第三数据选择器,从接收到的六组数据中选择两组进行输出,每组分别作为一个64位的高位输出结果和一个64位的低位输出结果。
所述第一组合逻辑单元用于与64位乘法器配合,向64位乘法器提供运算所需的数据。例如,第一组合逻辑单元通过各数据选择器的配合,通过执行异或运算,可以执行加法运算,分别得到A1+A0和B1+B0进行输出。64位乘法器获取到的A1+A0和B1+B0计算结果之后,执行乘法运算,输出的(A1+A0)(B1+B0)计算结果。
本实施例中,基于Karatsuba-Ofman算法的思想去设计乘法器。对于图2所示的64位乘法器,参照图4,其包括:
第二十六异或门组合XORS26,包括32个双输入异或门,其一组输入端用于接收第一64位乘数(图4中的A)中的高32位,另一组输入端用于接收相应的低32位;
第二十七异或门组合XORS27,包括32个双输入异或门,其一组输入端用于接收第二64位乘数(图4中的B)中的高32位,另一组输入端用于接收相应的低32位;
第一32位乘法器MUL1,其一组输入端用于接收第一64位乘数中的高32位,另一组输入端用于接收第二64位乘数中的高32位;
第二32位乘法器MUL2,其一组输入端与所述第二十六异或门组合的输出端连接,另一组输入端与所述第二十七异或门组合的输出端连接;
第三32位乘法器MUL3,其一组输入端用于接收第一64位乘数中的低32位,另一组输入端用于接收第二64位乘数中的低32位;
第二十八异或门组合XORS28,包括64个双输入异或门,其一组输入端与所述第一64位乘法器的输出端连接,另一组输入端与所述第二32位乘法器的输出端连接;
第二十九异或门组合XORS29,包括64个双输入异或门,其一组输入端与所述第二十八异或门组合的输出端连接,另一组输入端与所述第三32位乘法器的输出端连接;
第三十异或门组合XORS30,包括64个双输入异或门,其一组输入端与所述第二十九异或门组合的输出端连接,另一组输入端分别与所述第一32位乘法器和第三32位乘法器的输出端连接。
图4中的C就是64位乘法器所输出的结果。
由上述64位乘法器的结构可知,其调用了3个下一级的乘法器,也就是所述64位乘法器包括第一32位乘法器、第二32位乘法器和第三32位乘法器。对于每个32位乘法器,也分别调用3个下一级的乘法器,也就是每个32位乘法器中都包括3个16位乘法器,并且每个32位乘法器的电路拓扑结构与64位乘法器是相同的。按照相同的思路,如图5所示,每个16位乘法器也分别包括3个8位乘法器,每个8位乘法器也分别包括3个4位乘法器。
每个8位乘法器的拓扑结构与64位乘法器相同,不同的是其所包含的3个下一级乘法器是4位乘法器,以及所使用的异或门组合中的异或门组合不同。参照图6,每个8位乘法器包括:
第三十七异或门组合XORS37,包括4个双输入异或门,其一组输入端用于接收第一8位乘数(图6中的A)中的高4位,另一组输入端用于接收相应的低4位;
第三十八异或门组合XORS38,包括4个双输入异或门,其一组输入端用于接收第二8位乘数(图6中的B)中的高4位,另一组输入端用于接收相应的低4位;
第四4位乘法器MUL4,其一组输入端用于接收第一8位乘数中的高4位,另一组输入端用于接收第二8位乘数中的高4位;
第五4位乘法器MUL5,其一组输入端与所述第二十六异或门组合的输出端连接,另一组输入端与所述第二十七异或门组合的输出端连接;
第六4位乘法器MUL6,其一组输入端用于接收第一8位乘数中的低4位,另一组输入端用于接收第二8位乘数中的低4位;
第三十九异或门组合XORS39,包括8个双输入异或门,其一组输入端与所述第一8位乘法器的输出端连接,另一组输入端与所述第二4位乘法器的输出端连接;
第四十异或门组合XORS40,包括8个双输入异或门,其一组输入端与所述第二十八异或门组合的输出端连接,另一组输入端与所述第三4位乘法器的输出端连接;
第四十一异或门组合XORS41,包括8个双输入异或门,其一组输入端与所述第二十九异或门组合的输出端连接,另一组输入端分别与所述第一4位乘法器和第三4位乘法器的输出端连接。
图6中的C就是8位乘法器所输出的结果。
当使用硬件描述语言实现时,图7所示的4位乘法器具有如表1所示的性能。
表1
当使用硬件描述语言实现时,图4所示的64位乘法器具有如表2所示的性能。
表2
作为图4和图6所示电路的基础,4位乘法器的结构如图7所示。
本实施例中,对有限状态机设置9种状态,每种状态下,有限状态机控制第一组合逻辑单元和64位乘法器配合,分别计算以下结果:
第一中间结果S1=A0B0;第二中间结果S2=(A1+A0)(B1+B0);
第三中间结果S3=A1B1;第四中间结果S4=(A2+A0)(B2+B0);
第五中间结果S5=(A3+A2+A1+A0)(B3+B2+B1+B0);
第六中间结果S6=(A3+A1)(B2+B0);第七中间结果S7=A2B2;
第八中间结果S8=(A3+A2)(B3+B2);第九中间结果S9=A3B3。
上述第一中间结果S1、第二中间结果S2、第三中间结果S3、第四中间结果S4、第五中间结果S5、第六中间结果S6、第七中间结果S7、第八中间结果S8和第九中间结果S9在计算出来之后被暂存到寄存器组中。
本实施例中,所述第二组合逻辑单元由第七异或门组合、第八异或门组合、第九异或门组合、第十异或门组合、第十一异或门组合、第十二异或门组合、第十三异或门组合、第十四异或门组合、第十五异或门组合、第十六异或门组合、第十七异或门组合、第十八异或门组合、第十九异或门组合、第二十异或门组合、第二十一异或门组合、第二十二异或门组合、第二十三异或门组合、第二十四异或门组合和第二十五异或门组合等组成。它们之间的连接关系如图8所示。
图8中,出于简洁化的考虑,只标记出了第七异或门组合XORS7、第十二异或门组合XORS12、第十三异或门组合XORS13、第十六异或门组合XORS16、第十七异或门组合XORS17、第十八异或门组合XORS18、第十九异或门组合XORS19、第二十异或门组合XORS20和第二十五异或门组合XORS25。可以根据从左至右编号的规则从图4中确定其他异或门所在的位置。例如,图4中第十三异或门组合XORS13右侧的方框就是表示第十四异或门组合。
本实施例中,第七异或门组合、第八异或门组合、第九异或门组合、第十异或门组合、第十一异或门组合、第十二异或门组合、第十三异或门组合、第十四异或门组合、第十五异或门组合、第十六异或门组合、第十七异或门组合、第十八异或门组合和第十九异或门组合,其分别由128个双输入异或门组成;第二十异或门组合、第二十一异或门组合、第二十二异或门组合、第二十三异或门组合、第二十四异或门组合和第二十五异或门组合,其分别由64个双输入异或门组成。
参照图2,本实施例中,还在所述模乘模块中设置了515位的乘积寄存器,以暂存第二组合逻辑单元输出的乘积结果C。
由上述可知,通过64位乘法器和第二组合逻辑单元的组合,可以实现2级的Karatsuba-Ofman算法。
在所述有限状态机的控制下,由约减单元将乘积结果C从乘积寄存器中读取出来,并对乘积结果C执行约减运算。
所述约减单元的结构如图9所示,其包括第三十一异或门组合XORS31、第三十二异或门组合XORS32、第三十三异或门组合XORS33和第三十四异或门组合XORS34。
第三十一异或门组合包括245个双输入异或门,其一组输入端用于接收乘积结果C的第271-515位,另一组输入端用于接收乘积结果C的第26-270位;
第三十二异或门组合包括245个双输入异或门,其一组输入端用于接收第三十一异或门组合输出结果中的第26-258位,以及接收乘积结果C的第14-25位,另一组输入端用于接收乘积结果C的第271-515位;
第三十三异或门组合包括14个双输入异或门,其一组输入端用于接收第三十二异或门组合输出结果中的第257-270位,另一组输入端用于接收第三十二异或门组合输出结果中的第14-25位,以及接收乘积结果C的第12-13位;
第三十四异或门组合包括14个双输入异或门,其一组输入端用于接收第三十二异或门组合输出结果中的第257-270位,另一组输入端用于接收第三十三异或门组合输出结果中的第12-13位,以及接收乘积结果C的第0-11位。
图9中,各个异或门组合的输出结果组合成R的第0-256位。使用一位1’b0来补足R的第257位,从而使得最终输出的R有258位。
通过使用图9的约减单元,可以实现以下快速约减算法:
输入:516位的C[515:0];输出:258位的R[257:0],其中R=Cmodf(x);
第一步:约减C[515:271],即:
第二步:约减C[270:257],即:
第三步:C[25:12]←0;
第四步:R=C[257:0],输出结果。
参照图2,约减单元输出的结果R暂存到输出单元中。在有限状态机的控制下,输出单元通过数据输入输出接口对外输出R,作为对最初输入的第一乘数A和第二乘数B的模乘结果。
参照图2,所述模乘模块还设有复位信号端rst_n,其与第一输入单元、第二输入单元、寄存器组和输出单元连接。当复位信号端rst_n接收到复位信号时,将触发第一输入单元、第二输入单元、寄存器组和输出单元中的至少一个进行复位,从而清除被复位的模块中所存储的数据。所述模乘模块还设有DONE信号寄存器,其与有限状态机连接,在输出单元获取到所述约减单元的输出结果R之后,所述DONE信号寄存器被置为高电平,从而触发所述有限状态机进入空闲状态。
本实施例中,可以通过向有限状态机发送时钟信号,从而触发有限状态机进入不同的工作状态。在不同的工作状态下,有限状态机分别控制相应的模块工作,从而执行相应的运算。
综上,当使用硬件描述语言实现时,图2所示的模乘单路具有如表3所示的性能。
表3
本实施例中,使用格雷码对有限状态机的状态进行编码。时钟信号与有限状态机的工作状态之间的对应关系如表4所示:
表4
本实施例中,表4的状态转换可以通过以下步骤来表示:
S1.向所述有限状态机发送时钟信号;
S2.在所述时钟信号触发的启动状态下,所述有限状态机控制所述第一输入单元和第二输入单元接收第一乘数A和第二乘数B;
S3.在所述时钟信号触发的第一状态ST1下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第一中间结果,并将它存储到寄存器组;
S4.在所述时钟信号触发的第二状态ST2下,所述有限状态机控制所述第一组合逻辑单元64位乘法器获取第二中间结果,并将它存储到寄存器组;
S5.在所述时钟信号触发的第三状态ST3下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第三中间结果,并将它存储到寄存器组;
S6.在所述时钟信号触发的第四状态ST4下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第四中间结果,并将它存储到寄存器组;
S7.在所述时钟信号触发的第五状态ST5下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第五中间结果,并将它存储到寄存器组;
S8.在所述时钟信号触发的第六状态ST6下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第六中间结果,并将它存储到寄存器组;
S9.在所述时钟信号触发的第七状态ST7下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第七中间结果,并将它存储到寄存器组;
S10.在所述时钟信号触发的第八状态ST8下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第八中间结果,并将它存储到寄存器组;
S11.在所述时钟信号触发的第九状态ST9下,所述有限状态机控制所述第一组合逻辑单元和64位乘法器获取第九中间结果,并将它存储到寄存器组;
S12.在所述时钟信号触发的第十状态ST10下,所述有限状态机控制所述第二组合逻辑单元从寄存器组中读取出第一中间结果、第二中间结果、第三中间结果、第四中间结果、第五中间结果、第六中间结果、第七中间结果、第八中间结果和第九中间结果,并根据它们获取乘积结果C;
S13.在所述时钟信号触发的第十一状态ST11下,所述有限状态机控制所述约减单元对乘积结果C进行约减运算;
S14.在所述时钟信号触发的第十二状态ST12下,所述有限状态机控制所述输出单元输出所述约减单元的输出结果。
对图9所示的约减单元进行RTL仿真,仿真测试用了3组数据,测试所用到的数据如表5所示。因为=57+2+1,在表5中的3组输入里,低256位都一样,高260位里只有1位为高电平,因此相应的输出只有低16位发生变化(标粗部分)。
表5
对本实施例中的模乘模块进行RTL仿真,从开始到结束,整个过程用了13个CLK时钟,符合算法过程的推测。模乘的测试数据如表6所示。
表6
2、模平方模块
本实施例中,所述模平方模块的结构如图10所示,其中所述补零单元的结构如图11所示。补零单元通过向被平方数各位的左边补零,所得的结果便是对被平方数进行平方的值。从补零单元输出的结果被约减单元接收,从而执行约减运算,获得模平方结果。图10中的约减单元,可以与模乘模块复用图9所示的约减单元。
本实施例中,所述模平方模块的性能如表7所示。
表7
3、模加模块
本实施例中,所述模加模块的结构如图12所示,其中的A和B为输入端,C为输出端。所述模加模块由多个异或门组成。本实施例中,所述模加模块的性能如表8所示。
表8
4、模逆模块
本实施例中,参照图13,所述模逆模块包括:
第一移位寄存器,用于存储第一初始量U;
第二移位寄存器,用于存储第二初始量V;
第三移位寄存器,用于存储第三初始量S;
第四移位寄存器,用于存储第四初始量W;
f(x)寄存器,用于存储与求余运算参量f(x)相应的二进制序列;
第三十五异或门组合XORS35,包括258个双输入异或门,其一组输入端与所述第一移位寄存器的输出端连接,另一组输入端与所述第二移位寄存器的输出端连接;
第四数据选择器MUX4,其输入端与所述第三十五异或门组合的输出端连接,其输出端分别与所述第一移位寄存器和第二移位寄存器连接;
第五数据选择器MUX5,其一组输入端与所述第三移位寄存器连接,其另一组输入端与所述第四移位寄存器连接;
第三十六异或门组合XORS36,包括258个双输入异或门,其一组输入端与所述第五数据选择器的输出端连接,另一组输入端与所述f(x)寄存器的输出端连接;
第六数据选择器MUX6,其输入端与所述第三十六异或门组合的输出端连接,其输出端分别与所述第三移位寄存器和第四移位寄存器连接;
条件判断单元分别与所述第一移位寄存器、第二移位寄存器、第三移位寄存器和第四移位寄存器连接,用于对所述第一初始量U、第二初始量V、第三初始量X和/或第四初始量W的大小和/或奇偶性进行判断,并将判断结果发送至所述有限状态机。
所述模逆模块中的有限状态机采用独热编码方式来对各状态进行编码。所述模逆模块中的有限状态机的跳转状态可以通过图14和表9的形式表示。
表9
状态 | 编码 | 有限状态机工作 |
IDLE | 00000 | IDLE→ST1(当en=1),装入数据;IDLE→IDLE(当en=0); |
ST1 | 00001 | ST1→ST2(U≠1且V≠1);ST1→ST5(其他); |
ST2 | 00010 | ST2→ST2(U[0]=1);ST2→ST3(U[0]=0); |
ST3 | 00100 | ST3→ST3(V[0]=1);ST3→ST4(V[0]=0); |
ST4 | 01000 | ST4→ST1; |
ST5 | 10000 | ST5→IDLE,输出结果 |
图13所示的模逆模块在执行图14和表9所示的工作流程时,实现如下的由扩展欧几里得算法改进得到的二进制求逆算法:
输入:258位的A[257:0];
输出:258位的R[257:0],其中A-1[258:0](modf(x));
第一步:设定U、V为258位,并令U=A,C=f(x);
设定S、W为258位,并令S=1,W=0;
第二步:如果U≠1且V≠1,循环执行以下1、2、3:
1、如果U[0]=0,循环执行:
U=U>>1;
2、如果V[0]=0,循环执行:
V=V>>1;
第三步:如果U=1,则输出A-1=S,否则输出A-1=W。
图14和表9实施所述二进制求逆算法的原理为:
有限状态机处于IDL状态,即初始状态;有限状态机进入ST1状态之后,判断是否跳出二进制求逆算法第2步的循环,如果继续循环,则跳转到ST2,否则跳转到ST5,执行算法的第三步;在ST2状态下,条件判断单元判断U是否为偶数,是的话将U值除2,接着跟据S的奇偶性对S进行相应的赋值处理,继续ST2状态,否则有限状态机跳到ST3状态。在ST3状态下,有限状态机通过条件判断单元判断V是否为偶数,是的话将V值除2,接着根据W的奇偶性对W进行相应的赋值处理,继续ST3状态,否则跳转到ST4状态。在ST3状态下,有限状态机通过条件判断单元判断U和V的大小,做出相应的赋值操作,接着跳转到ST1状态,继续第二步算法的循环。有限状态机在ST5状态,说明U和V其中一个等于1,如果U等于1,则输出S,否则输出W,并将done信号置为高电平,接着有限状态机跳回到初始状态。
5、数据寄存器、状态寄存器、计数寄存器和控制信号寄存器
本实施例中,所述数据寄存器、状态寄存器、计数寄存器和控制信号寄存器所存储的数据如表10所示。
表10
6、点加和倍点电路的工作过程
在图1所示的点加和倍点电路中,首先向控制信号寄存器预存开始信号和结束信号。所述有限状态机按照时序从所述控制信号寄存器读出所述开始信号和/或结束信号,根据所述开始信号和/或结束信号的组合关系,从表11中查找相应的状态转移条件。
表11
根据查找到的状态转移条件对应的状态编号,所述有限状态机根据图15所示的跳转逻辑进行状态跳转。图15中,六边形内的编号表示相应的状态编号,圆形内的编号表示表12所示的状态编码。
表12
状态 | 编码 | 状态 | 编码 | 状态 | 编码 | 状态 | 编码 |
IDLE | 00000 | STD3 | 00110 | STF2 | 10010 | STS4 | 11110 |
ST | 00100 | STB1 | 01100 | STF3 | 10110 | STS5 | 11010 |
STZ | 10100 | STB2 | 01101 | STS1 | 11100 | STEa | 00001 |
STD1 | 00011 | STB3 | 01111 | STS2 | 11101 | STEb | 10000 |
STD2 | 00010 | STF1 | 10011 | STS3 | 11111 |
表12中,IDLE表示初始状态,ST代表开始点运算;STDx表示点加运算状态,有限状态机调用模乘模块、模平方模块和模加模块执行点加运算;STBx表示倍点运算状态,有限状态机调用模乘模块、模平方模块和模加模块执行倍点运算;STZ表示是坐标转换开始状态,STFx表示仿射——射影转换状态,有限状态机调用模乘模块、模平方模块、模加模块和模逆模块执行仿射——射影转换运算;STSx表示射影——仿射转换状态,有限状态机调用模乘模块、模平方模块、模加模块和模逆模块执行射影——仿射转换运算;STEa表示点运算结束并输出转换后的坐标值,STEb表示坐标转换结束并输出转换后的坐标值。
具体地,所述点加和倍点电路通过表13所示的15轮步骤实现以下点加过程:
表13
具体地,所述点加和倍点电路通过表14所示的8轮步骤实现以下倍点过程:
表14
7、测试
本实施例中,所述点加和倍点电路有仿射——射影、射影——仿射和点加等工作模式。
针对仿射——射影这一工作模式的仿真结果如图16和表15所示,由此验证了仿射到射影的坐标转换功能的正确性。
表15
针对射影——仿射这一工作模式的仿真结果如图17和表16所示,由此验证了射影到仿射的坐标转换功能的正确性。
表16
针对点加这一工作模式的仿真结果如图18、图19和表17所示,由此验证了射影到仿射的坐标转换功能的正确性。
表17
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (9)
1.一种基于二元扩域的点加和倍点电路,其特征在于,包括:
有限状态机,用于将点加运算和/或倍点运算分解为模乘运算、模平方运算、模加运算和/或模逆运算;
模乘模块,用于在所述有限状态机的控制下,执行模乘运算;
模平方模块,用于在所述有限状态机的控制下,执行模平方运算;
模加模块,用于在所述有限状态机的控制下,执行模加运算;
模逆模块,用于在所述有限状态机的控制下,执行模逆运算;
数据寄存器,用于存储所述模乘模块、模平方模块、模加模块和/或模逆模块执行运算所产生的中间量;
状态寄存器,用于存储所述有限状态机的现态和/或次态;
计数寄存器,用于存储对所述模乘模块、模平方模块、模加模块和/或模逆模块的调用次数;
控制信号寄存器,用于存储所述模乘模块、模平方模块、模加模块和/或模逆模块执行运算的开始信号和结束信号;
所述模乘模块包括:
第一输入单元,用于在所述有限状态机的控制下,接收m+2位的二进制第一乘数A;
第二输入单元,用于在所述有限状态机的控制下,接收m+2位的二进制第二乘数B;
第一组合逻辑单元,具有多个数据选择器和多个异或门,用于在所述有限状态机的控制下,接收所述第一乘数A的低m位{A3,A2,A1,A0}以及所述第二乘数B的低m位{B3,B2,B1,B0},通过各所述数据选择器从所述{A3,A2,A1,A0}和所述{B3,B2,B1,B0}中选择出数值输入到相应的异或门进行运算,从而输出两个位的输出结果;所述A3、A2、A1、A0、B3、B2,B1和B0的位数均为位;
位乘法器,用于在所述有限状态机的控制下,接收所述第一组合逻辑单元的输出结果并执行乘法计算,从而分别计算出第一中间结果S1=A0B0,第二中间结果S2=(A1+A0)(B1+B0),第三中间结果S3=A1B1,第四中间结果S4=(A2+A0)(B2+B0),第五中间结果S5=(A3+A2+A1+A0)(B3+B2+B1+B0),第六中间结果S6=(A3+A1)(B2+B0),第七中间结果S7=A2B2,第八中间结果S8=(A3+A2)(B3+B2),以及第九中间结果S9=A3B3;
寄存器组,其具有多个存储空间,用于在所述有限状态机的控制下,存储并供读取所述第一中间结果、第二中间结果、第三中间结果、第四中间结果、第五中间结果、第六中间结果、第七中间结果、第八中间结果和第九中间结果;
约减单元,用于在所述有限状态机的控制下,对所述乘积结果C执行约减运算;
输出单元,用于在所述有限状态机的控制下,输出所述约减单元的输出结果。
2.根据权利要求1所述的点加和倍点电路,其特征在于,所述第一组合逻辑单元包括:
第一数据选择器,其一组输入端用于接收A2,另一组输入端用于接收A1;
第二数据选择器,其一组输入端用于接收B2,另一组输入端用于接收B1;
3.根据权利要求1所述的点加和倍点电路,其特征在于,所述第二组合逻辑单元包括:
6.根据权利要求1-5任一项所述的点加和倍点电路,其特征在于,所述模平方模块包括:
补零单元,用于接收被平方数,在被平方数各位的左边补零;
约减单元,用于对所述补零单元的输出结果执行约减运算,从而输出模平方结果。
7.根据权利要求1-5任一项所述的点加和倍点电路,其特征在于,所述模逆模块包括:
第一移位寄存器,用于存储第一初始量;
第二移位寄存器,用于存储第二初始量;
第三移位寄存器,用于存储第三初始量;
第四移位寄存器,用于存储第四初始量;
f(x)寄存器,用于存储与求余运算参量f(x)相应的二进制序列;
第三十五异或门组合,包括258个双输入异或门,其一组输入端与所述第一移位寄存器的输出端连接,另一组输入端与所述第二移位寄存器的输出端连接;
第四数据选择器,其输入端与所述第三十五异或门组合的输出端连接,其输出端分别与所述第一移位寄存器和第二移位寄存器连接;
第五数据选择器,其一组输入端与所述第三移位寄存器连接,其另一组输入端与所述第四移位寄存器连接;
第三十六异或门组合,包括258个双输入异或门,其一组输入端与所述第五数据选择器的输出端连接,另一组输入端与所述f(x)寄存器的输出端连接;
第六数据选择器,其输入端与所述第三十六异或门组合的输出端连接,其输出端分别与所述第三移位寄存器和第四移位寄存器连接;
条件判断单元,分别与所述第一移位寄存器、第二移位寄存器、第三移位寄存器和第四移位寄存器连接,用于对所述第一初始量、第二初始量、第三初始量和/或第四初始量的大小和/或奇偶性进行判断,并将判断结果发送至所述有限状态机。
8.根据权利要求1所述的点加和倍点电路,其特征在于,还包括:
全局时钟模块,用于产生供所述有限状态机使用的时钟信号;
全局复位模块,其分别与所述模乘模块、模平方模块、模加模块和模逆模块连接,用于产生全局复位信号。
9.权利要求1、2、3、4、5或8所述的点加和倍点电路的控制方法,其特征在于,包括以下步骤:
所述控制信号寄存器预存开始信号和结束信号;
所述有限状态机从所述控制信号寄存器读出所述开始信号和/或结束信号,根据所述开始信号和/或结束信号的组合关系,查找相应的状态转移条件;
根据查找到的所述状态转移条件,所述有限状态机进行状态转移。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911396345.2A CN111198672B (zh) | 2019-12-30 | 2019-12-30 | 一种基于二元扩域的点加和倍点电路及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911396345.2A CN111198672B (zh) | 2019-12-30 | 2019-12-30 | 一种基于二元扩域的点加和倍点电路及其控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111198672A CN111198672A (zh) | 2020-05-26 |
CN111198672B true CN111198672B (zh) | 2022-03-25 |
Family
ID=70744485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911396345.2A Active CN111198672B (zh) | 2019-12-30 | 2019-12-30 | 一种基于二元扩域的点加和倍点电路及其控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111198672B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055554A (en) * | 1998-03-04 | 2000-04-25 | Internatinal Business Machines Corporation | Floating point binary quad word format multiply instruction unit |
CN101221491B (zh) * | 2008-01-04 | 2010-04-21 | 清华大学 | 椭圆曲线密码系统的点加系统 |
CN101464920B (zh) * | 2008-12-10 | 2012-05-23 | 清华大学 | 一种自动生成二元域ecc协处理器电路的设计方法 |
CN103078732B (zh) * | 2013-01-08 | 2015-10-21 | 武汉大学 | 一种素域椭圆曲线加密的点乘加速电路 |
CN105094746A (zh) * | 2014-05-07 | 2015-11-25 | 北京万协通信息技术有限公司 | 一种椭圆曲线密码的点加/点倍的实现方法 |
CN104572012A (zh) * | 2015-01-29 | 2015-04-29 | 东南大学 | 一种基于aop的多项式基gf(2227)高速模乘法器 |
CN104679474A (zh) * | 2015-03-16 | 2015-06-03 | 东南大学 | 有限域gf(2^227)上的乘法器及模乘算法 |
CN106484366B (zh) * | 2016-10-17 | 2018-12-14 | 东南大学 | 一种二元域位宽可变模乘运算器 |
CN107977194A (zh) * | 2017-11-08 | 2018-05-01 | 东南大学 | 基于aop的多项式基gf(2^226)高速模逆运算器 |
CN110460443A (zh) * | 2019-08-09 | 2019-11-15 | 南京秉速科技有限公司 | 椭圆曲线密码的高速点加运算方法和装置 |
-
2019
- 2019-12-30 CN CN201911396345.2A patent/CN111198672B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111198672A (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112114776B (zh) | 一种量子乘法运算方法、装置、电子装置及存储介质 | |
CN112162723B (zh) | 一种量子减法运算方法、装置、电子装置及存储介质 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN107704335B (zh) | 一种基于fpga的crc并行运算ip核 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN103701566A (zh) | 一种校验方法和装置 | |
CN112306741A (zh) | 一种crc校验方法及相关装置 | |
CN109190413B (zh) | 一种基于fpga和md5加密的串行通信系统 | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
CN111198672B (zh) | 一种基于二元扩域的点加和倍点电路及其控制方法 | |
US8909510B2 (en) | LFSR emulation | |
CN112162724B (zh) | 一种带精度的量子除法运算方法及装置 | |
CN111190571B (zh) | 一种基于二元扩域的模乘电路及其控制方法 | |
CN108809323B (zh) | 循环冗余校验码的生成方法和装置 | |
CN115664849B (zh) | Bmc及其加密数据生成系统、方法、设备及存储介质 | |
CN112214200A (zh) | 一种量子减法运算方法、装置、电子装置及存储介质 | |
CN115809707A (zh) | 量子比较运算方法、装置、电子装置及基础算术组件 | |
CN114594925A (zh) | 适用于sm2加密运算的高效模乘电路及其运算方法 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN111353118B (zh) | 开平方的方法及相应的用于开平方的电路 | |
CN115879553B (zh) | 量子模数完整乘法运算方法、装置及模数算术组件 | |
CN115879554B (zh) | 量子模数平方运算方法、装置、电子装置及模数算术组件 | |
CN115879552B (zh) | 量子模数乘逆运算方法、装置、电子装置及模数算术组件 | |
CN1773863B (zh) | 一种可用于大容量存储器的rs(256,252)码纠错译码芯片 | |
CN115809042B (zh) | 量子模数加法运算方法、装置、电子装置及模数算术组件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |