本发明涉及一种对有限域的元素进行相乘的装置,特别涉及一种基于不可约三项式对有限域的两个运算数进行相乘的运算器。
背景技术:
有限域是仅含有限多个元素的域,首先由伽罗瓦所发现,所以有限域又称伽罗瓦域。有限域被广泛地运用于数学和工程领域。有限域计算是有限域的重要数学理论之一,包括有限域加法、乘法、求逆、除法等。其中,有限域乘法根据设计的基底不同,大致可以分为四类:基于标准基的乘法、基于正规基的乘法、基于双基底的乘法和基于三角基的乘法。
有限域乘法需要不可约多项式参与运算,它的运算效率往往与不可约多项式的选择有关。不可约多项式又称既约多项式,是次数大于零的有理数系数多项式,它的特点是不能分解为两个次数较低但都大于零的有理数系数多项式。在有限域上,不可约多项式是次数大于零的多项式,除了常数和常数与本身的乘积以外,它再不能被有限域上的其他多项式整除。
选择特定不可约多项式,例如不可约三项式,对计算有限域乘法有重要意义,现有技术中存在的有限域乘法器较少使用特定不可约多项式。在实时和对速度敏感的环境下,使用基于不可约三项式的特定硬件装置来实现有限域乘法可以提高运算效率。
技术实现要素:
为了克服现有技术的不足,本发明的目的在于提供一种基于不可约三项式的有限域乘法器。
本发明的目的通过以下技术方案实现:一种基于不可约三项式的有限域乘法器,包括控制器以及分别与控制器相连的输入端口、输出端口、异或逻辑门阵列、与逻辑门阵列、不可约三项式矩阵单元、乘法模运算矩阵单元、与运算矩阵单元、异或运算矩阵单元、乘法运算矩阵单元;其中,
输入端口,包括用于输入乘法运算数a(x)的端口a、用于输入乘法运算数b(x)的端口b、用于输入乘法运算所在有限域gf(2n)大小的端口n、用于输入时钟信号的端口clk;
输出端口,包括用于输出乘法运算结果c(x)的端口c、用于输出运算是否在乘法器运算范围内的反馈信息的端口e;
控制器,包括相互连接的处理器和解析器;分别与输入端口、输出端口、异或逻辑门阵列、与逻辑门阵列、不可约三项式矩阵、乘法模运算矩阵、与运算矩阵、异或运算矩阵、乘法运算矩阵相连;所述处理器用于调度其他组件实行乘法运算;所述解析器用于解析时钟信号;
异或逻辑门阵列,包括(n-1)2个异或逻辑门运算器,可同时计算(n-1)2个异或逻辑运算,其中n与有限域gf(2n)的n的数值一致;每个异或逻辑门运算器包括两个输入、一个输出,可实现两输入的异或逻辑计算;可实现的计算逻辑包括
与逻辑门阵列,包括n2个与逻辑门运算器,可同时计算n2个与逻辑运算,其中n与有限域gf(2n)的n的数值一致;每个与逻辑门运算器包括两个输入、一个输出,可实现两输入的与逻辑计算;可实现的计算逻辑包括0×0=0、0×1=1、1×0=0、1×1=1,其中0和1是有限域gf(2)的元素,×是与逻辑运算,使用与逻辑门;
不可约三项式矩阵单元,是一个20×3的矩阵,存储不同有限域gf(2n)上的不可约三项式,其中,矩阵存储的三项式的个数是20;
乘法模运算矩阵单元,是一个(2n-1)×n的矩阵,存储的是乘法模运算后生成的多项式系数,其中n与有限域gf(2n)的n的数值一致;
与运算矩阵单元,是一个n×n的矩阵,存储的是a(x)的各比特和b(x)的各比特之间的与运算结果,其中n与有限域gf(2n)的n的数值一致;
异或运算矩阵单元,是一个长度为2n-1的向量,存储的是特定异或运算的结果,其中n与有限域gf(2n)的n的数值一致;
乘法运算矩阵单元,是一个n×(2n-1)的矩阵,存储的是特定与运算的结果,其中n与有限域gf(2n)的n的数值一致。
所述输入端口的有限域gf(2n)的n是一个大于1的正整数;
所述输入端口的运算数a(x)、运算数b(x)和输出端口的运算数c(x)可以表示成如下的多项式形式:
a(x)=an-1xn-1+an-2xn-2+...+a0;
b(x)=bn-1xn-1+bn-2xn-2+...+b0;
c(x)=cn-1xn-1+cn-2xn-2+...+c0;
其中,an-1,an-2,...,a0,bn-1,bn-2,...,b0,cn-1,cn-2,...,c0是有限域gf(2)的元素;
所述输入端口的时钟信号clk是单比特变量,表示一个频率不大于50mhz的时钟信号;
所述输出端口的端口e用于判断输入的运算请求是否在范围内,e是单比特变量;若gf(2n)存在不可约三项式,并在不可约三项式矩阵能够找到相应的多项式用于乘法运算,这种情况表示此乘法在乘法器的运算范围内,e=1;其他情况e=0,表示此乘法超出乘法器的运算范围;
所述不可约三项式矩阵单元存储的不可约三项式可以表示成如下的多项式形式:
pi(x)=xi+xk+1;
其中,pi(x)=xi+xk+1是有限域gf(2i)上的不可约三项式,它在不可约三项式矩阵以x的指数形式存储,即(i,k,0),1≤k<i,i≥2;
所述乘法模运算矩阵单元存储的矩阵的元素是vij,由
所述与运算矩阵单元存储的矩阵的元素是uij,是ai×bj的值,×是与逻辑运算,代表第i行第j列的元素,0≤i≤n-1,0≤j≤n-1;ai是a(x)=an-1xn-1+an-2xn-2+...+a0中xi的系数,bj是b(x)=bn-1xn-1+bn-2xn-2+...+b0中xj的系数,i代表矩阵的第i行(首行为第0行),矩阵的第i行第j列存储的元素(首列为第0列);
所述异或运算矩阵单元存储的矩阵的元素是si,是
所述乘法运算矩阵单元的元素是wij,是vjisj的值,代表第i行第j列的元素,0≤i≤n-1,0≤j≤2(n-1);i代表矩阵的第i行(首行为第0行),j代表矩阵的第j列(首列为第0列);vji是乘法模运算矩阵第j行第i列的元素,sj是异或运算矩阵第j个元素。
与现有技术相比,本发明具有以下优点和技术效果:本发明采用基于不可约三项式的方法计算有限域的乘法,在计算gf(2n)上的乘法上相对于现有的乘法器有着明显的速度优势,可以广泛运用于数学领域和工程领域。
附图说明
图1是本发明的基于不可约三项式的有限域乘法器的结构示意图。
具体实施方案
下面通过具体实施方式结合附图对本发明作进一步详细说明,但本发明的实施方式不限于此。
如附图1所示,本发明的基于不可约三项式的有限域乘法器包括控制器、输入端口、输出端口、异或逻辑门阵列、与逻辑门阵列、不可约三项式矩阵单元、乘方模运算矩阵单元、与运算矩阵单元、异或运算矩阵单元、乘法运算矩阵单元,所述控制器分别与输入端口、输出端口和其他部件连接。
下面分别对本发明的各组成部分做详细介绍:
(1)输入端口:如附图1所示,本发明的实施例共有4个输入端口,包括3个数据信号和1个时钟信号;输入端口a和b分别用于输入有限域gf(2n)的乘法运算数a(x)和b(x),输入端口n用于输入乘法运算所在有限域gf(2n)的大小,输入端口clk用于输入时钟信号。
输入端口的运算数a(x)和运算数b(x)可以表示成如下的多项式形式:
a(x)=an-1xn-1+an-2xn-2+...+a0,b(x)=bn-1xn-1+bn-2xn-2+...+b0,
an-1,an-2,...,a0,bn-1,bn-2,...,b0是有限域gf(2)的元素,取值是0或1。
输入端口的运算数a(x)和运算数b(x)也可以表示成如下多项式系数形式:
a(x)=an-1,an-2,...,a0,b(x)=bn-1,bn-2,...,b0。
输入端口n是有限域gf(2n)的大小,n是一个大于1的正整数。
输入端口clk是时钟信号,clk是单比特变量,取值是0或1,表示一个频率不大于50mhz的时钟信号。
(2)输出端口:如附图1所示,本发明的实施例共有2个输出端口,包括1个数据信号和1个反馈信号;输出端口c用于输出有限域gf(2n)的乘法运算结果c(x),输出端口e用于输出乘法运算是否在乘法器运算范围内的反馈信息。
输出端口的运算数c(x)是(a(x)×b(x))modp(x)的运算结果,其中,p(x)是gf(2n)上选定的不可约三项式,mod是gf(2n)上的求模运算。
gf(2n)上选定的不可约三项式p(x)可以表示成如下的多项式形式:
p(x)=xn+xk+1,
k是一个正整数,并且符合1≤k<n。
输出端口的运算数c(x)可以表示成如下的多项式形式:
c(x)=cn-1xn-1+cn-2xn-2+...+c0,
cn-1,cn-2,...,c0是有限域gf(2)的元素,取值是0或1;输出端口的运算数c(x)也可以表示成如下多项式系数形式:
c(x)=cn-1,cn-2,...,c0。
输出端口的端口e是单比特变量,取值是0或1;根据输入端口n的数值,若gf(2n)存在不可约三项式,并在不可约三项式矩阵能够找到相应的多项式用于乘法运算,表示此gf(2n)的乘法在基于不可约三项式的有限域乘法器的运算范围内,此时e=1;其他情况e=0,表示此gf(2n)的乘法超出基于不可约三项式的有限域乘法器的运算范围。
(3)控制器:控制器作为唯一能够和i/o端口通信的部件,是乘法器中的核心部件,分别与输入端口、输出端口、异或逻辑门阵列、与逻辑门阵列、不可约三项式矩阵单元、乘法模运算矩阵单元、与运算矩阵单元、异或运算矩阵单元、乘法运算矩阵单元相连,用于调度其他组件进行乘法运算。
控制器由相互连接的解析器和处理器组成。解析器用于解析输入的时钟信号clk。当clk的值从0至1发生变化,解析器将通知处理器进入新的一个时钟周期。处理器用于接收输入的数据信号,并将解析器的解析结果通知以及调度其他部件进行乘法运算。
(4)异或逻辑门阵列:异或逻辑门阵列,包括(n-1)2个异或逻辑门运算器,可同时计算(n-1)2个异或逻辑运算,其中n与有限域gf(2n)的n的数值一致;每个异或逻辑门运算器包括两个输入和一个输出,可实现两输入的异或逻辑计算;异或逻辑门阵列可实现以下逻辑计算:
(5)与逻辑门阵列:与逻辑门阵列,包括n2个与逻辑门运算器,可同时计算n2个与逻辑运算,其中n与有限域gf(2n)的n的数值一致;每个与逻辑门运算器包括两个输入和一个输出,可实现两输入的与逻辑计算;与逻辑门阵列可实现以下逻辑计算:0×0=0,0×1=1,1×0=0,1×1=1,其中0和1是有限域gf(2)的元素,×是与逻辑运算,使用与逻辑门。
(6)不可约三项式矩阵单元:不可约三项式矩阵是一个20×3的矩阵,存储不同有限域gf(2n)上的不可约三项式,即矩阵存储的三项式的个数是20。
不可约三项式矩阵存储的不可约三项式可以表示成如下的多项式形式:
pi(x)=xi+xk+1,
其中,pi(x)=xi+xk+1是有限域gf(2i)上的不可约三项式,其中,i≥2,它在不可约三项式矩阵以x的指数形式存储,即(i,k,0),k是一个正整数符合1≤k<i。
(7)乘法模运算矩阵单元:乘法模运算矩阵是一个(2n-1)×n的矩阵,存储的是乘法模运算后生成的多项式系数,其中n与有限域gf(2n)的n的数值一致;乘法模运算矩阵存储的矩阵的元素是vij,vij代表第i行第j列的元素。
vij由
(8)与运算矩阵单元:与运算矩阵是一个n×n的矩阵,存储的是a(x)的各比特和b(x)的各比特之间的与运算结果,其中n与有限域gf(2n)的n的数值一致;与运算矩阵存储的矩阵的元素是uij,uij代表第i行第j列的元素。
uij是ai×bj的值,×是与逻辑运算,ai×bj的运算通过调用与逻辑门阵列;其中,0≤i≤n-1,0≤j≤n-1;ai是a(x)=an-1xn-1+an-2xn-2+...+a0中xi的系数,bj是b(x)=bn-1xn-1+bn-2xn-2+...+b0中xj的系数,i代表矩阵的第i行(首行为第0行),矩阵的第i行第j列存储的元素(首列为第0列)。
(9)异或运算矩阵单元:异或运算矩阵是一个长度为2n-1的向量,存储的是特定异或运算的结果,其中n与有限域gf(2n)的n的数值一致;异或运算矩阵存储的矩阵的元素是si,si代表第i个元素(首个元素为第0个)。
si是
(10)乘法运算矩阵单元:乘法运算矩阵是一个n×(2n-1)的矩阵,存储的是特定与运算的结果,其中n与有限域gf(2n)的n的数值一致;乘法运算矩阵的元素是wij,wij代表第i行第j列的元素。
wij是vjisj的值,vjisj的运算通过调用与逻辑门阵列,其中,0≤i≤n-1,0≤j≤2(n-1);i代表矩阵的第i行(首行为第0行),j代表矩阵的第j列(首列为第0列);vji是乘法模运算矩阵第j行第i列的元素,sj是异或运算矩阵第j个元素。
下面以n=4为例说明本发明的工作过程。
令输入的时钟信号clk从0变化至1,控制器中的解析器通知控制器中的处理器进入新的时钟周期。控制器中的处理器接收输入的数据信号a(x)、b(x)和n。其中a(x)和b(x)作为运算数,有如下的表示形式:
a(x)=a3x3+a2x2+a1x+a0,b(x)=b3x3+b2x2+b1x+b0,
a(x)和b(x)均是gf(24)的元素,a3,a2,a1,a0,b3,b2,b1,b0均是有限域gf(2)的元素,取值为0或1。
n的值是4,根据n的值在不可约三项式矩阵中查找gf(24)的不可约三项式,查询结果是(4,1,0),表示p(x)=x4+x+1是gf(24)的不可约三项式,令e=1,表示gf(24)乘法在乘法器的计算范围内,控制器将e=1发送至输出端口e。
控制器调用异或逻辑门阵列和与逻辑门阵列计算:
vij存储在乘法模运算矩阵的第i行第j列(首行为第0行,首列为第0列),0≤i≤6,0≤j≤3;
乘法模运算矩阵是一个7×4的矩阵,存储的是乘法模运算
控制器调用与逻辑门阵列计算:
uij=ai×bj,
uij存储在与运算矩阵的第i行第j列(首行为第0行,首列为第0列),0≤i≤3,0≤j≤3。
与运算矩阵是一个4×4的矩阵,存储的是a(x)的各比特和b(x)的各比特之间的与运算结果,×是与逻辑运算,ai是a(x)=a3x3+a2x2+a1x+a0中xi的系数,bj是b(x)=b3x3+b2x2+b1x+b0中xj的系数。
控制器调用异或逻辑门阵列计算:
si存储在异或运算矩阵的向量的第i个元素(首个元素为第0个),0≤i≤6,0≤j≤3,0≤k≤3。
异或运算矩阵是一个长度为7的向量,存储的是特定异或运算
控制器调用与逻辑门阵列计算:
wij=vjisj,
wij存储在乘法运算矩阵的第i行第j列(首行为第0行,首列为第0列),0≤i≤3,0≤j≤6。
乘法运算矩阵是一个4×7的矩阵,存储的是特定与运算wij=vjisj的结果;vji是乘法模运算矩阵第j行第i列的元素,sj是异或运算矩阵第j个元素。
控制器调用异或逻辑门阵列计算:
ci是输出至输出端口c的乘法运算结果c(x)=c3x3+c2x2+c1x+c0的第i个系数,0≤i≤3,0≤j≤6;wij是乘法运算矩阵的第i行第j列的元素。
控制器将计算结果ci输出至输出端口c,计算完成。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。