一种快速模乘和模平方电路及其实现方法与流程

文档序号:12718671阅读:335来源:国知局
一种快速模乘和模平方电路及其实现方法与流程
本发明涉及集成电路设计领域,涉及一种用于大数模乘和模平方的快速模约减电路,特别涉及一种快速模乘和模平方电路及其实现方法。
背景技术
:目前对于大数模乘和模平方的模约减过程,通常采用的方案是先计算出乘法和平方的结果再对大素数P进行取模操作,这个过程中就需要专门的取模电路,而一般乘法或平方的结果的数据位宽是P的2倍,因此对大数来说其乘法或平方的取模模块需要的电路面积很大,运算速度慢,电路功耗还很大。技术实现要素:本发明提供了一种快速模乘和模平方电路及其实现方法,该电路能对够对m位的二进制大数进行乘法或平方的同时对大素数P进行模约减,在每一个时钟周期内处理3位,经过m/3+2个时钟周期就能得到模乘和模平方的结果,若m不是3的倍数可以通过对其高位补0直至其为3的倍数。为实现上述目的,本发明采用以下技术方案:一种快速模乘和模平方电路,包括:一组m位的左移三位移位寄存器QU,三组m位的二输入与门阵列AND1、AND2、AND3,四组全加器阵列FA1、FA2、FA3、FA4,m+4位的结果寄存器Q和一个32×m位的ROM单元;其中,m位的左移三位移位寄存器QU,用于存放乘数,并将其第m位命名为U2,第m-1位命名成U1,第m-2位命名成U0;二输入与门阵AND1输入端为U2与被乘数N左移2位的结果;二输入与门阵AND2输入端为U1与被乘数N左移1位的结果;二输入与门阵AND3输入端为U0与被乘数N;ROM单元,用于存放素数P的补码Pb的特定倍数,其输出端口设为X,全加器阵列,用于产生部分积,其中全加器阵列FA1的两个输入分别为与门阵列AND1的输出端和与门阵列AND2的输出端,全加器阵列FA2的输入端分别为与门阵列AND3的输出端和ROM的输出端X,全加器阵列FA3的输入端分别为全加器阵列FA1和FA2的和端口,全加器阵列FA4的输入端为结果寄存器Q左移三位的结果与全加器阵列FA2的和端口。m+4位的结果寄存器Q,用于存放运算过程中的部分积和最终的结果,其输入与全加器阵列FA4的和端口相连,其高四位输出连接到ROM的地址位,低m位通过左移三位连接到全加器阵列FA4的加数端口。四组全加器阵列的最低位进位端连接到0,同时针对电路第m位加法阵列的进位再用五个全加器单元处理,并将其每一级电路运算的结果锁存到结果寄存器Q中。ROM单元的4位地址线Adder从高到低为{Q[m+4],Q[m+3],Q[m+2],Q[m+1]}。ROM单元为32×m位的ROM单元。一种基于快速模乘和模平方电路的实现方法,其特征在于,包括以下步骤:首先需要初始化输出寄存器Q,将RS=0,寄存器全部复位为0;工作中RS=1,电路运行m/3个clk后,被乘数的所有位均已经参与了运算,这时左移三位寄存器N全部为0,下一步只需约减掉Q[m+4],Q[m+3],Q[m+2],Q[m+1]这四位即可;电路继续运行2个clk.,Qm的高四位被成功约减掉;乘法和平方的运算结果被约减到m位。在每一个时钟周期内处理3位,经过m/3+2个时钟周期得到模乘和模平方的结果,若m不是3的倍数则通过对其高位补0直至其为3的倍数。本发明与现有技术相比,具有以下优点:本发明的快速模乘和模平方电路由一组m位的左移三位移位寄存器QU,三组m位的二输入与门阵列AND1、AND2、AND3,四组全加器阵列FA1、FA2、FA3、FA4,m+4位的结果寄存器Q和一个32×m位的ROM单元组成,该电路能对够对m位的二进制大数进行乘法或平方的同时对大素数P进行模约减,在每一个时钟周期内处理3位,经过m/3+2个时钟周期就能得到模乘和模平方的结果。进一步,ROM的地址信号由{Q[m+4],Q[m+3],Q[m+2],Q[m+1]}组成,不再需要额外的地址生成器,降低了电路面积,减低了电路功耗,提高了电路的运行速度。在本发明实现方法中乘法或平方运算与约减运算同时进行,每一个时钟周期都可以累加三行部分积并约减掉上一个时钟周期内溢出的数值,同时乘数N左移三位为下一个时钟周期数据运算做准备,这样通过m/3+2时钟周期就可以得到所需运算结果。使用一个ROM代替掉X值的计算电路,提高了电路运行速度。【附图说明】图1为本发明的电路结构示意图;图2为本发明的具体全加器部分电路图;图3为本发明的左移三位寄存器电路图;图4为本发明的ROM结构示意图;图5为本发明的一位全加器电路图。【具体实施方式】下面结合附图对本发明作详细描述:如图1所示,本发明一种快速模乘和模平方电路包括:1组m位的左移三位移位寄存器QU;3组m位的二输入与门阵列AND1,AND2,AND3;4组全加器阵列FA1,FA2,FA3,FA4;m+4位的结果寄存器Q和1个32×m位的ROM单元。其中,m位的左移三位移位寄存器QU用来存放乘数,并将其第m位命名为U2,第m-1位命名成U1,第m-2位命名成U0。二输入与门阵AND1输入端为U2与被乘数N左移2位的结果;二输入与门阵AND2输入端为U1与被乘数N左移1位的结果;二输入与门阵AND3输入端为U0与被乘数N。m+4位的结果寄存器Q,用来存放运算过程中的部分积和最终的结果,该寄存器的输入与全加器阵列FA4的和端口相连。该寄存器的高四位输出连接到ROM的地址位,低m位通过左移三位连接到全加器阵列FA4的加数端口。电路中ROM单元用来存放素数P的补码Pb的特定倍数,该ROM的读写方式与传统ROM的读写方式相同,其4位地址线Adder从高到低为{Q[m+4],Q[m+3],Q[m+2],Q[m+1]},其输出端口设为X,其内部存放的数据如表1所示。表1AdderXAdderX00864*Pb18*Pb972*Pb216*Pb1080*Pb324*Pb1188*Pb432*Pb1296*Pb540*Pb13104*Pb648*Pb14112*Pb756*Pb15120*Pb四行全加器阵列用于产生部分积,其中全加器阵列FA1的两个输入分别为与门阵列AND1的输出端和与门阵列AND2的输出端,全加器阵列FA2的输入端分别为与门阵列AND3的输出端和ROM的输出端X,全加器阵列FA3的输入端分别为全加器阵列FA1和FA2的和端口,全加器阵列FA4的输入端为寄存器Q左移三位的结果与全加器阵列FA2的和端口。这四行全加器阵列的最低位进位端连接到0,同时针对电路第m位加法阵列的进位再用5个全加器单元处理,并将其每一级电路运算的结果锁存到寄存器Q中。具体如图2所示。左移三位寄存器QU用来存放乘数,每个时钟上升沿来临的时候,QU内寄存的数值左移三位并且将其中最低三位补零,最高三位舍弃。将QU最高三位分别连接到与门阵列AND1,AND2,AND3的输入端。具体如图3所示;ROM单元内存放的是PB的特定倍数,用来参与到部分积溢出部分的约减运算。其读操作与传统ROM单元相同,在每个clk的上升沿读取出其指定地址的值。该ROM单元的地址线可以连接到Q的高四位{Q[m+4],Q[m+3],Q[m+2],Q[m+1]},如图4所示。图5中所需的一位全加器单元结构由9个或非门单元构成,其中a,b分别为一位全加器的加数与被加数输入端,cin为进位输入端,s为和输出端,cout为进位输出端,如图5所示。实施例参见图1,图2和图3,m位的左移三位移位寄存器QU用来存放乘数,并将其第m位命名为U2,第m-1位命名成U1,第m-2位命名成U0。被乘数为N,m位的二输入与门阵AND1输入端为U2与被乘数N左移2位的结果,将其输出端连接到全加器阵列FA1的被加数端口。二输入与门阵AND2输入端为U2与被乘数N左移1位的结果,将其输出端连接到全加器阵列FA1的加数端口。二输入与门阵输入端AND2为U2与被乘数N,将其输出端连接到全加器阵列FA2的加数端口。ROM内存放的是Pb的特定倍数,其地址由{Q[m+4],Q[m+3],Q[m+2],Q[m+1]}组成,其输出端连接在全加器阵列FA2的被加数端口。将全加器阵列FA1与FA2的和端口分别连接到全加器阵列FA3的加数与被加数端口,并将其全加器阵列FA3的和端口连接到全加器阵列FA4的加数端口,寄存器组Q通过左移三位连接到FA4的被加数端口。全加器单元的最低2位因为乘数N的左移因此可以将左移后空出的位数接0,四组全加器阵列最低位的进位全部接0,详见图2。在本发明中,该电路每经过一个时钟周期就可以累加3行乘数,并约减掉上一次部分积。在电路运行时首先需要初始化输出寄存器Q,将RS=0,寄存器全部复位为0。工作中RS=1,电路运行m/3个clk后,被乘数的所有位均已经参与了运算,这时左移三位寄存器N全部为0,下一步只需约减掉Q[m+4],Q[m+3],Q[m+2],Q[m+1]这四位即可。电路继续运行2个clk.,Qm的高四位被成功约减掉。乘法和平方的运算结果被约减到m位。以上,仅为本发明的较佳实施例,并非仅限于本发明的实施范围,凡依本发明专利范围的内容所做的等效变化和修饰,都应为本发明的技术范畴。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1