法律状态公告日
法律状态信息
法律状态
2016-02-03
未缴年费专利权终止 IPC(主分类):G06F7/54 授权公告日:20020626 终止日期:20141211 申请日:19951211
专利权的终止
2002-06-26
授权
授权
1998-09-09
实质审查请求的生效
实质审查请求的生效
1996-11-27
公开
公开
本发明涉及乘法器,特别涉及利用改进的布斯(Boolh)算法有选择地执行无符号数值乘法或有符号数值乘法来进行乘法操作的乘法器。
乘法是处理图象数据的数字信号处理(此后称为DSP)操作中的主要操作。
在设计乘法器时,例如中央处理单元(此后称为CPU)的算术逻辑单元(此后称为ALU)这样的操作单元需要能够有选择地进行无符号数值乘法或有符号数值乘法的乘法器。
在ALU中实现无符号数值相乘或有符号数值相乘的方法是既使用无符号数值乘法器又使用有符号数值乘法器。但是,因为使用了两个乘法器,所以这一方法需要更多的电路面积。
在ALU中实现无符号数值相乘或有符号数值相乘的另一方法是用附加电路来补偿有符号数值积和无符号数值积之间的差。当某一操作数的最高有效位是“1”时,这一方法将剩余的位-另一操作数的最高有效位除外-与最后积相加。但是,用这一方法难于得到被认为是阵列乘法器的优点的方形布局。
1990年8月24日授权的题为“改进二进制补码乘法器来执行无符号数值乘法的方法和装置”的美国专利5,153,850描述了执行无符号数值乘法或二进制补码乘法的乘法器。该美国专利所述的乘法器有选择地执行二进制补码乘法或无符号数值乘法,用附加电路校正二进制补码积,然后获得无符号数值积。
关于乘法的算法,Macro Annaratone所著的《数字CMOS电路设计》(211-221页)描述了改进的布斯算法。
该改进的布斯算法是一种记录算法,它将第一操作数划分为预定的位对,在执行了相应于第二操作数的各个位对的操作后得到了作为中间结果的部分积,求和生成的相应于另一操作数的各个位对的部分积,利用两个操作数相乘来得到最后结果。此外,改进的布斯算法认为“0”对乘法没有作用,提高了乘法的操作速度。
图1是利用布斯算法的普通二进制补码乘法器的方框图。
如图1所示,一般的二进制补码乘法器包含编码器1,符号传递单元2,移位和反相单元3,第一至第三部分乘积发生器4、5和6,以及先行进位加法器7。图1的乘法器是8位×8位乘法器,“A”被定义为8位的被乘数,“B”被定义为8位的乘数。
操作数“B”输入编码器1。编码器1编码操作数“B”的位对,并形成相应于位对的再编码数字组(即-2x,-1x,0x,+1x,+2x)。
再编码数字组的每一再编码数字分别传送给单元3以及三个部分乘积发生器4、5和6中的一个。单元3以及三个部分乘积发生器4、5和6相对于操作数“A”执行相应的操作。
得到的结果通过先行进位加法器7向外输出。符号传递单元2的用途是扩展被乘数的符号位。
这种乘法器执行被表示为二进制补码的有符号数值乘法,但不能执行无符号数值乘法。
本发明的目的是提供利用改进的布斯算法有选择地执行无符号数值乘法或有符号数值乘法来进行乘法操作的乘法器,该乘法器能够解决已有技术中的问题。
为了实现这一目的,本发明包括:接收第一操作数、编码该操作数的位对并形成相应于每一位对的再编码数字的编码器;在对第二操作数执行移位操作和反相操作后利用来自编码器的再编码数字形成中间结果的移位和反相单元;有选择地形成相应于来自编码器的再编码数字的第二操作数的操作数据并通过利用移位和反相单元分别将操作数据与部分积相加来产生部分积的第一部分乘积发生器,顺序地与第一部分乘积发生器的输出端连接并通过在前一级的输出数据和相应的操作数据之间相加来产生部分积的第二至第四部分乘积发生器;与移位和反相单元以及第一至第四部分乘积发生器(以下简称部分积生成器)连接以便提供信号并在第二操作数中执行符号位的扩展操作的符号传递单元;利用输入选择信号判断乘法是无符号数值乘法还是有符号数值乘法并当乘法是无符号数值乘法时将两操作数的扩展位提供给编码器以及移位和反相单元的选择单元。
本发明的乘法器还包括与第四部分积生成器的输出端连接以便产生和传送先行进位的先行进位加法器。
图1是已有技术普通的二进制补码乘法器的方框图;
图2是本发明最佳实施例的有选择地执行无符号数值乘法或有符号数值乘法的乘法器的方框图。
参看附图阅读以下详细的描述将明了本发明的最佳实施例。
在描述图2所示本发明最佳实施例的乘法器之前,首先说明应用于本发明最佳实施例的乘法操作过程,例如8位×8位乘法。
在一个操作数为“A”而另一操作数为“B”的情况下,以下表达式将(-4)×(-2)描述为有符号数、无符号数和二进制数。
A×B
(-4)×(-2) …… 有符号数格式
+252×+254 …… 无符号数格式
1111 1100×1111 1110 …… 二进制数格式
在下面表A中说明上述有符号数值乘法过程。
表A
在以上公式中, 分别是操作数“B”的再编码数字的中框左侧的(-2x)和(0x)使操作数“B”的3个位与1个位对相关并确定该位对的相应符号数字。
表B
参看表B,符号数字0x使“0”与部分积相加,符号数字1x使操作数“A”与部分积相加,符号数字2x使两倍的操作“A”(即2×A)与部分积相加,符号数字-1x从部分积中减去操作数“A”,符号数字-2x从部分积中减去两倍的操作数“A”(即2×A)。
因此,从操作数“B”的高位位对中顺序地得到再编码数字(即0x,0x,0x和-2x)。为了实现“减-2×A”操作,就进行反相A、加1、并向左移位1位的操作。
此外,利用以上产生作为最后积项P的十进制数8的乘法得到四个部分积。
对于无符号数值乘法,应当在输入符号位前加上两个“0”,如以下表C所示。
表C
如表C所示,再编码数字由操作数“B”的位对产生,与部分积数目为4的有符号数值乘法相比,部分积项的数目变为5。操作数“B”的位对可以用作为例子的以上乘法来说明。以上乘法将操作数“ B”(即001111111110)分成5个位对(即(001)、(111)、(111)、(111)、(110))。每一位对分别使用要被重叠的1位,如果最后的位对只有两位,该乘法将该位对内的第3位认为是“0”。
与一般乘法相比,无符号数值乘法具有结果准确和处理有效的特点。一般乘法如以下表D所示。
表D
如表D所示,两个操作数A和B的一般乘法是十进制数的252乘以254。因此,其最后结果是十进制数的64008。
以下参看图2描述本发明最佳实施例的有选择地执行无符号数值乘法或有符号数值乘法的乘法器。
本发明最佳实施例的乘法器包括选择单元21、编码器22、符号传递单元23、移位和反相单元24、第一至第四部分积生成器25、26、27和28、以及先行进位加法器29。
图2的乘法器是8位×8位乘法器,“A”被定义为8位的被乘数,“B”被定义为8位的乘数。
操作数“B”输入编码器22。编码器22编码操作数“B”的位对,并形成相应于位对的再编码数字组(即-2x,-1x,0x,+1x,+2x)。形成符号数字的方法与8位乘8位的乘法的方法相同。
符号数字组的每一符号数字分别传送给单元24以及四个部分积生成器25、26、27和28中的一个。单元24以及四个部分积生成器25、26、27和28相对于操作数“A”执行相应的操作。
移位和反相单元24以及第一至第四部分积生成器25、26、27和28彼此顺序连接。在运行时,前一级的和及进位分别传送给下一级。因此,当前级使再编码数字的操作数据与前一级的部分积相加。
至于相应于各个再编码数字的操作,当再编码数字是-2x时,为了利用操作数“A”实现“减-2×A”操作,就进行将通过反相A获得的数据与前一级的部分积相加、加1并向左移位1位的操作。
当符号数字是-1x时,为了利用操作数“A”实现“减-1×A”操作,就进行将通过反相A获得的数据与前一级的部分积相加并加1的操作。
当符号数字是0x时,将“0”与前一级的部分积相加,符号数字0x没有实际操作作用。
当符号数字是+1x时,将操作数“A”与前一级的部分积相加。
当符号数字是+2x时,为了利用操作数“A”实现“加+2×A”操作,就把将操作数“A”向左移位1位获得的数据与前一级的部分积相加。
得到的结果通过先行进位加法器29向外输出。符号传递单元23分别与移位和反相单元24以及第一至第四部分积生成器25、26、27和28连接以便于信号传送。结果就是该符号传递单元23既传送符号又接收符号。
先行进位加法器29与第四部分积生成器28的输出端连接,利用从第四部分积生成器28输出的和及进位来产生和传送先行进位,由此提高有符号数值乘法的操作速度。
利用输入给选择单元21的信号sc1进行无符号数值乘法。如果利用信号sc1选择了无符号数值乘法,选择单元21就将被符号位扩展的位(1)和(2)输出给编码器22以及移位和反相单元24。
无符号数值乘法随后的操作与有符号数值乘法的操作相同。
如上所述,根据本发明的最佳实施例,本发明能够提供利用改进的布斯算法有选择地执行无符号数值乘法或有符号数值乘法来进行算法操作的乘法器。
特别是,本发明利用选择单元在无符号数值乘法中输入了扩展位。因此,本发明不仅能够执行有符号数值乘法,而且能够执行无符号数值乘法。此外,由于本发明的电路结构简单,所以它并没有降低操作处理速度,在制造集成电路时它占据相当小的面积。
机译: 乘法器,有选择地执行无符号幅度乘法或有符号幅度乘法
机译: 带符号扩展的二进制乘法器,用于有符号和无符号数字的乘法
机译: 带符号扩展的二进制乘法器,用于带符号和无符号数字的乘法