背景技术
在数据加密、控错、压缩等领域,常要对二元域GF(2m)(Glois Field,伽罗华域)中元素进行相乘运算,例如对于文件的加密,可能要对每个字节进行相应的变换操作,其中包括乘运算,若将每个字节用GF(2)中的一个元素表示,则要求对GF(2)的域元素进行相乘运算,为了加速乘运算,可设计相应的专用硬件来实现不同域元素之间的相乘,通常不同的域元素相乘,需要设计成不同的电路结构。若采用VLSI(超大规模集成电路)集成时,不仅增加了电路规模,也增加了VLSI电路设计的复杂性。但对于某一个二元域,只须采用同一种电路结构,即可实现域元素间的相乘。若重复使用了多个电路单元并适当改变连线即可实现域元素间的相乘,从而简化了电路设计,扩大了乘法器的应用范围。
在实现二元域乘法的过程中,若两个域元素相乘,则需要进行二元域的加法和乘法:
二元域加法的原理是:二元域加法无进位,相当于对应位求异或(XOR),以GF(24)为例,设:
A=a3x3+a2x2+a1x1+a0x0=(a3,a2,a1,a0)………………………………(1.1)
B=b3x3+b2x2+b1x1+b0x0=(b3,b2,b1,b0)………………………………(1.2)
则A+B=(a3+b3)x3+(a2+b2)x2+(a1+b1)x1+(a0+b0)x0…………………(1.3)
=(a3+b3,a2+b2,a1+b1,a0+b0)
从上述式(1.1)、(1.2)和(1.3)可以看出二元域的加法只要按位异或(XOR)即可。
二元域乘法的原理是:二元域乘法的实现过程中,本原多项式起着重要的作用,GF(24)的本原多项式为:
P(x)=∑pixi=x4+x+1………………………(1.4)
因此A*B=A(x)*B(x)modP(x)………………………………(1.5)
A*B=a3Bx3+a2Bx2+a1Bx1+a0Bx0......................(1.6)
=C=c3x3+c2x2+c1x1+c0x0
Bx=B(x)*x=b3x4+b2x3+b1x2+b0x1mod(x4+x+1)
=b2x3+b1x2+(b0+b3)x1+b3…………(1.7)
=(b2,b1,b0+b3,b3)
由公式(1.7)可知实现Bxi是比较容易的,只需要i个异或门(XOR)。将ai□Bxi(i=0,1,2,3)全部求出以后再做加法即可实现二元域乘法。
现有技术中,二元域乘法器采用上述公式(1.6)和(1.7)的原理,如图1,所示的是GF(24)域上的乘法器电路图:
模块11的输入为多项式B(x)的各项系数b0,b1,b2,b3,在模块11中包括一转换电路,该电路的输入为J(x)=jixi,其输出为H(x)=hixi,其中,该电路按下述关系对该电路的输入进行转换:
,i从1至m-1。
模块12、13采用和模块11中同样的转换电路,实现Bxi移位乘法。
在模块31、32、33、34中,各包括一个加法器,求出公式(1.5)中的部分加数,其输入端分别与模块21、22、23、24的相同位置的输出端连接,在输出单元30中的4个加法单元中进行总的加法。其中,c0,c1,c2,c3分别为上述公式(1.6)中A*B的各项系数。
由此可见,图1所示乘法器的缺点是:进行乘法时,上述公式(1.5)直接展开将是非常复杂无规律的;模块11、12、13交叉连线复杂,尤其是做最后的加法时交叉走线相当多,在GF(2m))域上,当m>4时将更加复杂,这会占用不少的版图面积,也使得连线延时在版图未做出来之前变得更加不好评估,这大大增大了电路设计的难度。
如前所述,加法器的实现是采用XOR逻辑门实现,而XOR门对毛刺相当敏感,当输入信号不同时到达时,XOR门就会产生不必要的翻转,这会增加功耗和延时,更为严重的是这可能使得乘法器的下一级电路接受到错误的数据,以致电路功能出错。
发明内容
本发明的目的是提供一种结构紧凑、占用版图面积小的二元域乘法器,解决现有技术的乘法器交叉连线复杂、占用版图面积过大的技术问题。
为解决上述技术问题,本发明提供一种二元域乘法器,包括:
二元域GF(2m)中的任意两域元素:B(x)=bixi,A(x)=aixi,bi和ai为系数,i从0至m-1;GF(2m)域中的本原多项式为P(x);
第一输入单元利用逻辑电路实现预期的输出信号,输入端的输入信号为域元素B(x)的系数bi,其输出端的输出信号为BximodP(x)所包含的所有项的系数,其中,mod表示求模运算;
第二输入单元包括m个顺序排列的乘法单元,第k个乘法单元的第一输入端的输入信号为域元素A(x)的系数a0~am-1,其第二输入端与所述第一输入单元的输出端连接,输入信号为BximodP(x)中对应x(k-1)项的m个系数,所述系数a0~am-1中的ai与BximodP(x)中对应的x(k-1)项的系数进行乘法运算,并输出m个A(x)与B(x)乘积中对应x(k-1)项的部分乘积系数,k∈[1,m];
输出单元包括m个顺序排列的加法单元,第k个加法单元与所述第k个乘法单元的输出端顺序连接,各加法单元的输出端的输出信号为输入信号相加的结果,即A(x)与B(x)乘积的系数;其中,所述输出单元中的各加法单元为无进位加法器;m为二元域GF(2m)的阶次,m取大于或等于1的整数。
上述二元域乘法器的各乘法单元由m个逻辑与门构成,第k个乘法单元的ai与BximodP(x)中对应的x(k-1)项的系数通过所述逻辑与门进行逻辑与运算。
所述无进位加法器由逻辑异或门构成。
为解决上述技术问题,本发明还提供一种二元域乘法器,包括:
二元域GF(2m)中的任意两域元素:B(x)=bixi,A(x)=aixi,bi和ai为系数,i从0至m-1;GF(2m)域中的本原多项式为P(x);
第一输入单元利用逻辑电路实现预期的输出信号,输入端的输入信号为域元素B(x)的系数bi,其输出端的输出信号为BximodP(x)所包含的所有项的系数,其中,mod表示求模运算;
第二输入单元包括m个顺序排列的乘法单元,第k个乘法单元的第一输入端的输入信号为域元素A(x)的系数a(k-1),其第二输入端与所述第一输入单元的输出端连接,输入信号为Bx(k-1)modP(x)的m个系数;所述第k个乘法单元输出端的输出信号为其第一输入端的输入信号与第二输入端的输入信号的乘积,即A(x)与B(x)乘积的部分系数,k∈[1,m];
输出单元包括m个顺序排列的加法单元,第k个加法单元,分别与各乘法单元的第k个部分乘积系数的输出端对应连接,所述各个加法单元的输出端的输出信号为A(x)与B(x)乘积的对应xi项的m个部分系数;其中,所述输出单元中的各加法单元为无进位加法器;m为二元域GF(2m)的阶次,m取大于或等于1的整数。
上述二元域乘法器的各乘法单元由m个逻辑与门构成,第k个乘法单元的a(k-1)和Bx(k-1)modP(x)的所有系数进行逻辑与运算。
所述无进位加法器由逻辑异或门构成。
上述技术方案,通过在一个输入单元中生成BximodP(x),i从0至m-1,使乘法器电路交叉线减少,结构紧凑,简化了原本松散的乘法器和加法器结构,减少电路所占用的版图面积。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明的实施例针对现有的二元域乘法器结构松散,交叉走线复杂,电路占用版图面积大的问题,提供一种结构紧凑、占用版图面积小的二元域乘法器,同时也减少了连线的延时,降低功耗。
如图2所示:本发明的二元域乘法器,包括:二元域GF(2m)中的任意两域元素:B(x)=bixi,A(x)=aixi,bi和ai为系数,i从0至m-1;GF(2m)域中的本原多项式为P(x);
第一输入单元100,利用逻辑电路实现预期的输出信号,其输入信号定义为域元素B(x)的系数bi,其输出端的输出信号为BximodP(x)所包含的所有项的系数,其中,i从0至m-1,mod表示求模运算;
第二输入单元200包括m个顺序排列的乘法单元,第k个乘法单元的第一输入端的输入信号为域元素A(x)的系数a0~am-1,其第二输入端与所述第一输入单元的输出端连接,输入信号为BximodP(x)所有项的系数中对应x(k-1)项的系数;各乘法单元的输出端的输出信号为其第一输入端和第二输入端的输入信号的乘积,即A(x)与B(x)乘积的部分系数,k∈[1,m];
输出单元300包括m个顺序排列的加法单元,第k个加法单元与所述第k个乘法单元的输出端对应连接,各加法单元的输出端的输出信号为输入信号相加的结果,即A(x)与B(x)乘积的系数。
如图3所示,以二元域GF(24)上的乘法器为例来说明上述乘法器电路的设计原理:
假设GF(24)域中的元素第一乘数为:
B=b3x3+b2x2+b1x1+b0x0=(b3,b2,b1,b0)………………………………………(2.1)
第二乘数为:A=a3x3+a2x2+a1x1+a0x0=(a3,a2,a1,a0)………………………(2.2)
A*B=a3Bx3+a2Bx2+a1Bx1+a0Bx0
第一乘数与第二乘数的积: ……………(2.3)
=C=c3x3+c2x2+c1x1+c0x0
由于二元域的定义是基于本原多项式P(x),多项式的项数越多,实现起来就越复杂,利用本原多项式的特性,可以使多项式乘数的阶次降低。
GF(2m)的各元素如下表:
Elements |
Binary |
Octal |
0 |
0000 |
0 |
1 |
0001 |
1 |
a |
0010 |
2 |
[0065]
a<sup>2</sup> |
0100 |
4 |
a<sup>3</sup> |
1000 |
8 |
a<sup>4</sup>=a+1 |
0011 |
3 |
a<sup>5</sup>=a<sup>2</sup>+a |
0110 |
6 |
a<sup>6</sup>=a<sup>3</sup>+a<sup>2</sup> |
1100 |
C |
a<sup>7</sup>=a<sup>3</sup>+a+1 |
1011 |
B |
a<sup>8</sup>=a<sup>2</sup>+1 |
0101 |
5 |
a<sup>9</sup>=a<sup>3</sup>+a |
1010 |
A |
a<sup>10</sup>=a<sup>2</sup>+a+1 |
0111 |
7 |
a<sup>11</sup>=a<sup>3</sup>+a<sup>2</sup>+a |
1110 |
E |
a<sup>12</sup>=a<sup>3</sup>+a<sup>2</sup>+a+1 |
1111 |
F |
a<sup>13</sup>=a<sup>3</sup>+a<sup>2</sup>+1 |
1101 |
D |
a<sup>14</sup>=a<sup>2</sup>+1 |
1001 |
9 |
a<sup>15</sup>=1 |
0001 |
1 |
表1
二元域GF(24)的本原多项式为:P(x)=x4+x+1,而GF(24)域的各元素中,由上表可知,有x4=x+1,因此A*B=A(x)*B(x)modP(x),简单来讲,
Bx=B(x)*x=b3x4+b2x3+b1x2+b0x1mod(x4+x+1)
=b2x3+b1x2+(b0+b3)x1+b3………………………(2.4)
=(b2,b1,b0+b3,b3)
Bx2=B(x)*x2=b3x5+b2x4+b1x3+b0x2mod(x4+x+1)
=b1x3+(b0+b3)x2+(b2+b3)x1+b2……………………(2.5)
=(b1,b0+b3,b2+b3,b2)
二元域乘法可以等效为一矩阵,以GF(24)为例说明:
左行乘右列,进行逐位AND,也就是对应位进行“与”操作。具体电路结构如下:
第一输入单元101利用逻辑电路实现预期的输出信号,其输入信号为多项式B(x)的各项系数b0,b1,b2,b3,输出端的信号为BximodP(x)所包含的所有项的系数,i从0至m-1,以b0、b1、b2和b3作为输入信号的第一输入单元101,其输出信号为b0、b1、b2、b3、b0+b3、b1+b2、b2+b3。
第二输入单元201中,第k个乘法单元的第一输入端的输入信号为a0~a3,其第二输入端与所述第一输入单元101的输出端连接,输入信号为BximodP(x)所包含的所有项的系数中对应x(k-1)项的系数;各乘法单元的输出端的输出信号为其第一输入端与第二输入端的输入信号的乘积,即A(x)与B(x)乘积的部分系数,k∈[1,m];
输出单元301中的第k个加法单元,与所述第k个乘法单元的输出端顺序连接,所述各个加法单元的输出端的输出信号为输入信号相加的结果,即A(x)*B(x)modP(x)的各系数。
乘法单元2010的第一输入端的输入信号为第二乘数的系数a0,a1,a2,a3,其第二输入端分别与第一输入单元101的输出端b0,b3,b2,b1连接,其第1输出端的输出信号为a0与b0的乘积,第2输出端的输出信号为a1与b3的乘积,第3输出端的输出信号为a2与b2的乘积,第4输出端的输出信号为a3与b1的乘积;
乘法单元2011的第一输入端的输入信号为第二乘数的系数a0,a1,a2,a3,其第二输入端分别与所述第一输入单元101的输出端b1,b0+b3,b2+b3,b1+b2连接,其第1输出端的输出信号为a0与b1的乘积,第2输出端的输出信号为a1与b0+b3的乘积,第3输出端的输出信号为a2与b2+b3的乘积,第4输出端的输出信号为a3与b1+b2的乘积;
乘法单元2012的第一输入端的输入信号为第二乘数的系数a0,a1,a2,a3,其第二输入端分别与所述第一输入单元101的输出端b2,b1,b0+b3,b2+b3连接,其第1输出端的输出信号为a0与b2的乘积,第2输出端的输出信号为a1与b1的乘积,第3输出端的输出信号为a2与b0+b3的乘积,第4输出端的输出信号为a3与b2+b3的乘积;
乘法单元2013的第一输入端的输入信号为第二乘数的系数a0,a1,a2,a3,其第二输入端分别与所述第一输入单元101的输出端b3,b2,b1,b0+b3连接,其第1输出端的输出信号为a0与b3的乘积,第2输出端的输出信号为a1与b2的乘积,第3输出端的输出信号为a2与b1的乘积,第4输出端的输出信号为a3与b0+b3的乘积。
上述各乘法单元中均由4个逻辑与门构成,其中,第k个乘法单元的ai和BximodP(x)中包含的对应x(k-1)项的系数进行逻辑与运算。
再如图3所示,输出单元301中:
加法单元3010的输入端的输入信号分别为:乘法单元2010的第1输出端、第2输出端、第3输出端、第4输出端的输出信号,其输出端的输出信号为其输入端输入的信号的和c0;
加法单元3011的输入端的输入信号分别为:乘法单元2011的第1输出端、第2输出端、第3输出端、第4输出端的输出信号,其输出端的输出信号为其输入端输入的信号的和c1;
加法单元3012的输入端的输入信号分别为:乘法单元2012的第1输出端、第2输出端、第3输出端、第4输出端的输出信号,其输出端的输出信号为其输入端输入的信号的和c2;
加法单元3013的输入端的输入信号分别为:乘法单元2013的第1输出端、第2输出端、第3输出端、第4输出端的输出信号,其输出端的输出信号为其输入端输入的信号的和c3。
该实施例通过在第一输入单元101中直接产生BximodP(x)(i=0,1,2,3)的7个元素,在第二输入单元201的4个乘法单元中求出各个加数,在输出单元301中的4个加法单元中进行总的加法。
该实施例所述的乘法器解决了生成BximodP(x)的交叉连线过多、连线过长的问题,在输出单元301中求和时,也减少了各个乘法单元与各加法单元的交叉连线,使电路结构更为规整、紧凑,且版图面积大大减小,也可避免加法器所采用异或门的信号不同时到达的问题,异或门不会再产生不必要的翻转,避免乘法器产生错误的数据,减少电路的功耗和延时,降低电路的设计难度。
上述实施例中的二元域乘法器不限于GF(24),也可以是GF(25)、GF(26)等域上的乘法器,若是GF(25)、GF(26),可根据GF(25)的本原多项式或者GF(26)的本原多项式,利用上述图3所述乘法器的原理,即可得到结构相似的GF(25)或者GF(26)上的乘法器电路。即本发明实施例的乘法器电路的原理可以扩展到GF(2m)的应用上,如图2所示。
如图4所示,为本发明的实施例基于GF(2m)域上的另一种乘法器电路结构框图,与图2或图3所示乘法器的区别在于:第二输入单元102中的各乘法单元的第一输入端的输入信号和第二输入端的输入信号。
第一输入单元102利用逻辑电路实现预期的输出信号,其输入信号为多项式B(x)的各项系数,输出端的信号为BximodP(x)所包含的所有项的系数,i从0至m-1,以b0、b1、b2和b3作为输入信号的第一输入单元102,其输出信号为b0、b1、b2、b3、b0+b3、b1+b2、b2+b3。
在第二输入单元202中:第k个乘法单元的第一输入端的输入信号为a(k-1),其第二输入端与所述第一输入单元102的输出端连接,输入信号为Bx(k-1)modP(x)的所有系数;所述第k个乘法单元输出端的输出信号为所述第一输入端的输入信号与第二输入端的输入信号的乘积,即A(x)与B(x)乘积的部分系数,k∈[1,m];
输出单元302中的第k个加法单元,分别与各个乘法单元的第k个部分积输出端对应连接,所述各个加法单元的输出端的输出信号为输入信号相加的结果,即A(x)*B(x)modP(x)的各项系数。具体电路结构如图5所示:
第二输入单元203包括4个乘法单元:
乘法单元2030的第一输入端的输入信号为第二乘数的系数a0,其第二输入端分别与第一输入单元103的输出端b0,b1,b2,b3连接,其输出端的输出信号分别为a0与b0,b1,b2,b3的乘积;
乘法单元2031的第一输入端的输入信号为第二乘数的系数a1,其第二输入端分别与第一输入单元103的输出端b3,b0+b3,b1,b2连接,其输出端的输出信号分别为a1与b3,b0+b3,b1,b2的乘积;
乘法单元2032的第一输入端的输入信号为第二乘数的系数a2,其第二输入端分别与第一输入单元103的输出端b2,b2+b3,b0+b3,b1连接,其输出端的输出信号分别为a2与b2,b2+b3,b0+b3,b1的乘积;
乘法单元2033的第一输入端的输入信号为第二乘数的系数a3,其第二输入端分别与第一输入单元103的输出端b1,b1+b2,b2+b3,b0+b3连接,其输出端的输出信号分别为a3与b1,b1+b2,b2+b3,b0+b3的乘积。
上述各乘法单元中均由4个逻辑与门构成,分别实现a(k-1)和Bx(k-1)modP(x)的所有系数进行逻辑与运算。
再如图5所示,输出单元303包括4个加法单元:
加法单元3030的输入端的输入信号分别为:乘法单元2030的第1输出端的输出(a0与b0的乘积),乘法单元2031的第1输出端的输出(a1与b3的乘积),乘法单元2032的第1输出端的输出(a2与b2的乘积),乘法单元2033的第1输出端的输出(a3与b1的乘积),其输出端的输出信号为其输入端输入的信号和c0;
加法单元3031的输入端的输入信号分别为:乘法单元2030的第2输出端的输出(a0与b1的乘积),乘法单元2031的第2输出端的输出(a1与b0+b3的乘积),乘法单元2032的第2输出端的输出(a2与b2+b3的乘积),乘法单元2033的第2输出端的输出(a3与b1+b2的乘积),其输出端的输出信号为其输入端输入的信号和c1;
加法单元3032的输入端的输入信号分别为:乘法单元2030的第3输出端的输出(a0与b2的乘积),乘法单元2031的第3输出端的输出(a1与b1的乘积),乘法单元2032的第3输出端的输出(a2与b0+b3的乘积),乘法单元2033的第3输出端的输出(a3与b2+b3的乘积),其输出端的输出信号为其输入端输入的信号的和c2;
加法单元3033的输入端的输入信号分别为:乘法单元2030的第4输出端的输出(a0与b3的乘积),乘法单元2031的第4输出端的输出(a1与b2的乘积),乘法单元2032的第4输出端的输出(a2与b1的乘积),乘法单元2033的第4输出端的输出(a3与b0+b3的乘积),其输出端的输出信号为其输入端输入的信号的和c3。
以上图5所述的是二元域GF(24)的另一种乘法器的电路结构,其第一输入单元103产生BximodP(x)(i=0,1,2,3)的7个元素,其第二输入单元203中包括有4个乘法单元,每个乘法单元中包括4个逻辑与门,求出公式(2.3)中的部分加数,分别取出各个乘法单元相同位置的加数,在输出单元303中的4个加法单元中进行总的加法。该实施例所述的乘法器解决了生成BximodP(x)的交叉连线过多的问题,与现有技术中的二元域乘法器相比,减少了交叉连线,使电路较为规整,使版图面积相对减小。
上述实施例中的二元域乘法器不限于GF(24),也可以是GF(25)、GF(26)等域上的乘法器,若是GF(25)、GF(26),可根据GF(25)的本原多项式或者GF(26)的本原多项式,利用上述图4所述乘法器的原理,即可得到结构相似的GF(25)或者GF(26)上的乘法器电路。即本发明实施例的乘法器电路的原理可以扩展到GF(2m)的应用上,如图4所示。
在上述图2、图3、图4以及图5所示的乘法器结构中,各加法单元包括无进位加法器,无进位加法器可以由逻辑异或门构成。
综上所述,本发明实施例的乘法器电路交叉线减少,结构紧凑,简化了现有的松散的乘法器和加法器结构,减少电路所占用的版图面积。本发明实施例的乘法器电路可应用于数据加密、控错、压缩等领域。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。