C1,同时将寄存器堆308结果进一步通过而异或树链逻辑叠加之后的结果寄存在3012,并将寄存器堆304结果进一步通过而异或树链逻辑叠加之后的结果寄存在308,同时将第四次227*57生成的部分积部分叠加结果寄存在 304。
[0038]状态RESULT2将第二次227*57模乘寄存在3012的结果与C1通过组合逻辑运算的结果寄存于108,得到了累加结果(^+(:2,同时同时将寄存器堆308结果进一步通过而异或树链逻辑叠加之后的结果寄存在3012,并将寄存器堆304结果进一步通过而异或树链逻辑叠加之后的结果寄存在308。
[0039]状态RESULT3将第三次227*57模乘寄存在3012的结果与(^+(:2通过组合逻辑运算的结果寄存于108,得到了累加结果Q+CdQ,同时把第四次227*57模乘寄存在308的结果通过逻辑运算寄存在3012。
[0040]状态FINAL RESULT将第四次的模乘寄存在3012的结果与CjCfC3通过组合逻辑运算的结果寄存在108,此时得到了最终227*227的运算结果,并拉高模乘结果输出标志信号。
[0041]以上详细说明了各个状态所进行的操作,从中体现出了本发明采用了流水执行方式,减少了一次完整模乘执行所需要的周期,提高了执行效率。
[0042]图3所示是本发明的图1中模乘模块104的详细图示,表示为300,它包括了部分积产生部分302,部分积叠加结果寄存器堆304、308和3012,以及二级异或树链306和3010ο
[0043]对于模乘操作,输入数据Α,B,计算后得到结果AXB (modf (X)),根据多项式基乘法规则,AXB(modf(x)) = Σ (AXBiX1) (modf (x)) = Σ (AXx^odf (x))Bi = XAiXBi;其中AXx'modf (x) = Ai, 1^是操作数B的第i位。
[0044]部分积产生部分302,计算了一次227*57并得到57个部分积,每一个都是227bit,如:计算第一次模乘,那么得到Atl X Btl……A56XB56, Ai X Bi操作是A i的每一位都要和Bi进行一次与操作,AiS过一个约减模块单元操作之后得到B i+1。约减模块单元详图如图5所示,将在图5进行详细描述。
[0045]部分积叠加结果寄存器堆304、308和3012,分别将部分积某次叠加后结果保存起来,使得操作能够流水执行,也就是用寄存器打断了部分积的叠加链。它们结构相同,只是数量不同。
[0046]二级异或树链306和3010是组合逻辑,完成部分积的叠加,其具体图示如图4所示,在图4中详细描述。306和3010结构相同,但是异或门的个数不同。
[0047]输入操作数通过302得到部分积,然后通过寄存器堆以及异或逻辑进行模加,最后3012存储的结果通过异或逻辑后得到了最终的227*57的模乘结果。
[0048]图4所示是模乘模块中的二级异或树链,其中所示的一个异或门是代指227个异或门,因为一个部分积是227bit位宽,每级异或门都实现部分积的两两相加,也就是实现模加操作,如(CjCw)Ii1c^所以两个部分积按位异或就能够实现模加操作。
[0049]图5所示是模乘模块中的约减部分,图上的A0,Al,……A226与图3中的不同,图3所示的Ai就是Ai,但是图5的Ai是Ai的每一位,本模块实现的功能是(AiXx)H1df(X)=Ai+1,其中f(x) = x227+lo对于位宽m = 226bit的时候,此位宽具有AOP类型的约减多项式f(x) = x226+x225+x224……+x2+x+l,具有AOP约减式的位宽经过冗余表示之后,可以化简其约减多项式,使得对其进行设计的时候具有很多优势,因此对226bit位宽进行冗余表示使得m = 227bit,此时约减式就是f (X) = x227+l,因此本设计就基于此理论。这样(A2 2 6 Xx226+
A225Xx225+A224Xx224......AO) Xx = A2 2 6Xx227+A2 2 5Xx226+A2 2 4Xx225......AOXx,对其进行约减,X227 = I,这样相乘的结果就是A2 2 5 X X 226+A224 X x225......AO X X+A226,即如图5所示,
输入数据Ai进行约减操作就是对其进行一次循环左移操作。
[0050]图6所示是本发明的流水执行过程,如600所示,图中从上而下第一行是整个模乘操作执行的状态,第二行到第五行是每一次227*57模乘所执行的操作,每一次模乘都包括5个操作,分别是数据加载、部分积叠加结果寄存1、部分积叠加结果寄存2、部分积叠加结果寄存3和每一次模乘的部分积结果累加,详细执行过程已在上述状态机描述中陈述,将四次模乘流水执行缩短了模乘执行周期。注意:图中的缩写已经在图旁边标示。
[0051]图7所示是本发明的整体设计框图,包含了所有的接口信号。如700所示,输入接口信号为:系统时钟Clk_i ;全局低电平复位信号Rstn_i ;模乘操作使能信号,高有效,Mul_en_i ;两个输入操作位宽为227bit。输出接口信号为:最终模乘结果输出数据C_o ;模乘执行完成单周期标志位信号,高有效,Outvalid_o。当检测到高电平的模乘使能信号的时候启动模乘操作,执行完成后给出模乘操作结束标志位,并输出模乘结果数据,调用模乘操作的其他单元检测到模乘操作结束标志位就可以采样模乘结果输出数据。
[0052]至此,以上就是整个发明的详细陈述。但上述的实施方式仅用来陈述本发明,并不构成对本发明的限制,对于本领域的技术人员来说可对上述的实施方式进行修改等而没有背离本发明的范围,因此,本发明的范围仅由权利要求以及其等效含义来限定。
【主权项】
1.一种基于全一约减式AOP的多项式基GF(2 227)高速模乘法器,其特征在于:所述模乘法器包括:主控状态机模块、数据加载及数据分配模块、模乘运算单元模块、部分积累加结果寄存模块和模加模块;其中, 主控状态机模块控制所有数据的流动,使模乘法器实现数字串行的执行,并实现流水操作,四次227*57的模乘操作即可实现整个模乘运算; 数据加载及数据分配模块把输入的操作数寄存并将对应的数据分配给模乘运算单元; 模乘运算单元模块实现一次227*57的模乘操作,给出227bit的模乘结果; 部分积累加结果寄存模块将本次模乘结果与之前得到的累加结果通过模加模块进行累加,并将此累加结果寄存,第四次寄存的累加结果即模乘的运算结果。
2.根据权利要求1所述的基于全一约减式AOP的多项式基GF(2 227)高速模乘法器,其特征在于:所述主控状态机模块实时检测外界的模乘使能信号,启动状态机,控制模乘流水执行,按照设计的时序将数据加载及分配单元给出的数据寄存,把模乘单元内部分积叠加结果寄存以及给出结果输出允许标志信号。
3.根据权利要求1所述的基于全一约减式AOP的多项式基GF(2 227)高速模乘法器,其特征在于:所述数据加载及数据分配模块在主控状态机控制下,根据不同的状态将输入的数据进行相关的移位操作,作为模乘单元的输入数据。
4.根据权利要求1所述的基于全一约减式AOP的多项式基GF(2 227)高速模乘法器,其特征在于:所述部分积累加结果寄存模块在状态及控制下,将模乘单元运算结果与当前模块寄存的累加结果通过模加单元,得到新的累加结果并寄存。
5.根据权利要求1所述的基于全一约减式AOP的多项式基GF(2 227)高速模乘法器,其特征在于:所述模乘运算单元进一步包括部分积产生模块,约减模块,二级异或树链模块以及部分积寄存器模块;其中, 部分积产生模块用于产生227*57的57个部分积,其中的约减模块用于实现一次A*x的操作,得到的部分积通过异或阵列得以叠加,寄存在部分积寄存器模块; 二级异或树链模块用于将部分积寄存器数据进一步叠加,得到新的部分积叠加结果; 部分积寄存器模块的数据通过异或阵列叠加,给出了 227*57最终结果。
【专利摘要】本发明设计了一种基于AOP的多项式基GF(2227)高速模乘法器,充分发挥了AOP这种特殊类型约减多项式的优势,并改进了设计方式,提升了处理速度以及数据吞吐量,发明包括:数据加载以及数据分配、部分积产生部分、部分积叠加部分以及主控制器部分。这种模乘法器涉及信息安全领域,加解密技术领域等,在这些领域中涉及二元域的多项式基的模乘法操作都可以应用这种乘法器。在组合逻辑资源受限比较高以及实时处理系统中更能体现出发明的优势。发明选取的位宽m=227bit,对于与此位宽不匹配的系统需要进行相应的协调。
【IPC分类】G06F7-523
【公开号】CN104572012
【申请号】CN201510048146
【发明人】李冰, 张余, 王凡, 杜清, 赵霞, 刘勇, 王刚, 董乾
【申请人】东南大学
【公开日】2015年4月29日
【申请日】2015年1月29日