CN1696894A - 大数模乘计算乘法器 - Google Patents
大数模乘计算乘法器 Download PDFInfo
- Publication number
- CN1696894A CN1696894A CN 200410044461 CN200410044461A CN1696894A CN 1696894 A CN1696894 A CN 1696894A CN 200410044461 CN200410044461 CN 200410044461 CN 200410044461 A CN200410044461 A CN 200410044461A CN 1696894 A CN1696894 A CN 1696894A
- Authority
- CN
- China
- Prior art keywords
- register
- redc
- control
- port
- data
- 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
- Executing Machine-Instructions (AREA)
Abstract
本发明提出了大数模乘计算乘法器,其中,REDC控制单元分别连接到双口SRAM的两个读写控制端口和REDC数据通道单元的使能控制端口,用来进行读写控制和计算控制;双口同步随机存储器SRAM用于存储算法中的操作数A,B,N,R以及运算中的中间结果和最终计算结果;数据通道单元从双口SRAM的两个数据读写端口获得数据,用于完成算法中大数的乘法和加法运算。本发明通过将操作数存储于同步SRAM中,对模N为2048bits时,只需要2Kbytes的存储空间,具有电路面积小,电路功耗低的优点;当对公钥加密安全性的要求提高,需要增加模N的比特数时,只需将同步SRAM存储空间增加,电路面积增加很少,便于扩展;并且本发明电路实际应用时,会充分利用电路所有部分,提高运算的速度。
Description
技术领域
本发明涉及一种运算电路,尤其是一种可以应用于加密领域中的大数模乘计算乘法器;属于电路技术领域。
背景技术
公开密钥加密算法在信息领域(如网络安全方面)有着广泛的应用。公开密钥加密算法要求使用者有两个密钥,一个公开密钥,可供所有人使用,用来加密传送给指定用户的明文;另一个秘密密钥,用户用它来解密密文。公开密钥算法的一个前提条件就是从公开密钥推导出秘密密钥几乎是不可能的。
基于大数因式分解的困难性的RSA密码体制是最为著名的公开密钥加密法,其关键步骤为:给出非负整数M,e,N,计算R=Me mod N(0<=E,M<N),很显然,上述模幂操作是由若干个模乘操作的循环叠加实现的,模幂操作实现算法就是把模幂操作化简为模乘操作。RSA密码体制的广泛使用使得大数的模乘运算成为一种加密领域的常用算法,在公钥密码体制中应用极其广泛。
针对大数模乘运算的快速算法很多,其中最著名的是Montgomery算法。在介绍算法之前,先介绍模幂操作实现算法中各符号的含义:
“*”代表乘法运算;
“/”代表除法运算;
“mod”代表取模运算;
“A^B”代表A的B次幂;
“A[i]”代表A的二进制数表示的第i比特(最低位为第0比特);
“A[j∶i]”代表A的二进制数表示的第i比特到第j比特(其中第i比特为低位),A[j∶i]可以看作是一个数,它的二进制数表示是A的二进制数表示的第i比特到第j比特。
Montgomery模乘运算是符合RSA体制的定义,便于计算机实现的一种算法:给出整数A、B和N时,计算R=REDC(A,B,N,n)=A*B*2-nmod N。(0<=A,B<N;其中n-2>=N的二进制比特数)。
Montgomery算法的具体实现方法为:
步骤01、将寄存器R清0;
步骤02、从A的二进制数表示最低位开始(输出控制寄存器i=0),执行步骤03;
步骤03、完成以下的赋值步骤:
R=R+A[i]*B;
R=R+R[0]*N;
R=R/2;
步骤04、如果A的二进制数表示的最高位已经执行了步骤03,则算法结束,返回寄存器R的值;否则在A的二进制数表示中,向上移动一位(i=i+1),执行步骤03。
以上的算法可以借用C语言描述方式,表述如下:
R=0;
For i=0to(n-1)
do{ R=R+A[i]*B;
R=R+R[0]*N;
R=R/2;
}
return R;
现有技术方案采用图1所示电路结构,即寄存器阵列与加法器阵列的组合来实现Montgomery算法。N_reg,A_reg,B_reg,R_reg代表存储操作数N,A,B,R的寄存器;ADD1,ADD2代表2048比特加法器;A[i]*B代表的运算为当A[i]为0,输出0,当A[i]为1,输出B;R[0]*B代表的运算为当R[0]为0,输出0,当R[0]为1,输出B。
以N,A,B最大为2048比特二进制数为例,并假设寄存器A共有n比特,由控制电路负责产生Montgomery数据处理电路的输入,依次输入A[0],A[1]直到A[n-1],其中Montgomery数据处理电路的两个加法器完成操作:R=R+A[i]*B,R=R+R[0]*N;之后寄存器R右移一位实现运算R=R/2,同时控制电路中控制A输入的寄存器加1,输入A的下一个比特位;直到处理完A的所有比特位,将R寄存器的值输出,完成整个计算过程。
现有技术方案采用4组2048比特寄存器分别存储二进制数A,B,N,R,采用两组2048比特加法器实现算法中的加法运算,其缺点:一是需要大量的寄存器单元;如模N为2048比特,则需要(2048×4=8196)个寄存器单元,在FPGA或ASIC芯片实现上述电路时,寄存器数量的增加会导致电路面积大,电路功耗高,电路成本高。
二是技术方案不易扩展,随着对公钥加密安全性的提高,模N的比特数也随之增加,如模N增加到4096比特,则所需寄存器单元增加1倍,达到(4096×4=16392)个寄存器单元。电路面积也会相应增加1倍,功耗也相应会增加1倍。
三是技术方案实际应用时,会有部分电路闲置,造成浪费。如设计是针对模N为2048比特,而实际应用时,模N可能为1024比特(实际应用时模N在0-2048bis之间可选),这时电路的另外1024比特会处于空闲状态,形成很大资源的浪费。
发明内容
本发明要解决的技术问题是提出一种大数模乘计算乘法器,采用双口SRAM替代寄存器来存储算法中的操作数以及中间结果,大幅度减少电路中寄存器的数量,缩小电路面积,降低成本,减小电路功耗。
本发明的技术方案包括:REDC控制单元、双口SRAM和REDC数据通道单元;
所述的REDC控制单元分别连接到双口SRAM的两个读写控制端口和REDC数据通道单元的使能控制端口,用来进行计算控制和读写控制;
所述的片内双口同步随机存储器SRAM用于存储算法中的操作数A,B,N,R以及运算中的中间结果和最终计算结果;
所述的数据通道单元从双口SRAM的两个数据读写端口获得数据,用于完成算法中大数的乘法和加法运算。
本发明通过将操作数存储于同步SRAM中,对模N为2048bits时,只需要2Kbytes的存储空间,具有电路面积小,电路功耗低的优点;当对公钥加密安全性的要求提高,需要增加模N的比特数时,只需将同步SRAM存储空间增加,这样电路面积增加少,便于扩展;并且本发明电路实际应用时,会充分利用电路所有部分,提高运算的速度。
附图说明
图1是现有的模数乘法器的结构示意图;
图2是本发明的模数乘法器的结构示意图;
图3是本发明的模数乘法器的REDC控制单元结构示意图;
图4是本发明采用64位乘法器实施例的处理单元的结构示意图。
具体实施方式
本发明是Montgomery算法的一种优化硬件实现方案,与原有技术方案相比原有技术方案所有运算采用加法器实现,本发明技术方案采用乘法器实现;采用片内SRAM代替原有技术方案采用寄存器存储运算中的操作数和中间量。
为了更加方便的进行大数的模乘计算,减少硬件寄存器和硬件加法器的使用,对于Montgomery算法:给出整数A、B和N时,计算R=REDC(A,B,N,n),满足条件R*2n=A*B mod N;本发明作了如下改进:令n=nn*Y,其中nn为以Y比特为单位的N的二进制比特数;模逆N_INV[Y-1∶0]满足如下条件:N_INV[Y-1∶0]*N[Y-1∶0]mod 2Y=-1。Y可以为1~128。当Y等于1时,等同于原有算法;同样,nn*Y也应大于等于N的实际比特数加2。
改进后的算法可以称为REDC_Y方法。
例如,当Y为64时,nn为以64比特为单位N的二进制比特数,nn*64应大于等于N的实际比特数加2;n=nn*64;改进后的算法可以称为REDC_64,其中N_INV[63∶0]满足如下条件:N_INV[63∶0]*N[63∶0]mod 264=-1。
本发明采用如下的算法来实现对Montgomery算法REDC(A,B,N,n)=A*B*2-nmod N=A*B*2-(nn*Y)mod N:
步骤1:操作数R置0;
步骤2:循环变量i置0;
步骤3:计算Q[Y-1∶0]=(R[Y-1∶0]+A[i*Y+Y-1∶i*Y+0]*B[Y-1∶0])*N_INV[Y-1∶0];
步骤4:计算R=R+A[i*Y+Y-1∶i*Y+0]*B;R=R+Q[Y-1∶0]*N;R右移Y比特;
步骤5:如果循环变量i等于nn-1,转到step6;否则i=i+1,转到步骤3;
步骤6:算法结束,返回结果R。
本发明硬件实现方案中需要计算参数N_INV[Y-1∶0],满足条件N_INV[Y-1∶0]*N[Y-1∶0] mod 2Y=-1,参数N_INV[Y-1∶0]的计算在本发明装置之前采用其他的硬件结构计算,将计算结果存储在寄存器或其他存储介质中,REDC程序控制模块可以通过指令读取N_INV[Y-1∶0]的值,用于本发明模数的计算过程。关于N_INV[Y-1∶0]的详细计算资料和计算过程可以参考《A Systolic,Linear-Array Multiplier for a Class of Right-ShiftAlgorithms》,作者:Peter Kornerup,Dept.of Mathematics and ComputerScience Odense University DK-5230 Odence M,Denmark,1994。
本发明所述的模数乘法器,包括:REDC控制单元、双口SRAM和REDC数据通道单元;
所述的REDC控制单元分别连接到双口SRAM的两个读写控制端口和REDC数据通道单元的使能控制端口,用来进行计算控制和读写控制;
所述的片内双口同步随机存储器SRAM用于存储算法中的操作数A,B,N,R以及运算中的中间结果和最终计算结果;
所述的数据通道单元从双口SRAM的两个数据读写端口获得数据,用于完成算法中大数的乘法和加法运算。
本发明通过以上的电路结构,实现了前述的REDC_Y算法,具体为:REDC控制单元接收运算启动信号和双口SRAM中操作数A,B,N,R的基地址;然后启动乘法器,REDC控制单元从双口SRAM读取操作数,输入数据通道单元;数据通道单元在REDC控制单元的控制下完成本发明所述的REDC_Y算法的计算,最终将计算结果输出到双口SRAM中。
操作数A,B,N预先存储在双口SRAM中。本发明的应用需要外部电路完成操作数A,B,N的预先存储,然后,外部电路向REDC控制单元输入操作数A,B,N和结果R在双口SRAM中的基地址和运算启动信号,控制本发明完成大数模乘的运算。运算完成后,外部电路从双口SRAM中读取结果R。
本发明提出了改进的REDC_Y算法,并且使用了双口SRAM来存储操作数A,B,N,R以及运算中的中间结果和最终计算结果;减少了寄存器的使用,电路面积小,电路功耗低,便于扩展。
至于REDC控制单元和采用加法器和乘法器完成本发明改进的REDC_Y算法的数据通道单元,对于本技术领域人员而言,根据本发明改进的算法,实现起来并不困难,并且不同的人可能有不同的设计。
下面给出本发明一种较好的实现方式,实现算法REDC_64。
如图2所示,本发明的模数乘法器,包括:REDC控制单元、双口SRAM和REDC数据通道单元;
图2中D_Addr代表操作数N,A,B,R在片内SRAM中的基地址;ini_ctr包含运算启动信号,模数N的字长(以64比特为单位)等信号;Finish信号表示运算完成信号;PORTA代表控制电路输出到双口SRAM A端口的地址和读写控制信号;PORTB代表控制电路输出到双口SRAM B端口的地址和读写控制信号;PORTB_DATA代表双口SRAM B端口与REDC数据通道电路之间数据信号;PORTA_DATA代表双口SRAM A端口与REDC数据通道电路之间数据信号;DATA_EN代表控制电路输出到REDC数据通道电路的数据使能信号。
REDC控制单元,包括:主控寄存器模块、双口SRAM控制寄存器模块和数据通道使能控制寄存器模块;
主控寄存器模块用来进行运算控制和地址读取控制;双口SRAM控制寄存器模块存储对双口SRAM两个端口进行操作的地址,以及对端口的操作类型是读或写;数据通道使能控制寄存器模块用来启动数据通道单元。
如图3所示是本发明的REDC控制单元的结构示意图,D_Addr代表操作数N,A,B,R在片内SRAM中的基地址;ini_ctr包含运算启动信号,模数N的字长(以64比特为单位)等信号;Finish信号表示运算完成信号;PORTA代表控制电路输出到双口SRAM A端口的地址和读写控制信号;PORTB代表控制电路输出到双口SRAM B端口的地址和读写控制信号;DATA_EN代表控制电路输出到REDC数据通道电路的数据使能信号。
REDC控制单元的输入信号为D_Addr信号,ini_ctr运算启动信号;输入信号为表示运算结束的Finish信号。D_Addr信号直接通过数据总线输入到双口SRAM控制寄存器模块,得到双口SRAM的A、B端口的地址;ini_ctr运算启动信号输入后,REDC控制单元启动计算过程;运算完成后,返回Finish信号。
主控寄存器模块可以包括:寄存器redc_i,redc_j控制模乘运算的全过程;寄存器n_inv_cnt控制Q[63∶0]的计算。
寄存器redc_i的变化范围是0~nn-l,redc_i的值从0到nn-1循环一次,完成一次Montgomery模乘运算,运算完成后,信号Finish有效。
寄存器redc_j的变化范围是0~nn-1,redc_j从0到nn-l循环一次,完成前面算法中step4所述运算:
R=R+A[redc_i*64+63∶redc_i*64+0]*B;
R=R+Q[63∶0]*N;结果R右移64比特;
寄存器n_inv_cn t控制算法中Step3:Q[63∶0]的计算,它的变化范围是0~7;
0~3:完成如下运算n_inv_b0=B[63∶0]*N_INV[63∶0];
4~7:完成运算Q[63∶0]=R[63∶0]*N_INV[63∶0]+A[redc_i*64+63∶redc_i*64+0]*n_inv_b0;
双口SRAM控制寄存器模块包括存储双口SRAM的第一读写端口A端口的读写地址寄存器RAMA_ADDR和控制操作为读或写的寄存器RAMA_CTR以及第二读写端口B端口的读写地址寄存器RAMB_ADDR和控制操作为读或写的寄存器RAMB_CTR;
对于SRAM中那些操作数进行操作,由RAMA_ADDR和RAMB_ADDR中存储的地址决定。操作数N,A,B,R的当前地址由各自的基址和寄存器redc_i,redc_j决定。
寄存器RAMB_ADDR当redc_j为偶数时为操作数B当前地址,当redc_j为奇数数时为中间结果R_in当前地址。
寄存器RAMB_CTR一直为0(0代表读操作,1代表写操作),因为SRAM的B端口只读数据B,R_in,无写操作。
寄存器RAMA_ADDR当redc_j为偶数时为操作数N当前地址,当redc_j为奇数数时为结果R_out当前地址。
寄存器RAMA_CTR当redc_j为偶数时为0(0代表读操作)对应读数据N,当redc_j为奇数时为1(1代表写操作)对应写数据R_out。
数据通道使能控制寄存器模块包括寄存器DATA_EN,在模乘运算开始后一直为有效,用来控制数据通道单元的启动。
本实施例的双口SRAM为片内双口SRAM,是本发明一个较好的实施方式,其包含两套独立的地址线(RAMA_ADDR,RAMB_ADDR),128比特数据输入线(RAMA_WDATA,RAMB_WDATA),128比特数据输出线(RAMA_RDATA,RAMB_RDATA),读写控制线(RAMA_CTR,RAMB_CTR)等。用于存储原始操作数N,A,B,结果R和中间运算数据。
原始操作数N,A,B,最终结果R_out和中间运算结果R_in都存储在双口SRAM中,双口SRAM包含两个端口:A端口用于读数据N,A,回写数据R_out;B端口用于读中间结果R_in,乘数B。
双口SRAM的地址信号和控制信号由REDC控制模块提供,SRAM的数据信号与REDC数据通道模块相连。
如图4所示是本发明数据通道单元的结构示意图,包括两个64比特乘法器,一个129比特加法器:两个64*64比特的乘法器的输入分别与两个64比特的寄存器连接,两个乘法器的结果各输出到一个128比特的寄存器;这两个128比特的寄存器与一个新的64比特寄存器共同连接到一个129比特加法器的输入,该加法器的输出送入到一个129比特的寄存器中,该129比特寄存器与加法器的输入相连,并且和另一个新的64比特的寄存器及一个作为上述64*64比特的乘法器的输入的64比特的寄存器相连。
该数据通道单元的输入信号为来自双口SRAM的A、B端口的PORTA_DATA和PORTB_DATA以及来自REDC控制单元的使能信号DATA_EN;输入信号输入到数据通道单元的数据总线,输入到对应的寄存器中。
REDC数据通道电路完成前面算法中step3和step4中描述的乘法和加法运算。所有操作数来自于双口SRAM并回写到SRAM。以_reg为后缀代表寄存器;Mult64×64代表乘法器;ADD_65_128_128_64代表加法器;D_EN代表控制电路输出到REDC数据通道电路的数据使能信号。
下面详细叙述本发明的算法在上述的大数模乘计算乘法器中的运算过程:
REDC主控寄存器模块收到ini_ctr信号,开始运算过程;操作数A,B,N,R的基址输入到双口SRAM控制寄存器模块;
步骤1:操作数R置0;
双口SRAM控制寄存器模块控制双口SRAM将存储R的单元赋值为0。
步骤2:循环变量i置0;
主控寄存器模块中的redc_i赋值为0。
步骤3:计算Q[63∶0]=(R[63∶0]+A[i*64+63∶i*64+0]*B[63∶0])*N_INV[63∶0];
主控寄存器模块中n_inv_cnt寄存器控制数据通道单元完成该步骤的计算。
当寄存器n_inv_cnt为0时,控制数据通道的输入使能信号,使N_reg=0;Q_reg=0;B_reg=B[63∶0];A_reg=N_INV[63∶0];R_in_reg=0;
完成n_inv_b0=B[63∶0]*N_INV[63∶0];
当n_inv_cnt为3时,寄存器nxq_axb_r_reg存储的值为n_inv_b0;通过图4中虚线所示路径,可以把n_inv_b0输送到Q_reg中;
当n_inv_cnt为4时,控制数据通道的输入使能信号,使N_reg=A[redc_i*64+63∶redc_i*64+0];Q_reg=n_inv_b0;B_reg=R[63∶0];A_reg=N_INV[63∶0];R_in_reg=0;完成Q[63∶0]=R[63∶0]*N_INV[63∶0]+A[redc_i*64+63∶redc_i*64+0]*n_inv_b0;
当n_inv_cnt为7时,寄存器nxq_axb_r_reg存储的值为Q[63∶0];通过图4中虚线所示路径,可以把Q[63∶0]输送到Q_reg中;
该步骤中两次经过数据通道单元的计算,完成了该步骤。
步骤4:计算R=R+A[i*64+63∶i*64+0]*B;R=R+Q[63∶0]*N;R右移64比特;
首先,将原式变为R=R+A[i*64+63∶i*64+0]*B+Q[63∶0]*N;然后完成平移。通过REDC控制单元,如图4所示,将对应的操作数送入到对应的数据通道的寄存器。由于每次数据通道只能完成64位的计算,所以,通过一个循环来完成本步骤的计算。借用C语言的描述方式,结合图4:
for(redc_j=0;redc_j<=nn-1;redc_j++)
{
axb=A[redc_i*64+63∶redc_i*64+0]*B[redc_j*64+63∶redc_j*64+0];
nxq=Q[63∶0]*N[redc_j*64+63∶redc_j*64+0];
nxq_axb_r=nxq+axb+R[redc_j*64+63∶redc_j*64+0]+nxq_axb_r[128∶64];
//至此完成了64位的R=R+A[i*64+63∶i*64+0]*B+Q[63∶0]*N;并且//将最终的nxq_axb_r后64加到R中;
if(redc_j>0)R[(redc_j-1)*64+63∶(redc_j-1)*64+0]=nxq_axb_r[63∶0];完成R的赋值;
}
R[(redc_j-1)*64+63∶(redc_j-1)*64+0]=nxq_axb_r[127∶64];//完成R=R/64;
步骤5:如果循环变量i等于nn-1,则全部计算完成;转到step6;否则i=i+l,继续下64比特的计算,转到步骤3;
步骤6:算法结束,返回结果R。
R=A*B*2-(nn*64)mod N。
作为结果的R存储在双口SRAM中,便于外部电路读取该计算结果。计算结束后,REDC控制单元可以输出一个信号通知外部电路,计算完成;便于外部电路的控制。
通过以上的描述可以看出,本发明的优点主要体现在两个方面:
其一,每次运算只需处理操作数A,B,N的64比特,这样就可以把操作数A,B,N存储在双口SRAM中,每个时钟周期读出所需的64比特
其二,改进后算法所用时钟周期与nn2成正比,当模N为1024比特时,所需时钟周期为原有时间的四分之一。
最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (13)
1、一种大数模乘计算乘法器,其特征在于:包括:REDC控制单元、双口SRAM和REDC数据通道单元;
所述的REDC控制单元分别连接到双口同步随机存储器SRAM的两个读写控制端口和REDC数据通道单元的使能控制端口,用来进行计算控制和读写控制;
所述的双口SRAM用于存储算法中的操作数A,B,N,R以及运算中的中间结果和最终计算结果;
所述的数据通道单元从双口SRAM的两个数据读写端口获得数据,用于完成算法中大数的乘法和加法运算。
2、根据权利要求1所述的大数模乘计算乘法器,其特征在于:所述的REDC控制单元,包括:主控寄存器模块、双口SRAM控制寄存器模块和数据通道使能控制寄存器模块;
所述的主控寄存器模块用来进行运算控制和地址读取控制;
所述的双口SRAM控制寄存器模块存储对双口SRAM两个端口进行操作的地址,以及对端口的操作类型是读或写;
所述的数据通道使能控制寄存器模块用来启动数据通道单元。
3、根据权利要求2所述的大数模乘计算乘法器,其特征在于:所述的主控寄存器模块可以包括:
两个寄存器,第一寄存器redc_i和第二寄存器redc_j用来控制模乘运算的全过程;
还包括寄存器n_inv_cnt,用来控制算法中Q[63:0]的计算。
4、根据权利要求3所述的大数模乘计算乘法器,其特征在于:所述的第一寄存器redc_i的变化范围是0~nn-1,redc_i的值从0到nn-1每循环一次,完成一次Montgomery模乘运算。
5、根据权利要求3或4所述的大数模乘计算乘法器,其特征在于:所述的寄存器redc_j的变化范围是0~nn-1,redc_j从0到nn-1每循环一次,完成一次如下运算:
R = R+A[redc_i*64+63:redc_i*64+0]*B;
R = R+Q[63:0]*N;
R右移64比特。
6、根据权利要求3所述的大数模乘计算乘法器,其特征在于:所述的寄存器n_inv_cnt控制算法中Step3:Q[63:0]的计算,它的变化范围是0~7;
0~3:完成如下运算n_inv_b0=B[63:0]*N_INV[63:0];
4~7:完成运算Q[63:0]=R[6 3:0]*N_I NV[63:0]+A[redc_i*64+63:redc_i*64+0]*n_inv_b0。
7、根据权利要求2所述的大数模乘计算乘法器,其特征在于:所述的双口SRAM控制寄存器模块
包括:存储双口SRAM的第一读写端口A端口的读写地址寄存器RAMA_ADDR和控制操作为读或写的寄存器RAMA_CTR;
还包括:第二读写端口B端口的读写地址寄存器RAMB_ADDR和控制操作为读或写的寄存器RAMB_CTR。
8、根据权利要求7所述的大数模乘计算乘法器,其特征在于:所述的RAMA_ADDR和RAMB_ADDR中存储的地址由操作数N,A,B,R的当前地址由各自的基址和寄存器redc_i和寄存器redc_j存储的值redc_i和redc_j决定:
寄存器RAMB_ADDR当redc_j为偶数时为操作数B当前地址,当redc_j为奇数数时为中间结果R_in当前地址。
寄存器RAMB_CTR一直为读操作,因为SRAM的B端口只读数据B,R_in,无写操作;
寄存器RAMA_ADDR当redc_j为偶数时为操作数N当前地址,当redc_j为奇数数时为计算结果R_out当前地址。
寄存器RAMA_CTR当redc_j为偶数时为读操作对应读数据N,当redc_j为奇数时为写操作对应写数据R_out。
9、根据权利要求2所述的大数模乘计算乘法器,其特征在于:所述的数据通道使能控制寄存器模块包括寄存器DATA_EN,该寄存器的值在模乘运算开始后一直为有效,用来控制数据通道单元的启动。
10、根据权利要求1所述的大数模乘计算乘法器,其特征在于:所述的双口SRAM,包含两套独立的地址线,128比特数据输入线,128比特数据输出线,和读写控制线;用于存储原始操作数N,A,B,结果R和中间运算数据。
11、根据权利要求10所述的大数模乘计算乘法器,其特征在于:所述的双口SRAM的地址信号和控制信号由REDC控制模块提供,SRAM的数据信号与REDC数据通道模块相连。
12、根据权利要求1所述的大数模乘计算乘法器,其特征在于:所述的数据通道单元包括两个Y比特乘法器,一个2Y+1比特加法器,用来完成算法中的乘法和加法运算。
13、根据权利要求12所述的大数模乘计算乘法器,其特征在于:所述的数据通道单元中,
两个Y*Y比特的乘法器的输入分别与两个Y比特的寄存器连接,两个乘法器的结果各输出到一个2Y比特的寄存器;这两个2Y比特的寄存器与一个新的Y比特寄存器共同连接到一个2Y+1比特加法器的输入,该加法器的输出送入到一个2Y+1比特的寄存器中,该2Y+1比特寄存器与加法器的输入和另一个新的Y比特的寄存器及一个作为上述Y*Y比特的乘法器的输入的Y比特的寄存器相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410044461 CN1696894B (zh) | 2004-05-10 | 2004-05-10 | 大数模乘计算乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410044461 CN1696894B (zh) | 2004-05-10 | 2004-05-10 | 大数模乘计算乘法器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1696894A true CN1696894A (zh) | 2005-11-16 |
CN1696894B CN1696894B (zh) | 2010-04-28 |
Family
ID=35349634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410044461 Expired - Fee Related CN1696894B (zh) | 2004-05-10 | 2004-05-10 | 大数模乘计算乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1696894B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104773A (zh) * | 2009-12-18 | 2011-06-22 | 上海华虹集成电路有限责任公司 | 用于实现可变数据个数的fft/ifft处理器的基4模块 |
CN102117195A (zh) * | 2009-12-30 | 2011-07-06 | 上海华虹集成电路有限责任公司 | 大数模乘器电路 |
CN102609239A (zh) * | 2011-09-01 | 2012-07-25 | 北京华大信安科技有限公司 | Ecc协处理器 |
CN102999313A (zh) * | 2012-12-24 | 2013-03-27 | 飞天诚信科技股份有限公司 | 一种基于蒙哥马利模乘的数据处理方法 |
CN111079934A (zh) * | 2019-11-18 | 2020-04-28 | 华中科技大学 | 应用于环域上误差学习加密算法的数论变换单元和方法 |
CN114816531A (zh) * | 2022-04-18 | 2022-07-29 | 海飞科(南京)信息技术有限公司 | 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2507064Y (zh) * | 2001-10-18 | 2002-08-21 | 深圳市中兴集成电路设计有限责任公司 | 一种蒙哥马利模乘器 |
CN1230736C (zh) * | 2002-07-31 | 2005-12-07 | 清华大学 | 智能卡模乘器vlsi结构的计算机实现方法 |
-
2004
- 2004-05-10 CN CN 200410044461 patent/CN1696894B/zh not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104773A (zh) * | 2009-12-18 | 2011-06-22 | 上海华虹集成电路有限责任公司 | 用于实现可变数据个数的fft/ifft处理器的基4模块 |
CN102117195A (zh) * | 2009-12-30 | 2011-07-06 | 上海华虹集成电路有限责任公司 | 大数模乘器电路 |
CN102117195B (zh) * | 2009-12-30 | 2013-05-01 | 上海华虹集成电路有限责任公司 | 大数模乘器电路 |
CN102609239A (zh) * | 2011-09-01 | 2012-07-25 | 北京华大信安科技有限公司 | Ecc协处理器 |
CN102999313A (zh) * | 2012-12-24 | 2013-03-27 | 飞天诚信科技股份有限公司 | 一种基于蒙哥马利模乘的数据处理方法 |
CN102999313B (zh) * | 2012-12-24 | 2016-01-20 | 飞天诚信科技股份有限公司 | 一种基于蒙哥马利模乘的数据处理方法 |
CN111079934A (zh) * | 2019-11-18 | 2020-04-28 | 华中科技大学 | 应用于环域上误差学习加密算法的数论变换单元和方法 |
CN111079934B (zh) * | 2019-11-18 | 2022-09-27 | 华中科技大学 | 应用于环域上误差学习加密算法的数论变换单元和方法 |
CN114816531A (zh) * | 2022-04-18 | 2022-07-29 | 海飞科(南京)信息技术有限公司 | 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 |
CN114816531B (zh) * | 2022-04-18 | 2023-05-02 | 海飞科(南京)信息技术有限公司 | 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1696894B (zh) | 2010-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
US20190222412A1 (en) | Configurable Number Theoretic Transform (NTT) Butterfly Circuit For Homomorphic Encryption | |
Schinianakis et al. | An RNS implementation of an $ F_ {p} $ elliptic curve point multiplier | |
EP3903300A1 (en) | Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques | |
Öztürk et al. | Low-power elliptic curve cryptography using scaled modular arithmetic | |
Li et al. | High-Performance Pipelined Architecture of Elliptic Curve Scalar Multiplication Over GF (${2}^{m} $) | |
US20020010730A1 (en) | Accelerated montgomery exponentiation using plural multipliers | |
CN103793199B (zh) | 一种支持双域的快速rsa密码协处理器 | |
CN1735881A (zh) | 用于执行计算操作的方法和系统以及一种设备 | |
CN1366234A (zh) | 运算电路和运算方法 | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
CN1434380A (zh) | 图像处理装置和方法以及用于该装置的编译程序 | |
CN103226461A (zh) | 一种蒙哥马利模乘方法及其电路 | |
Güneysu | Utilizing hard cores of modern FPGA devices for high-performance cryptography | |
CN1387340A (zh) | 多级计数装置 | |
CN1492316A (zh) | 一种蒙格玛丽模乘算法及其模乘、模幂运算电路 | |
Mera et al. | Compact domain-specific co-processor for accelerating module lattice-based key encapsulation mechanism | |
CN1696894A (zh) | 大数模乘计算乘法器 | |
CN101630244B (zh) | 一种流水线型椭圆曲线双标量乘法系统及方法 | |
CN117240601B (zh) | 加密处理方法、加密处理电路、处理终端及存储介质 | |
Mkhinini et al. | HLS design of a hardware accelerator for homomorphic encryption | |
Oksuzoglu et al. | Parametric, secure and compact implementation of RSA on FPGA | |
CN114138235A (zh) | 软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质 | |
US20030065813A1 (en) | Method and apparatus for performing modular multiplication | |
CN1811698A (zh) | 大数模幂系统的硬件高基实现方法 |
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: 20100428 Termination date: 20150510 |
|
EXPY | Termination of patent right or utility model |