一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

采用迭代计算的模数运算电路的制作方法

2021-12-07 20:56:00 来源:中国专利 TAG:


1.本发明关于模数运算电路,特别是一种采用迭代计算的模数运算电路。


背景技术:

2.模数运算(modular operation)广泛运用在密码系统中。例如,许多产生密钥或数字签名的算法都需要模数运算,且通常会使用除法器来执行模数运算,并在除法完成后得到余数。然而实现除法器的硬件相当复杂,且需要较大的电路面积。若密码系统需要对大数值执行模数运算,则除法器将需要更大的面积,而使密码系统的构造不切实际。


技术实现要素:

3.本发明有关于一种模数运算电路的操作方法,模数运算电路包括控制器、模数乘法器及模数加法器,方法包括控制器将第一数字分为k分段,在第一迭代中,模数乘法器根据k分段的第一分段及第一基数,执行第一模数乘法运算以产生第一中间结果,及模数加法器根据第一中间结果及k分段的第二分段,执行第一模数加法运算以产生第一迭代余数,及在第二迭代中,模数乘法器执行第二模数乘法运算以根据第一迭代余数及第二基数产生第二中间结果,及模数加法器根据第二中间结果及k分段的第三分段,进行第二模数加法运算以产生第二迭代余数。k系为大于2的整数。k分段中的每个分段的位长度小于或等于第三数字。第三数字是第二数字以2为底数的对数的无条件进位结果。第一基数系根据第二分段的位长度的以2为底数的第一指数值而得出。第二基数系根据第三分段的位长度的以2为底数的第二指数值而得出。
4.本发明有关于另一种模数运算电路,包括控制器、模数乘法器及模数加法器。控制器用以将第一数字分为k分段。模数乘法器耦接于控制器,并用以执行第一模数乘法运算,以在第一迭代期间根据k分段中的第一分段及第一基数产生第一中间结果,并在第二迭代期间执行第二模数乘法运算以根据第一迭代余数及第二基数产生第二中间结果。模数加法器,耦接于控制器,并用以执行第一模数加法运算以在第一迭代期间根据第一中间结果及k个分段中的第二个分段产生第一迭代余数,并执行第二模数加法运算以在第二迭代过程中,根据第二中间结果及k分段中的第三分段,产生第二迭代余数。k系为大于2的整数。k分段中的每个分段的位长度小于或等于第三数字。第三数字是第二数字以2为底数的对数的无条件进位结果。第一基数系根据第二分段的位长度的以2为底数的第一指数值而得出。第二基数系根据第三分段的位长度的以2为底数的第二指数值而得出。
5.本发明有关于另一种模数运算电路的操作方法,模数运算电路包括控制器、模数乘法器及模数加法器,方法包括控制器将第一数字分为二分段。在第一迭代中,模数乘法器根据二分段的第一分段及第一基数,执行第一模数乘法运算以产生第一中间结果,及模数加法器根据第一中间结果及二分段的第二分段,执行第一模数加法运算以产生第一迭代余数。控制器输出余数。二分段中的每个分段的位长度小于或等于第三数字。第三数字是第二数字以2为底数的对数的无条件进位结果。第一基数系根据第二分段的位长度的以2为底数
的第一指数值而得出。
附图说明
6.图1显示本发明实施例中的一种模数运算电路。
7.图2显示图1中模数运算电路的操作方法的流程图。
8.其中,附图标记说明如下:
9.100:模数运算电路
10.110:控制器
11.120:模数乘法器
12.130:模数加法器
13.200:方法
14.s210至s250:步骤
15.a1:第一数字
16.as1至ask:分段
17.n1:第二数字
18.r1:余数
具体实施方式
19.图1显示本发明实施例中的一种模数运算电路100。模数运算电路100包括控制器110、模数乘法器120及模数加法器130。在一些实施例中,模数运算电路100可用以将第一数字a1除以第二数字n1以得出余数r1。
20.在图1,模数乘法器120及模数加法器130耦接于控制器110。模数乘法器120可通过将二输入数字相乘以产生乘积,及输出乘积除以另一输入数字的余数,藉以执行模数乘法运算。模数加法器130可通过将二输入数字相加以产生总和,及输出总和除以另一输入数字的余数,藉以执行模数加法运算。此外,控制器110可控制模数乘法器120及模数加法器130的数据流。在一些实施例中,控制器110可将第一数字a1分为k分段as1至ask,其中k可以是大于或等于2的整数。在一些实施例中,为了将模数运算电路100的面积维持在期望大小内,k分段as1至ask中的每个分段可具有小于或等于第三数字n1的位长度。第三数字n1可以是第二数字n1以2为底数的对数的无条件进位结果,即n1可是log2n1。在图1,分段as1至ask的位长度ab1至abk可以相同;然而,在一些其他实施例中,至少二分段的位长度ab1至abk可以不同。
21.由于第一数字a1被分为k分段as1至ask,因此第一数字a1可由以下公式(1)表示。
[0022][0023]
在公式(1)中,第一数字a1可进一步以公式(2)至(7)的方式表示,其中k系为大于3且小于(k

1)的整数。
[0024]
a1={[(as1
×2ab2
as2)
×2ab3
as3]
×2ab4
as4}
×2ab5
... ask
[0025]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(2)
[0026]
t1=as1
×2ab2
as2;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(3)
[0027]
t2=t1
×2ab3
as3;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(4)
[0028]
t3=t2
×2ab4
as4;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(5)
[0029]
...
[0030]
tk=t(k

1)
×
2ab(k 1) as(k 1)公式(6)
[0031]
...
[0032]
t(k

1)=t(k

2)
×
2abk ask=a1公式(7)
[0033]
在此情况下,对于具有较小值的迭代值t1、t2至t(k

1),可将第一数字a1的复杂的模数运算分为几个简化的模数运算。亦即可通过模数乘法器120及模数加法器130来执行(k

1)迭代以执行模数运算而得出余数r1,因此无须使用执行大数值的模数运算的复杂除法电路。
[0034]
在一些实施例中,k可等于2。亦即第一数字a1可被分为二分段as1及as2。在此情况下,模数运算可不需要多次迭代操作即可得出余数r1。即迭代值t1的模数运算可得出余数r1。
[0035]
图2显示模数运算电路100的操作方法200,用以得出余数r1。方法200包括步骤s210至s250。
[0036]
s210:控制器110将第一数字a1分为k分段as1至ask;
[0037]
s220:在第一迭代,模数乘法器120根据第一分段as1及第一基数b1执行模数乘法运算以产生第一中间结果itm1;
[0038]
s222:模数加法器130根据第一中间结果itm1及第二分段as2进行模数加法运算,以产生第一迭代余数itr1;
[0039]
s230:若第(k

1)迭代已完成,执行步骤s250,若否,则执行步骤s240;
[0040]
s240:在第k迭代中,模数乘法器120根据第(k

1)迭代余数及第k基数进行模数乘法运算,以产生第k中间结果;
[0041]
s242:模数加法器130根据第k中间结果及k分段中的第(k 1)分段执行模数加法运算,以产生第k迭代余数,跳至步骤s230;
[0042]
s250:输出第(k

1)迭代余数作为第一数字a1除以第二数字n1的余数r1。
[0043]
在步骤s210中将第一数字a1分为k分段as1至ask之后,可在步骤s220及s222中对迭代值t1执行模数运算。例如,在步骤s220中,模数乘法器120可执行模数乘法运算以根据第一分段as1、第一基数b1及第二数字n1产生第一中间结果itm1。第一中间结果itm1可由以下的公式(8)表示。
[0044]
itm1=(as1
×
b1)mod n1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(8)
[0045]
即模数乘法器120可将第一分段as1与第一基数b1相乘以产生相乘结果,并通过将相乘结果除以第二数字n1得到余数来产生第一中间结果itm1。在一些实施例中,第一基数b1可以是第二分段as2的位长度ab2的以2为底数的指数值,即第一基数b1可表示为2
ab2
。然而,在一些实施例中,为了确保as1
×
b1在模数乘法器120的计算能力之内,第一基数b1可以是第一指数值2
ab2
除以第二数字n1的余数,即第一基数b1可以是2
ab2 mod n1。并且,在步骤
s222,模数加法器130可根据第一中间结果itm1、第二分段as2及第二数字n1执行模数加法运算以产生第一迭代余数itr1。第一迭代余数itr1可由以下的公式(9)表示。
[0046]
itr1=(itm1 as2)mod n1=[(as1
×
b1)mod n1 as2]mod n1
[0047]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(9)
[0048]
即模数加法器130可将第一中间结果itm1及第二片段as2相加以产生总和,并将总和除以第二数字n1以得到余数来产生第一迭代余数itr1。
[0049]
在步骤s220及s222之后,可获得迭代值t1除以第二数字n1的余数itr1,且第一迭代余数itr1可用于下一迭代。例如,在步骤s240中,在第二迭代期间,模数乘法器120可根据第一迭代余数itr1及第二基数b2执行模数乘法运算以产生第二中间结果itm2。第二中间结果itm2可由以下的公式(10)表示。
[0050]
itm2=(itr1
×
b2)mod n1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(10)
[0051]
在一些实施例中,可根据第三分段as3的位长度ab3的以2为底数的指数值而得出第二基数b2,即第二基数b2可以表示为2
ab3
。然而,在一些实施例中,为了确保itr1xb2的值在模数乘法器120的计算能力之内,第二基数b2可以是第二指数值2
ab3
除以第二数字n1的余数,即第二个基数b2可以是2
ab3 mod n1。
[0052]
而且,在步骤s242中,模数加法器130可根据第二中间结果itm2及第三片段as3执行模数加法运算以产生第二迭代余数itr2。第二迭代余数itr2可由以下的公式(11)表示。
[0053]
itr2=(itm2 as3)mod n1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(11)
[0054]
在步骤s240及s242之后,可获得迭代值t2除以第二数字n1的余数itr2,且第二迭代余数itr2可用于下一迭代,依此类推。最后,在第(k

1)迭代完成之后,步骤s230会停止进一步的迭代,并且在步骤s250中模数运算电路100可将第(k

1)迭代余数作为第一数字a1除以第二数字n1的余数r1输出。
[0055]
在一些实施例中,为了将模数运算电路100的大小维持在可接受的范围内,模数乘法器120及模数加法器130的计算能力可以是固定的。例如,模数乘法器120及模数加法器130的计算能力可仅够处理位长度等于或小于第三数字n1的数字。因此,若第一分段as1的位长度ab1小于第三数字n1,可由模数乘法器120直接执行公式(8)。
[0056]
然而,若第一分段as1的位长度ab1等于第三数字n1,则计算可能会超出模数乘法器120的能力。为了确保计算结果的正确性,可在模数乘法器120执行模数乘法运算之前对第一分段as1执行模数运算。在一些实施例中,为了重复使用硬件及减小模数运算电路100的面积,可使用模数加法器130来执行模数运算。例如,模数加法器130可对第一分段as1及零执行模数加法运算以产生处理后的输入数字pi1,并且模数乘法器120将处理后的输入数字pi1与第一基数b1相乘以产生相乘结果,及将相乘结果除以第二数字n1以得出余数,用以产生第一中间结果itm1。亦即,若第一分段as1的位长度ab1等于第三数字n1,则在步骤s220中执行公式(12),用以代替公式(8)。
[0057]
itm1=(pi1
×
b1)mod n1=[(as1 mod n1)
×
b1]mod n1
ꢀꢀꢀꢀꢀꢀꢀꢀ
公式(12)
[0058]
类似地,若第二分段as2的位长度ab2小于第三数字n1,则可由模数加法器130直接执行公式(9)。
[0059]
然而,若第二分段as2的位长度ab2等于第三数字n1,则计算可能会超出模数加法器130的能力。为了确保计算结果的正确性,可在模数加法器130执行模数加法运算之前对
第二分段as2执行另一模数运算。在一些实施例中,为了重复使用硬件及减小模数运算电路100的面积,可使用模数加法器130来执行模数运算。例如,模数加法器130可对第二分段as2及零执行模数加法运算以产生处理后的输入数字pi2,并且模数加法器130将第一中间结果itm1与处理后的输入数字pi2相加以产生总和,将总和除以第二数字n1以得出余数,用以产生第一迭代余数itr1。亦即,若第二分段as2的位长度ab2等于第三数字n1,则在步骤s222中执行公式(13),用以代替公式(9)。
[0060]
itr1=(itm1 pi2)mod n1=[itm1 (as2mod n1)]mod n1
ꢀꢀꢀꢀꢀꢀꢀ
公式(13)
[0061]
在一些实施例中,方法200可还包括控制器130判定分段as1至ask的位长度是否小于第三数字n1或等于第三数字n1的步骤。因此,若计算超出了模数乘法器120或模数加法器130的能力,则可在由模数乘法器120及模数加法器130处理之前对分段as1至ask执行新增的模数运算,进而确保模数运算电路100的计算结果正确。
[0062]
综上所述,本发明实施例提供的模数运算电路及用以操作模数运算电路的方法,可利用模数乘法器及模数加法器进行多次迭代的模数运算。因此,可省去对大数值进行模数运算的复杂的分割电路,可大幅减小模数运算电路的面积。
[0063]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献