新型乘法器重构算法及电路的制作方法

文档序号:6372309阅读:191来源:国知局
专利名称:新型乘法器重构算法及电路的制作方法
技术领域
本发明属于微电子学领域的高速、低功耗、重构结构集成电路设计,特别是指一种新型乘法器重构算法及电路。
背景技术
乘法运算在数字信号处理过程中使用非常频繁,包括信号处理领域,通讯领域和消费电子领域,因此乘法器在专用集成电路(ASIC)、通用数字信号处理器(DSP)和先进的微处理器(CPU)中均有广泛使用。用硬件来实现乘法运算的方式也有很多种,通常有移位累加的阵列乘法器和采用布兹(Booth)算法、华莱氏(Wallace)树型压缩结构的快速乘法器等几种类型。
乘法器在通用型指令处理器中(DSP、CPU)中,通常位于时序的关键路径上,是流水线平衡的瓶颈,而且,也是数据通路中的主要运算模块,消耗大量的功耗。随着市场对数字化产品需求的不断增加,和对通用型处理器性能要求越来越高,不光数字信号处理的速度需要越来越快,而且数据处理的精度也需要不断的提高,如要求处理高位宽的数据。相应的,这种需求对乘法器的运算能力和速度、功耗等指标的要求也变得越来越苛刻。未来的数字处理必将要求高速度、高位宽和低功耗的乘法运算单元的设计。而目前,现有的基于Booth-Wallace树型快速算法的乘法器要达到64位甚至更高的运算能力非常困难,速度、功耗和面积各方面都无法满足未来技术的要求。

发明内容
本发明的目的在于,寻求一种高速低功耗乘法器的重构实现算法和电路,以期可实现高位数甚至超高位数乘法的快速运算。
本发明一种新型乘法器重构算法,其特征在于,包括如下步骤步骤S1两个N位有符号二进制补码数或者无符号数作为乘法运算操作数送入乘法器的两个输入端;步骤S2两个N位乘法操作数对称分割为原位宽的一半,即N位的操作数分割成N/2位高位和N/2位低位进行运算;步骤S3两个N位操作数的N/2高位和N/2低位分别送入两个减法器,一个减法器完成一个操作数的高位减低位运算,一个减法器完成另一操作数的低位减高位运算;步骤S4两个N位乘数的高位与高位送入N/2位乘法器一相乘,结果为R2,低位与低位送入N/2位的乘法器二相乘,结果为R0,两个减法器输出的数作为两个操作数送入N/2位乘法器三,结果为R1;步骤S5乘法运算结果R2拼接R0形成的2N位数,其右起第N/2位与R2、R2和R0的第一位对齐,四个数进行累加;步骤S6累加得到的2N位结果作为乘法结果输出;本算法采用操作数对称分割之后,再进行三次低位数乘法的运算方式,使用三个低位数乘法算子重构实现高位数的乘法运算;本算法对应的电路结构可以在一个时钟周期内完成高位宽乘法操作;本发明一种新型重构算法乘法器电路,其特征在于,其中包括一输入乘法操作数寄存器,该寄存器保存外部输入的两个N位乘法操作数;一N位新型重构算法乘法器电路,该N位乘法器电路与输入操作数寄存器相连。
其中N位新型重构算法乘法器电路包括乘法运算模块、中间数据处理模块、加法求和运算模块;乘法运算模块、中间数据处理模块和加法求和运算模块三部分顺序连接。
其中N位乘法运算模块电路中有两个N/2位的减法器和三个N/2位乘法器;两个减法器,其中一个接收一个乘法操作数的高位和低位,进行高位减低位的减法运算;另一个减法器接收一个乘法操作数的低位和高位,进行低位减高位的减法运算;两个减法器的输出结果直接与三个乘法器中的一个的输入端相连;三个乘法器中的一个接收分割后的乘法操作数的两个N/2位的高位,一个接收分割后的乘法操作数的两个N/2位的低位,第三个接收来自减法器的两个输出结果作为输入操作数,进行乘法运算;乘法器包括各种电路结构形式实现的有符号数/无符号数乘法器;乘法运算模块的输出端与中间数据处理模块的输入端直接相连。
其中中间数据处理模块电路包括N位的拼接电路和三个符号位扩展器;拼接电路完成的功能是在将两个乘法器高位与高位、低位与低位乘积的N位结果拼接成2N位,送入加法求和模块进行运算;符号位扩展器的功能是对乘法运算模块中乘法器输出的部分积结果进行符号位扩展,并对低位进行补N/2个0的操作,使乘法运算得到的N位运算结果扩展到2N位;其输出端直接与加法求和模块的输入端相连。
其中加法求和模块电路包括华莱氏树型压缩器和2N位的最终求和加法器;华莱氏树型压缩器功能是将输入的四个2N位的需要累加的操作数进行压缩,压缩成两个加数,送给两输入的最终求和加法器进行累加;最终求和加法器的输出结果就是重构乘法器的输出结果。


为进一步说明本发明的技术特征,以下结合实施例及附图对本发明作一详细的描述,其中图1是一种新型重构算法乘法器算法流程图。
图2是一种新型重构算法乘法器电路结构图。
具体实施例方式
请参阅图2,本发明一种新型重构算法乘法器电路实现结构,其中包括一输入乘法操作数寄存器20,该寄存器20保存外部输入的两个N位乘法操作数;一N位新型重构算法乘法器电路10,该N位乘法器电路10与输入乘法操作数寄存器20相连。
其中N位新型重构算法乘法器电路10包括乘法运算模块11、中间数据处理模块12、加法求和运算模块13。乘法运算模块11、中间数据处理模块12和加法求和运算模块13三部分顺序连接。
N位乘法运算模块电路10中有两个N/2位的第一减法器114、第二减法器115和三个N/2位的第一乘法器111、第二乘法器112、第三乘法器113。两个减法器中,其中一个接收一个乘法操作数的高位和低位,进行高位减低位的减法运算;另一个减法器接收一个乘法操作数的低位和高位,进行低位减高位的减法运算。两个减法器的输出结果直接与三个乘法器中的一个的输入端相连。
三个乘法器中的一个接收分割后的乘法操作数的两个N/2位的高位,一个接收分割后的乘法操作数的两个N/2位的低位,第三个接收来自减法器的两个输出结果作为输入操作数,进行乘法运算。乘法器包括各种电路结构形式实现的有符号数/无符号数乘法器,例如Booth乘法器等。
乘法运算模块11的输出端与中间数据处理模块12的输入端直接相连。
中间数据处理模块12电路包括N位的拼接电路121和三个符号位扩展器122、123、124。拼接电路121完成的功能是在将两个乘法器高位与高位、低位与低位乘积的N位结果拼接成2N位,送入加法求和模块13进行运算;符号位扩展器122、123、124的功能是对乘法运算模块11中乘法器输出的部分积结果进行符号位扩展,并对低位进行补N/2个0的操作,使乘法运算得到的N位运算结果扩展到2N位。其输出端直接与加法求和模块13的输入端相连。
加法求和模块13电路包括Wallace树型压缩器131和2N位的最终求和加法器132。Wallace树型压缩器131功能是将输入的四个2N位的需要累加的操作数进行压缩,压缩成两个加数,送给两输入的最终求和加法器进行累加。最终求和加法器的输出结果就是重构乘法器的输出结果。
目前,改进的高效Booth编码几乎应用于所有快速乘法器中。经实验证明,快速乘法器的数据处理位宽增加一倍,面积和功耗都以近似平方数量级增加。以16位与32位的Booth-Wallace树型乘法累加器作比较,32位乘法累加单元面积约为16位单元的3.2倍,功耗约为3.47倍。可以预见,对于高位宽的乘法累加器,传统的单纯采用Booth-Wallace树型结构进行设计的方法已经不能满足功耗、面积等性能的需要,提高Booth编码基比的做法也存在速度较慢的弊端,必须要用新的设计思路进行高位宽乘法器的设计。
本发明提出的新型乘法累加器结构,对于32位宽度的数据处理,采用了分割算法,是一种对高位宽乘法累加器结构设计的探索。分割算法含义为将N位的乘法操作数,对称分割为高位和低位,分别进行N/2位的高位与高位、低位与低位和高位与低位交叉的乘法运算,得到的部分积通过移位和累加求和得到最终的结果。算法原理如下设A、B分别为两个N位宽度的乘法操作数,如式(1)所示A=(AN-1...AN/2AN/2-1...A1A0)2=A^1·2N2+A^0----(1)]]>B=(BN-1...BN/2BN/2-1...B1B0)2=B^1·2N2+B^0]]>
其中A^1=(AN-1...AN/2)2A^0=(AN/2-1...A0)2]]>B^1=(BN-1...BN/2)2B^0=(BN/2-1...B0)2]]>分别表示操作数A、B的高位和低位。
于是,乘法运算可以表示为A·B=A^1B^1·2N+2N2(A^1B^0+A^0B^1)+A^0B^0----(2)]]>由公式(2)可以看到,对于N位的乘法运算,其运算过程可以通过N/2位的高位和低位操作数,通过A^1·B^1,A^0·B^0,A^1·B^0]]>和A^0·B^1]]>四次乘法运算得到的部分积,再通过移位和累加来完成。如果应用于32位乘法器中,可以看到,这种算法需要四次16位的乘法运算。
但是,相比于逐位相乘的乘法运算过程,这种方式同样需要N2位的1位乘法运算,并未有太大改进。
公式(2)可以重写为A·B=(2N+2N2)A^1B^1+2N2(A^1-A^0)(B^0-B^1)+(2N2+1)A^0B^0----(3)]]>根据公式(3),可以看到,其中只包含三个低位宽的乘法运算。应用这种方法,仅需要一位乘法的运算数量为Nlog23次。
本发明所阐述的乘法器结构,基于公式(3)的分割算法,以重构方式实现高位宽的乘法运算,而且使用的是三个低位宽的乘法器,其工作速度将可达到较高的水平,面积和功耗也将有较大下降。
图1是一种新型重构算法乘法器算法流程图。
本发明一种新型乘法器重构算法,其特征在于,包括如下步骤步骤S1两个N位有符号二进制补码数或者无符号数作为乘法运算操作数送入乘法器的两个输入端;步骤S2两个N位乘法操作数对称分割为原位宽的一半,即N位的操作数分割成N/2位高位和N/2位低位进行运算;步骤S3两个N位操作数的N/2高位和N/2低位分别送入两个减法器,一个减法器完成一个操作数的高位减低位运算,一个减法器完成另一操作数的低位减高位运算;步骤S4两个N位乘数的高位与高位送入N/2位乘法器一相乘,结果为R2,低位与低位送入N/2位的乘法器二相乘,结果为R0,两个减法器输出的数作为两个操作数送入N/2位乘法器三,结果为R1;步骤S5乘法运算结果R2拼接R0形成的2N位数,其右起第N/2位与R2、R1和R0的第一位对齐,四个数进行累加;步骤S6累加得到的2N位结果作为乘法结果输出;请再参阅图1,图中代表的是新型重构乘法器算法流程。
具体实施方式
为设An-1...A0和Bn-1...B0分别为两个乘法操作数,在运算开始时,步骤S1,两个操作数送入乘法器;步骤S2,两个操作数分别对称分割为低位An/2-1...A0和高位An-1...An/2、高位Bn/2-1...B0和低位Bn-1...Bn/2;步骤S3,乘法操作数A的高位An-1...An/2和低位An/2-1...A0送入一个N/2位的减法器中,执行(An/2-1...A0)-(An-1...An/2)的操作,操作数B的高位Bn-1...Bn/2与低位Bn/2-1...B0送入另一个N/2位的减法器中,执行(Bn-1...Bn/2)-(Bn/2-1...B0)的操作;步骤S4,分割后,操作数的两个高位数,An-1...An/2和Bn-1...Bn/2,作为操作数送入一个N/2位的乘法器中,运算结果为R2两个低位数,An/2-1...A0和Bn/2-1...B0送入另一个N/2位的乘法器中,运算结果为R0,第二步S2中的两个减法器的N/2位的结果作为操作数送入第三个N/2位的乘法器中进行运算,结果为R1。步骤S5,乘运算的N位结果R2拼接R0形成的2N位数,其右起第N/2位与R2、R1和R0的第一位对齐,四个数进行累加,如果是有符号数操作,R2、R1和R0的前面需要进行符号位的扩展,如果是无符号数操作,则只需补零即可;步骤S6,累加之后得到的结果便是整个乘法运算最终结果。
图2是一种新型重构算法乘法器电路实现结构图,是图1所示的算法流程的电路实现。如图所示,电路的连接关系为两个操作数输入寄存器20连接运算电路10。运算电路10包括三个模块乘法运算模块11、中间数据处理模块12和最终加法求和运算模块13。三个模块顺序相连。乘法运算模块11的输出作为中间数据处理模块12的输入,加法求和模块13的输入连接中间数据处理模块12的输出。整个电路具体的实施方式为高位宽乘法运算的操作数Bn-1...B0和An-1...A0分别时钟上跳沿分别存入两个操作数寄存器21和寄存器22中,寄存器低位中存放的数据An/2-1...A0与Bn/2-1...B0和高位中存放的数据An-1...An/2与Bn-1...Bn/2分别送入乘法运算模块11中。其中,两个高位数An-1...An/2和Bn-1...Bn/2送入乘法器111中,运算结果为R2。两个低位数An/2-1...A0和Bn/2-1...B0送入乘法器112中,运算结果为R0。Bn-1...Bn/2和Bn/2-1...B0送入减法器114中,执行(Bn-1...Bn/2)-(Bn/2-1...B0)的操作,An-1...An/2和An/2-1...A0送入减法器115中,完成(An/2-1...A0)-(An-1...An/2)的操作,这两个减法器输出的N/2位结果在送入乘法器113中进行运算,其运算结果定义为R1。在中间数据处理模块中,主要对三个乘法器输出的部分积进行处理。如果是进行有符号数运算,则R2为有符号数,R1为有符号数,R0则为无符号数,这样,需要在中间数据处理模块中对部分积R2和R1进行符号位扩展,高位补N/2位符号位,对R0高位补N/2位的零。如果是无符号数运算,则对部分积R1补N/2位符号位,对R2和R0直接补N/2个零。根据算法要求,三个部分积R2、R1和R0还需要在最低位的右边补充N/2个零,以使整个部分积达到2N位的宽度。上述部分积R2、R0和R1的补符号位和补零的操作分别由符号位扩展器122、123和124依次完成。拼接器P1的功能是将部分积R2和R0拼接成一个2N位宽的数,其中R2占据高N位,R0占据低N位。这样,拼接器121和三个符号位扩展器122、123和124,共四个2N位输出数构成了送往下一级加法求和模块13的四个操作数。加法求和模块13中包括了Wallace树型压缩器131和最终求和加法器132两个电路单元。Wallace树型压缩器131的功能是将需要累加的多个加数压缩成两个加数,在送入加法器中,一次性完成多个加数的累加,以加快电路速度。在本例中,Wallace树型压缩器131将四个2N位的操作数压缩成两个加数,送入最终求和加法器132中,一次性完成了四个累加数的加和运算。这样,最终求和加法器132的2N位输出,就是最终的高位宽乘法运算结果。一个完整的高位宽乘法运算就完成了。
权利要求
1.一种新型乘法器重构算法,其特征在于,包括如下步骤步骤S1两个N位有符号二进制补码数或者无符号数作为乘法运算操作数送入乘法器的两个输入端;步骤S2两个N位乘法操作数对称分割为原位宽的一半,即N位的操作数分割成N/2位高位和N/2位低位进行运算;步骤S3两个N位操作数的N/2高位和N/2低位分别送入两个减法器,一个减法器完成一个操作数的高位减低位运算,一个减法器完成另一操作数的低位减高位运算;步骤S4两个N位乘数的高位与高位送入N/2位乘法器相乘,结果为R2,低位与低位送入N/2位的乘法器二相乘,结果为R0,两个减法器输出的数作为两个操作数送入N/2位乘法器三,结果为R1;步骤S5乘法运算结果R2拼接R0形成的2N位数,其右起第N/2位与R2、R1和R0的第一位对齐,四个数进行累加;步骤S6累加得到的2N位结果作为乘法结果输出;本算法采用操作数对称分割之后,再进行三次低位数乘法的运算方式,使用三个低位数乘法算子重构实现高位数的乘法运算;本算法对应的电路结构可以在一个时钟周期内完成高位宽乘法操作。
2.一种新型重构算法乘法器电路,其特征在于,其中包括一输入乘法操作数寄存器,该寄存器保存外部输入的两个N位乘法操作数;一N位新型重构算法乘法器电路,该N位乘法器电路与输入操作数寄存器相连。
3.根据权利要求2所述的一种新型重构算法乘法器电路,其特征在于,其中N位新型重构算法乘法器电路包括乘法运算模块、中间数据处理模块、加法求和运算模块;乘法运算模块、中间数据处理模块和加法求和运算模块三部分顺序连接。
4.根据权利要求3所述的一种新型重构算法乘法器电路,其特征在于,其中N位乘法运算模块电路中有两个N/2位的减法器和三个N/2位乘法器;两个减法器,其中一个接收一个乘法操作数的高位和低位,进行高位减低位的减法运算;另一个减法器接收一个乘法操作数的低位和高位,进行低位减高位的减法运算;两个减法器的输出结果直接与三个乘法器中的一个的输入端相连;三个乘法器中的一个接收分割后的乘法操作数的两个N/2位的高位,一个接收分割后的乘法操作数的两个N/2位的低位,第三个接收来自减法器的两个输出结果作为输入操作数,进行乘法运算;乘法器包括各种电路结构形式实现的有符号数/无符号数乘法器;乘法运算模块的输出端与中间数据处理模块的输入端直接相连。
5.根据权利要求3所述的一种新型重构算法乘法器电路,其特征在于,其中中间数据处理模块电路包括N位的拼接电路和三个符号位扩展器;拼接电路完成的功能是在将两个乘法器高位与高位、低位与低位乘积的N位结果拼接成2N位,送入加法求和模块进行运算;符号位扩展器的功能是对乘法运算模块中乘法器输出的部分积结果进行符号位扩展,并对低位进行补N/2个0的操作,使乘法运算得到的N位运算结果扩展到2N位;其输出端直接与加法求和模块的输入端相连。
6.根据权利要求3所述的一种新型重构算法乘法器电路,其特征在于,其中加法求和模块电路包括华莱氏树型压缩器和2N位的最终求和加法器;华莱氏树型压缩器功能是将输入的四个2N位的需要累加的操作数进行压缩,压缩成两个加数,送给两输入的最终求和加法器进行累加;最终求和加法器的输出结果就是重构乘法器的输出结果。
全文摘要
一种新型乘法器重构算法,包括两个N位有符号二进制补码数或者无符号数作为乘法运算操作数送入乘法器的两个输入端;两个N位乘法操作数对称分割为原位宽的一半进行运算;两个N位操作数的N/2高位和N/2低位分别送入两个减法器,一个减法器完成一个操作数的运算,一个减法器完成另一操作数的低位减高位运算;两个N位乘数相乘,结果为R2,低位与低位送入N/2位的乘法器二相乘,结果为R0,两个减法器输出的数作为两个操作数送入N/2位乘法器三,结果为R1;乘法运算结果R2拼接R0形成的2N位数,其右起第N/2位与R2、R1和R0的第一位对齐,四个数进行累加;累加得到的2N位结果作为乘法结果输出。
文档编号G06F7/38GK1567178SQ03148580
公开日2005年1月19日 申请日期2003年7月4日 优先权日2003年7月4日
发明者李莺, 陈杰 申请人:中国科学院微电子中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1