一种用于乘法器零标志位的产生电路、乘法器和检测方法转让专利

申请号 : CN202011097310.1

文献号 : CN112230883B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄鹏丁晓兵朱少华冯潮斌

申请人 : 上海芯旺微电子技术有限公司

摘要 :

本发明涉及集成电路的技术领域,公开了一种用于乘法器零标志位的产生电路,用于要求乘法运算结果与乘数、被乘数位数相同的乘法器应用,包括低位零检测模块、按位与模块和结果判定模块,所述低位零检测模块用于发现第一个输入值中从低位向高位第一个出现数值1的位,并将所述位至最高位全部用1替换;所述按位与模块用于将替换后的第一个输入值按位反序,再将反序后的第一输入值与第二输入值做按位与的逻辑运算;所述结果判定模块用于判定逻辑与运算后的结果是否全部为零,若全部为零,则零标志位输出为1,否则输出为0。本发明的电路结构紧凑,控制方便,便于普及和推广。

权利要求 :

1.一种用于乘法器零标志位的产生电路,其特征在于:用于要求乘法运算结果与乘数、被乘数位数相同的乘法器应用,包括低位零检测模块、按位与模块和结果判定模块,所述低位零检测模块用于发现第一个输入值中从低位向高位第一个出现数值1的位,并将所述位至最高位全部用1替换;所述按位与模块用于将替换后的第一个输入值按位反序,再将反序后的第一输入值与第二输入值做按位与的逻辑运算;所述结果判定模块用于判定逻辑与运算后的结果是否全部为零,若全部为零,则零标志位输出为1,否则输出为0;

所述低位零检测模块包括级联在一起的多个检测单元,后一级检测单元的级联端口通过或门与前面所有检测单元的标志位端口连接,每个检测单元均具有相同数量的输入端口和输入端口,用于判定输入数值中是否有数值1,若有,标志位输出为1,其检测单元的输出为将数值1对应的位至最高位置1后的数值,否则标志位输出为0,且检测单元的输出直接为输入数值。

2.根据权利要求1所述的用于乘法器零标志位的产生电路,其特征在于:所述检测单元包括从低位到高位的四个输入端口和四个输出端口,分别为In0、In1、In2、In3和Out0、Out1、Out2、Out3,输入端口In0通过依次串联的两个非门和一个或门与输出端口Out0相连,形成第一通路;输入端口In1一起通过依次串联的或非门、非门、或门与输出端口Out1相连,形成第二通路;输入端口In2通过依次串联的非门、与非门、或门与输出端口Out2相连,形成第三通路;输入端口In3一起通过依次串联的或非门、与门、或门与输出端口Out2相连,形成第四通路;

所述第二通路中的或非门的输入端口还与输入端口In0连接,输出端口还与第三通路、第四通路中的与非门的输入端口连接;

所述第四通路中的或非门的输入端口还与输入端口In2连接;

所述第二通路、第四通路中的或非门的输出端口还通过与非门与标志位端口连接;

所述第一通路、第二通路、第三通路和第四通路中的或门的输入端口均与级联端口相连。

3.根据权利要求1所述的用于乘法器零标志位的产生电路,其特征在于:所述结果判定模块设置有或非门。

4.一种乘法器,其特征在于:包括权利要求1‑3之一所述的用于乘法器零标志位的产生电路和乘法运算电路。

5.一种用于定长乘法零标志位的检测方法,其特征在于,用于要求乘法运算结果与乘数、被乘数位数相同的乘法器应用,包括以下步骤:步骤一、从低位向高位对第一个输入值进行逐位检测,直至发现第一个出现数值1的位,并将所述位至最高位全部用1替换;

步骤二、将所述步骤一中替换后的第一个输入值按位反序,再与第二个输入值进行按位与逻辑运算;

步骤三、对步骤二中逻辑运算后的结果进行判定,若全部为零,则零标志位输出为1,否则输出为0。

6.根据权利要求5所述的定长乘法零标志位的检测方法,其特征在于:根据要求乘法运算结果的位数,通过高位补零或者低位截取的方式,对所述第一个输入值和第二个输入值的位数进行处理,使三者的位数相同。

7.根据权利要求6所述的定长乘法零标志位的检测方法,其特征在于:当所述第一个输入值和第二个输入值的位数相同,但与要求乘法运算结果的位数不同时,根据要求乘法运算结果的位数,通过将第一个输入值和第二个输入值的高位补零方式,或者从两者的低位截取与要求乘法运算结果的位数相同的位数,使三者的位数相同;

当所述第一个输入值、第二个输入值以及要求乘法运算结果的位数均不相同时,根据要求乘法运算结果的位数,通过将第一个输入值或/和第二个输入值的高位补零方式,或者从第一个输入值或/和第二个输入值的低位截取与要求乘法运算结果的位数相同的位数,使三者的位数相同。

说明书 :

一种用于乘法器零标志位的产生电路、乘法器和检测方法

技术领域

[0001] 本发明涉及集成电路的技术领域,特别是一种用于乘法器零标志位的产生电路、乘法器和检测方法。

背景技术

[0002] 在32位架构的MCU中,常见的乘法器为32×32结果为低32位的结构,为提高运算效率,乘法器通常使用单周期实现。由于乘法器的关键路径较长,通常乘法器需要较长的时
间,相比其他指令会出现限制运行频率的结果,所以实际设计过程中需要尽可能加快乘法
器的运算结果。

发明内容

[0003] 本发明提供一种用于乘法器零标志位的产生电路、乘法器和检测方法,解决了现有乘法器的运算时间较长,会限制MCU运行频率等问题。
[0004] 本发明可以通过以下技术方案实现:
[0005] 一种用于乘法器零标志位的产生电路,用于要求乘法运算结果与乘数、被乘数位数相同的乘法器应用,包括低位零检测模块、按位与模块和结果判定模块,所述低位零检测
模块用于发现第一个输入值中从低位向高位第一个出现数值1的位,并将所述位至最高位
全部用1替换;所述按位与模块用于将替换后的第一个输入值按位反序,再将反序后的第一
输入值与第二输入值做按位与的逻辑运算;所述结果判定模块用于判定逻辑与运算后的结
果是否全部为零,若全部为零,则零标志位输出为1,否则输出为0。
[0006] 进一步,所述低位零检测模块包括级联在一起的多个检测单元,后一级检测单元的级联端口通过或门与前面所有检测单元的标志位端口连接,每个检测单元均具有相同数
量的输入端口和输入端口,用于判定输入数值中是否有数值1,若有,标志位输出为1,其检
测单元的输出为将数值1对应的位至最高位置1后的数值,否则标志位输出为0,且检测单元
的输出直接为输入数值。
[0007] 进一步,所述检测单元包括从低位到高位的四个输入端口和四个输出端口,分别为In0、In1、In2、In3和Out0、Out1、Out2、Out3,
[0008] 输入端口In0通过依次串联的两个非门和一个或门与输出端口Out0相连,形成第一通路;输入端口In1一起通过依次串联的或非门、非门、或门与输出端口Out1相连,形成第
二通路;输入端口In2通过依次串联的非门、与非门、或门与输出端口Out2相连,形成第三通
路;输入端口In3一起通过依次串联的或非门、与门、或门与输出端口Out2相连,形成第四通
路;
[0009] 所述第二通路中的或非门的输入端口还与输入端口In0连接,输出端口还与第三通路、第四通路中的与非门的输入端口连接;
[0010] 所述第四通路中的或非门的输入端口还与输入端口In2连接;
[0011] 所述第二通路、第四通路中的或非门的输出端口还通过与非门与标志位端口连接;
[0012] 所述第一通路、第二通路、第三通路和第四通路中的或门的输入端口均与级联端口相连。
[0013] 进一步,所述结果判定模块设置有或非门。
[0014] 一种基于上文所述的用于乘法器零标志位的产生电路的乘法器,包括权利要求1‑4之一所述的用于乘法器零标志位的产生电路和乘法运算电路。
[0015] 一种用于定长乘法零标志位的检测方法,用于要求乘法运算结果与乘数、被乘数位数相同的乘法器应用,包括以下步骤:
[0016] 步骤一、从低位向高位对第一个输入值进行逐位检测,直至发现第一个出现数值1的位,并将所述位至最高位全部用1替换;
[0017] 步骤二、将所述步骤一中替换后的第一个输入值按位反序,再与第二个输入值进行按位与逻辑运算;
[0018] 步骤三、对步骤二中逻辑运算后的结果进行判定,若全部为零,则零标志位输出为1,否则输出为0。
[0019] 进一步,根据要求乘法运算结果的位数,通过高位补零或者低位截取的方式,对所述第一个输入值和第二个输入值的位数进行处理,使三者的位数相同。
[0020] 进一步,当所述第一个输入值和第二个输入值的位数相同,但与要求乘法运算结果的位数不同时,根据要求乘法运算结果的位数,通过将第一个输入值和第二个输入值的
高位补零方式,或者从两者的低位截取与要求乘法运算结果的位数相同的位数,使三者的
位数相同;
[0021] 当所述第一个输入值、第二个输入值以及要求乘法运算结果的位数均不相同时,根据要求乘法运算结果的位数,通过将第一个输入值或/和第二个输入值的高位补零方式,
或者从第一个输入值或/和第二个输入值的低位截取与要求乘法运算结果的位数相同的位
数,使三者的位数相同。
[0022] 本发明有益的技术效果在于:
[0023] 利用低位零检测模块将第一个输入值中的低位连续零位检测出来,然后利用按位与模块将第一个输入值、第二个输入值中的低位连续零位都保留下来,最后,通过结果判定
模块即可输出第一个输入值、第二个输入值做乘法运算时的零标志位计算结果,不需要根
据第一个输入值、第二个输入值做乘法运算后的计算结果来计算零标志位,两者可以并行
计算,从而提高乘法器的运算速度。另外,整个电路结构紧凑,实用性强,便于普及和推广。

附图说明

[0024] 图1为本发明的总体电路结构示意图;
[0025] 图2为本发明的低位零检测模块的结构示意图;
[0026] 图3为本发明的检测单元的结构示意图;
[0027] 图4为本发明的结果判定模块的结构示意图。

具体实施方式

[0028] 下面结合附图对本发明的具体实施例进一步详细说明。
[0029] 一般情况下,乘法器的运算结果有两部分组成,一个是乘法运算本身,一个是标志位的产生,这两者需要的时间决定了最后得到乘法结果所使用的时间。而乘法器的标志位
主要有两个,即负标志位和是零标志位,其中,负标志位判断较为简单,零标志位会在乘法
运算完成之后再产生,这样不利于提高乘法器运算速度。本发明提出一种基于乘法器输入
快速产生零标志位的方式来提供乘法运算速度,即将原来的乘法运算结果产生后再计算零
标志位的串行计算方式改进为两者能够同时运行的并行计算方式,从而提高乘法器运算速
度。
[0030] 参照附图1,本发明提供了一种用于乘法器零标志位的产生电路,包括低位零检测模块、按位与模块和结果判定模块,该低位零检测模块用于发现第一个输入值中从低位向
高位第一个出现数值1的位,并将所述位至最高位全部用1替换;该按位与模块用于将替换
后的第一个输入值按位反序,再将反序后的第一输入值与第二输入值做按位与的逻辑运
算;该结果判定模块用于判定逻辑与运算后的结果是否全部为零,若全部为零,则零标志位
输出为1,否则输出为0。这样,利用低位零检测模块将第一个输入值中的低位连续零位检测
出来,然后利用按位与模块将第一个输入值、第二个输入值中的低位连续零位都保留下来,
最后,通过结果判定模块即可输出第一个输入值、第二个输入值做乘法运算时的零标志位
计算结果,不需要根据第一个输入值、第二个输入值做乘法运算后的计算结果来计算零标
志位,两者可以并行计算,从而提高乘法器的运算速度。
[0031] 如图2所示,该低位零检测模块包括级联在一起的多个检测单元,后一级检测单元的级联端口通过或门与前面所有检测单元的标志位端口连接,每个检测单元均具有相同数
量的输入端口和输入端口,用于判定输入数值中是否有数值1,若有,标志位输出为1,其检
测单元的输出为将数值1对应的位至最高位置1后的数值,否则标志位输出为0,且检测单元
的输出直接为输入数值。这样,通过多个检测单元将第一个输入值均分为多个部分,各个部
分均作为输入,同时输入对应的检测单元进行是否包含数值1的判断,并且借助或门,将前
面所有检测单元的检测结果引入至下一级检测单元辅助判断,从而提高整个低位零检测模
块的计算速度。
[0032] 具体地,如图3所示,该检测单元包括从低位到高位的四个输入端口和四个输出端口,分别为In0、In1、In2、In3和Out0、Out1、Out2、Out3,输入端口In0通过依次串联的两个非
门和一个或门与输出端口Out0相连,形成第一通路;输入端口In1一起通过依次串联的或非
门、非门、或门与输出端口Out1相连,形成第二通路;输入端口In2通过依次串联的非门、与
非门、或门与输出端口Out2相连,形成第三通路;输入端口In3一起通过依次串联的或非门、
与门、或门与输出端口Out2相连,形成第四通路;并且第二通路中的或非门的输入端口还与
输入端口In0连接,输出端口还与第三通路、第四通路中的与非门的输入端口连接;第四通
路中的或非门的输入端口还与输入端口In2连接;第二通路、第四通路中的或非门的输出端
口还通过与非门与标志位端口连接;第一通路、第二通路、第三通路和第四通路中或门的输
入端口均与级联端口相连。
[0033] 由于四条通路中或门的输入端口均与级联端口相连,输入端口对应四条通路的输出端口,而级联端口又通过或门与前面所有检测单元的标志位端口连接,因此,只要前面所
有检测单元的标志位端口中的一个输出为数值1,无论该检测单元对应的四条通路中前面
电路的计算是什么,该检测单元的输出也将是全部为数值1,其真值表如下所示,从而可以
快速地将第一个出现数值1的位至最高位置1输出,快速完成第一个输入值的低位零检测。
[0034] 检测单元的真值表
[0035]
[0036] 该按位与模块的输入端口从低位至高位分别与低位零检测模块的输出端口从高位至低位连接起来,实现对置1替换后的第一个输入值按位反序操作,通过这种连接方式不
需要额外的模块,只需要通过走线即可实现按序取反的功能,简单可靠,然后利用多个与
门,将其与第二个输入值做按位与的逻辑运算,由于第一个输入值的低位连续零已经转移
到高位,而第二个输入值的低位连续零依然在低位,从而将两个输入值中的低位连续零位
都保留下来,为后续判断做准备。
[0037] 该结果判定模块设置有或非门,将按位与模块的各个输出端口连接至或非门的输入端口,如图4所示,利用或非门的功能即可完成零标志位的输出判断,其输出为1时,表示
该或非门的输入全部为0,即第一个输入值和第二个输入值中的低位连续零位数和大于等
于任一输入值的位数,两者乘法运算结果为0;输出为0时,表示该或非门的输入不全部为0,
即第一个输入值和第二个输入值中的低位连续零位数和小于任一输入值的位数,两者乘法
运算结果不为0。
[0038] 本发明的产生电路用于要求乘法运算结果与乘数、被乘数位数相同的乘法器应用,例如输入为两个32位数的二进制数值、只取乘法运算结果低32位的乘法器,或者输入为
两个32位数的二进制数值、取正常的乘法运算结果即64位的乘法器,或者输入为两个64位
数的二进制数值、只取乘法运算结果低32位的乘法器,或者输入为两个位数不同的二进制
数值、且取乘法运算结果的位数也与两个输入不同的乘法器等等,在使用本发明的产生电
路时,具体处理如下:
[0039] 对于第一种情况,可以直接使用本发明的产生电路;
[0040] 对于第二种情况,只需将输入为两个32位数的二进制数值的高位补零扩展成64位数即可;
[0041] 对于第三种情况,只需截取输入的两个64位数的二进制数值中低32位重新作为输入即可;
[0042] 对于第四种情况,参考上述三种情况,将两个输入的二进制数值处理成和要求的乘法运算结果相同的位数,重新作为输入即可。
[0043] 本发明还提供了一种基于上文所述的用于乘法器零标志位的产生电路的乘法器,包括上文所述的用于乘法器零标志位的产生电路和乘法运算电路。
[0044] 本发明还提供了一种用于定长乘法零标志位的检测方法,包括以下步骤:
[0045] 步骤一、从低位向高位对第一个输入值进行逐位检测,直至发现第一个出现数值1的位,并将所述位至最高位全部用1替换。
[0046] 为了确保检测的一致性,第一个输入值和第二个输入值的位数要相同,当两者位数不相同时,通过将位数少的输入值的高位补零方式,使两者的位数达到相同。
[0047] 步骤二、将步骤一中替换后的第一个输入值按位反序,再与第二个输入值进行按位与逻辑运算;由于采用按位反序操作,将第一个输入值的低位连续零已经转移到高位,而
第二个输入值的低位连续零依然在低位,通过按位与逻辑运算,就可以将两个输入值中的
低位连续零位都保留下来,为后续判断做准备。
[0048] 步骤三、对逻辑运算后的结果进行判定,若全部为零,则零标志位输出为1,否则输出为0。
[0049] 若其输入全部为0,即第一个输入值和第二个输入值中的低位连续零位数和大于等于任一输入值的位数,两者乘法运算结果为0,则零标志位输出为1;若其输入不全部为0,
即第一个输入值和第二个输入值中的低位连续零位数和小于任一输入值的位数,两者乘法
运算结果不为0,则零标志位输出为0。
[0050] 本发明的检测方法也是用于要求乘法运算结果与乘数、被乘数位数相同的乘法器应用,根据要求乘法运算结果的位数,通过高位补零或者低位截取的方式,对第一个输入值
和第二个输入值的位数进行处理,使三者的位数相同。
[0051] 具体地,当第一个输入值和第二个输入值的位数相同,但与要求乘法运算结果的位数不同时,根据要求乘法运算结果的位数,通过将第一个输入值和第二个输入值的高位
补零方式,或者从两者的低位截取与要求乘法运算结果的位数相同的位数,使三者的位数
相同;
[0052] 当第一个输入值、第二个输入值以及要求乘法运算结果的位数均不相同时,根据要求乘法运算结果的位数,通过将第一个输入值或/和第二个输入值的高位补零方式,或者
从第一个输入值或/和第二个输入值的低位截取与要求乘法运算结果的位数相同的位数,
使三者的位数相同。
[0053] 虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变
更或修改,因此,本发明的保护范围由所附权利要求书限定。