基4Booth乘法器及其实现方法、运算电路及芯片与流程

文档序号:30787640发布日期:2022-07-16 08:43阅读:713来源:国知局
基4Booth乘法器及其实现方法、运算电路及芯片与流程
基4 booth乘法器及其实现方法、运算电路及芯片
技术领域
1.本技术实施例涉及电路领域,尤其涉及一种基4 booth乘法器及其实现方法、运算电路及芯片。


背景技术:

2.基4 booth乘法器是数字电路设计中常用电路之一,例如,基4 booth乘法器常常用于中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)等复杂逻辑芯片,也常常用于微控制单元(microcontroller unit,mcu)、现场可编程门阵列(field programmable gate array,fpga)等综合性设计芯片。一般地,乘法运算可以分为三个步骤:部分积生成、部分积压缩至两行向量、最后将两行向量再相加。在部分积生成中,通常采用基4-booth编码,基4-booth编码可使乘法器的部分积数量减少一半。
3.因此,如何实现基4 booth乘法器,进而提升基4-booth编码乘法器整体性能,成为亟待解决的技术问题。


技术实现要素:

4.有鉴于此,本技术实施例提供了一种基4 booth乘法器及其实现方法、运算电路及芯片,用以克服上述全部或部分技术缺陷。
5.第一方面,本技术实施例提供了一种基4 booth乘法器,其包括:选择控制器,用于根据乘数各比特位上的取值,输出用于表征部分积置零的置零选通控制信号、用于表征部分积为被乘数乘以正1的正1倍选通控制信号、用于表征部分积为被乘数乘以负1的负1倍选通控制信号、用于表征部分积为被乘数乘以正2的正2倍选通控制信号、用于表征部分积为被乘数乘以负2的负2倍选通控制信号以及用于表征部分积为被乘数乘以负数倍的符号位选通控制信号中的任一种;其中,所述乘数和所述被乘数为n位二进制数;
6.多位选择器,用于在接收表征部分积置零的置零选通控制信号,输出用于使部分积为零的第一选择结果;在接收表征部分积为被乘数乘以正1的正1倍选通控制信号,输出用于使部分积为被乘数乘自身的第二选择结果;在接收表征部分积为被乘数乘以负1的负1倍选通控制信号,输出用于使部分积为被乘数乘-1的第三选择结果;在接收表征部分积为被乘数乘以正2的正2倍选通控制信号,输出用于使部分积为被乘数乘2的第四选择结果;在接收表征部分积为被乘数乘以负2的负2倍选通控制信号,输出用于使部分积为被乘数乘-2的第五选择结果;以及,
7.多路进位保存加法器,用于确定n/2组带有基4 booth乘法进位权重的n比特的部分积在第0个比特位至第(2n-1)个比特位上对应的比特位,并对第0个比特位至第(2n-1)个比特位上的部分积分别进行压缩,输出2n比特的2组数据,所述多路进位保存加法器在第0个比特位至第(2n-1)个比特位上用于压缩的进位保存加法器的数量为对应比特位上部分积的数量与符号位的数量之和减2;
8.带进位链的进位加法器,用于将所述2n比特的2组数据进行相加求和。
9.第二方面,本技术提供了一种基4 booth乘法器的实现方法,其包括:根据乘数各比特位上的取值,输出用于表征部分积置零的置零选通控制信号、用于表征部分积为被乘数乘以正1的正1倍选通控制信号、用于表征部分积为被乘数乘以负1的负1倍选通控制信号、用于表征部分积为被乘数乘以正2的正2倍选通控制信号、用于表征部分积为被乘数乘以负2的负2倍选通控制信号以及用于表征部分积为被乘数乘以负数倍的符号位选通控制信号中的任一种;其中,所述乘数和所述被乘数为n位二进制数;
10.在接收表征部分积置零的置零选通控制信号,输出用于使部分积为零的第一选择结果;在接收表征部分积为被乘数乘以正1的正1倍选通控制信号,输出用于使部分积为被乘数乘自身的第二选择结果;在接收表征部分积为被乘数乘以负1的负1倍选通控制信号,输出用于使部分积为被乘数乘-1的第三选择结果;在接收表征部分积为被乘数乘以正2的正2倍选通控制信号,输出用于使部分积为被乘数乘2的第四选择结果;在接收表征部分积为被乘数乘以负2的负2倍选通控制信号,输出用于使部分积为被乘数乘-2的第五选择结果;
11.确定n/2组带有基4 booth乘法进位权重的n比特的部分积在第0个比特位至第(2n-1)个比特位上对应的比特位,并对第0个比特位至第(2n-1)个比特位上的部分积分别进行压缩,输出2n比特的2组数据,所述多路进位保存加法器在第0个比特位至第(2n-1)个比特位上用于压缩的进位保存加法器的数量为对应比特位上部分积的数量与符号位的数量之和减2;
12.带进位链的进位加法器,用于将所述2n比特的2组数据进行相加求和。
13.第三方面,本技术提供了一种运算电路,所述运算电路包括根据第一方面任一实施例提供的基4 booth乘法器。
14.第四方面,本技术提供了一种芯片,所述芯片包括根据第三方面任一实施例提供的运算电路。
15.本技术实施例提供了一种基4 booth乘法器及其实现方法、运算电路和芯片,由于选择控制器,输出置零选通控制信号、正1倍选通控制信号、负1倍选通控制信号、正2倍选通控制信号、负2倍选通控制信号以及符号位选通控制信号中的任一种;多位选择器,用于输出第一选择结果、第二选择结果、第三选择结果、第四选择结果、第五选择结果;以及,多路进位保存加法器,用于确定n/2组带有基4 booth乘法进位权重的n比特的部分积在第0个比特位至第(2n-1)个比特位上对应的比特位,并对第0个比特位至第(2n-1)个比特位上的部分积分别进行压缩,输出2n比特的2组数据;带进位链的进位加法器,用于将所述2n比特的2组数据进行相加求和,由此基本上实现了并行计算部分积中每个比特位的进位输出,以用于求和运算,由此可以缩短整个计算过程的时长,提高计算速度。
附图说明
16.后文将参照附图以示例性而非限制性的方式详细描述本技术实施例的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比值绘制的。附图中:
17.图1为本技术实施例提供的一种用于实现基4 booth乘法器的选择控制器的结构示意图;
18.图2为本技术实施例提供的一种用于实现基4 booth乘法器的选择控制器中基4-booth编码方法的部分积的表格;
19.图3为本技术实施例提供的一种用于实现基4 booth乘法器的多位选择器的结构示意图;
20.图4为本技术实施例提供的一种用于实现基4 booth乘法器的32位加法器用于对16比特的8组数据求和的原理示意图;
21.图5为本技术实施例提供的一种用于实现基4 booth乘法器的32位加法器中多路进位保存加法器的结构示意图;
22.图6为本技术实施例提供的一种基4 booth乘法器用于对16比特的16组数据求和的原理示意图;
23.图7为本技术实施例提供的一种用于实现基4 booth乘法器的64位加法器中多路进位保存加法器的结构示意图;
24.图8为本技术实施例提供的一种基4 booth乘法器中带进位链的进位加法器的结构示意图;
25.图9为本技术实施例提供的一种基4 booth乘法器中带进位链的进位加法器的进位模块中的第一预处理单元的电路示意图;
26.图10为本技术实施例提供的一种基4 booth乘法器中带进位链的进位加法器的进位模块中的第二预处理单元的电路示意图;
27.图11为本技术实施例提供了一种基4 booth乘法器中带进位链的进位加法器的进位链的示意图;
28.图12为本技术实施例提供的一种基4 booth乘法器的实现方法的示意性流程图。
具体实施方式
29.下面结合本发明实施例附图进一步说明本发明实施例具体实现。
30.实施例一
31.图1为本技术实施例提供的一种用于实现基4 booth乘法器的选择控制器的结构示意图。本实施例的用于实现基4 booth乘法器的选择控制器可以为独立的硬件电路结构,也可以为芯片或微处理器等其他器件的基础电路单元结构。如图1所示,本技术实施例提供的用于实现基4 booth乘法器的选择控制器包括置0选择控制模块101、正1倍选择控制模块102、负1倍选择控制模块103、正2倍选择控制模块104、负2倍选择控制模块105以及符号位选择控制模块106。所述乘数和所述被乘数为n位二进制数。
32.基4-booth编码方法的部分积如图2所示,乘数b每相邻的三位共有八种组合方式,不同的组合形式分别代表部分积选择是0,
±
a,
±
2a之中的一种,其中a代表被乘数。其中,置0选择控制模块101用来实现部分积为零时的选通控制信号,正1倍选择控制模块102用来实现部分积为被乘数自身时的选通控制信号,负1倍选择控制模块103用来实现部分积为被乘数自身对应负数时的选通控制信号,正2倍选择控制模块104用来实现部分积为被乘数乘以2倍时的选通控制信号,负2倍选择控制模块10用来实现部分积为被乘数乘以-2倍时的选通控制信号,符号位选择控制模块106用来实现部分积为负数时的选通控制信号。
33.具体地,置0选择控制模块101用于在乘数的第i+1个比特位、第i个比特位和第i-1
个比特位均为高电平或者均为低电平时,输出用于表征部分积置零的置零选通控制信号。其中,i为大于或等于0且小于或等于n-1的整数;所述部分积用于表征乘数的第i+1个比特位、第i个比特位和第i-1个比特位与被乘数基于基4 booth乘法的乘积。例如,对于被乘数a和乘数b的置零选通控制信号可以表示为
34.具体地,正1倍选择控制模块用于在乘数的第i+1个比特位、第i个比特位和第i-1个比特位分别为低电平、高电平及低电平,或者分别为低电平、低电平及高电平时,输出用于表征部分积为被乘数乘以正1的正1倍选通控制信号。例如,对于被乘数a和乘数b的正1倍选通控制信号可以表示为可选地,在本技术的一种实施例中,,为了便于电路实现时的整体化布局,正1倍选通控制信号有时也可以被表示为
35.具体地,负1倍选择控制模块用于在乘数的第i+1个比特位、第i个比特位和第i-1个比特位分别为高电平、高电平及低电平,或者分别为高电平、低电平及高电平时,输出用于表征部分积为被乘数乘以负1的负1倍选通控制信号。例如,对于被乘数a和乘数b的负1倍选通控制信号可以表示为可选地,在本技术的一种实施例中,,为了便于电路实现时的整体化布局,正1倍选通控制信号有时也可以被表示为
36.具体地,正2倍选择控制模块用于在乘数的第i+1个比特位、第i个比特位和第i-1个比特位分别为低电平、高电平及高电平时,输出用于表征部分积为被乘数乘以正2的正2倍选通控制信号。例如,对于被乘数a和乘数b的正2倍选通控制信号可以表示为可选地,在本技术的一种实施例中,为了便于电路实现时的整体化布局,正1倍选通控制信号有时也可以被表示为
37.具体地,负2倍选择控制模块用于在乘数的第i+1个比特位、第i个比特位和第i-1个比特位分别为高电平、低电平及低电平时,输出用于表征部分积为被乘数乘以负2的负2倍选通控制信号。例如,对于被乘数a和乘数b的负2倍选通控制信号可以表示为可选地,在本技术的一种实施例中,为了便于电路实现时的整体化布局,负2倍选通控制信号有时也可以被表示为
38.具体地,符号位选择控制模块用于在乘数的第i+1个比特位、第i个比特位和第i-1个比特位分别为高电平、高电平及低电平,或者分别为高电平、低电平及高电平,或者分别为高电平、低电平及低电平时,输出用于表征部分积为被乘数乘以负数倍的符号位选通控制信号。例如,对于被乘数a和乘数b的符号位选择控制模块可以表示为proc_2a=selb_m1a
·
selb_m2a。
39.本技术实施例中,由于选择控制器包括用于输出置零选通控制信号的置0选择控制模块、用于输出表征部分积为被乘数乘以正1的正1倍选通控制信号的正1倍选择控制模块、用于输出表征部分积为被乘数乘以负1的负1倍选通控制信号的负1倍选择控制模块、用
于输出表征部分积为被乘数乘以正2的正2倍选通控制信号的正2倍选择控制模块、用于输出用于表征部分积为被乘数乘以负2的负2倍选通控制信号的负2倍选择控制模块、以及用于输出表征部分积为被乘数乘以负数倍的符号位选通控制信号的符号位选择控制模块,通过置0选择控制模块、正1倍选择控制模块、负1倍选择控制模块、正2倍选择控制模块以及负2倍选择控制模块可以涵盖乘数的第i+1个比特位、第i个比特位和第i-1个比特位各种取值时部分积的输出情况,由此可以实现各乘数与被乘数部分积的并行化的直接选通,而不用进行多次分步运算,由此可以缩短整个计算过程的时长,提高计算速度。
40.图3为本技术实施例提供的一种用于实现基4 booth乘法器的多位选择器的结构示意图。本实施例的用于实现基4 booth乘法器的多位选择器可以为独立的硬件电路结构,也可以为芯片或微处理器等其他器件的基础电路单元结构。如图3所示,本技术实施例提供的用于实现基4 booth乘法器的多位选择器包括置零模块301、第一反向传输选择门模块302、第一同向传输选择门模块303、第二反向传输选择门模块304以及第二同向传输选择门模块305以及第一反相器306。置零模块301、第一反向传输选择门模块302、第一同向传输选择门模块303、第二反向传输选择门模块304以及第二同向传输选择门模块305通过同一线连接后与第一反相器306连接,所述反相器的输出端作为多位选择器的输出端。其中,置零模块301、第一反向传输选择门模块302、第一同向传输选择门模块303、第二反向传输选择门模块304以及第二同向传输选择门模块305通过同一线连接,可以理解为通过“线与”的方式,共同连接到第一反相器306输入端。所谓“线与”,就是将多个具有高阻态的电路输出用同一线连接起来,实现“与”逻辑,该多种通路有且仅有一条通路会选通,使“线与“中选通该选通通路进行数据传输。由于除选通通路之外其他通路在不选通状态下都是高阻态,所以有切仅有该选通通路会进行数据传输。这是选择器的一种实现方式。本电实施例中,置零模块301、第一反向传输选择门模块302、第一同向传输选择门模块303、第二反向传输选择门模块304以及第二同向传输选择门模块305的五条输出通路共同线与到第一反相器的输入端,且该五条输出通路在控制电路配合下,保证有且仅有一条通路选通,以此实现五选一选择器功能。通过这种三态逻辑并联,可以使面积大幅减小,以提升面积利用率。
41.当所述乘数和所述被乘数为16位二进制数时,对应实现基4 booth乘法器的为32位加法器。具体地,图4为本技术实施例提供的一种用于实现基4booth乘法器的32位加法器用于对16比特的8组数据求和的原理示意图。其中,每一数据均为部分积,用于表征乘数的第i+1个比特位、第i个比特位和第i-1个比特位与被乘数基于基4 booth乘法的乘积;i为大于或等于0且小于或等于15的整数。具体地,多路进位保存加法器,用于确定8组带有基4 booth乘法进位权重的16比特的部分积在第0-31个比特位上对应的比特位。由于8组部分积的进位权重不同,因此根据各进位权重进行排位后,形成如图4所示的错位排列形式。多路进位保存加法器对第0-31个比特位上的部分积分别进行压缩,输出32比特的2组数据,所述多路进位保存加法器在第0-31个比特位上用于压缩的进位保存加法器的数量为对应比特位上部分积的数量与符号位的数量之和减2。
42.图5为本技术实施例提供的一种用于实现基4 booth乘法器的32位加法器中多路进位保存加法器的结构示意图。多路进位保存加法器用于将16比特的8组数据实现8-2数据压缩,输出32比特的2组数据,所述32位加法器的每一比特位上对应的进位保存加法器的数量为对应比特位上部分积的数量与符号位的数量之和减2。比如对于,对于第14-18比特位
对应的进位保存加法器的数量为7个。
43.当所述乘数和所述被乘数为32位二进制数时,对应实现基4 booth乘法器的为64位加法器。具体地,图6为本技术实施例提供的一种用于实现基4booth乘法器的64位加法器用于对16比特的16组数据求和的原理示意图。其中,每一数据均为部分积,用于表征乘数的第j+1个比特位、第j个比特位和第j-1个比特位与被乘数基于基4 booth乘法的乘积;j为大于或等于0且小于或等于31的整数。具体地,多路进位保存加法器,用于确定16组带有基4 booth乘法进位权重的32比特的部分积在第0-63个比特位上对应的比特位。由于16组部分积的进位权重不同,因此根据各进位权重进行排位后,形成如图6所示的错位排列形式。多路进位保存加法器对第0-63个比特位上的部分积分别进行压缩,输出64比特的2组数据,所述多路进位保存加法器在第0-63个比特位上用于压缩的进位保存加法器的数量为对应比特位上部分积的数量与符号位的数量之和减2。
44.图7为本技术实施例提供的一种用于实现基4 booth乘法器的64位加法器中多路进位保存加法器的结构示意图。多路进位保存加法器用于将16比特的16组数据实现8-2数据压缩,输出64比特的2组数据,所述64位加法器的每一比特位上对应的进位保存加法器的数量为对应比特位上部分积的数量与符号位的数量之和减2。比如对于,对于第14-18比特位对应的进位保存加法器的数量为7个、第15比特位对应的进位保存加法器的数量为6个、第16比特位对应的进位保存加法器的数量为8个、第17比特位对应的进位保存加法器的数量为7个、第18比特位对应的进位保存加法器的数量为9个。
45.图8为本技术实施例提供的一种基4 booth乘法器中带进位链的进位加法器的结构示意图。本实施例的带进位链的进位加法器可以为独立的硬件电路结构,也可以为芯片或微处理器等其他器件的基础电路单元结构。如图8所示,当所述乘数和所述被乘数为32位二进制数时,本技术实施例提供的基4 booth乘法器中带进位链的进位加法器包括n个进位模块10,n为小于或者等于7的整数。每个进位模块对应64比特的2组数据中的多个比特位,其中,64比特的2组数据为16位二进制数。例如,一个进位模块可以对应64比特的2组数据中的2个比特位、3个比特位或更多个比特位等。应理解,n个进位模块10中的每个进位模块对应的64比特的2组数据中的比特位的数量可以相同,也可以不同。其中,所述部分积用于表征乘数的第j+1个比特位、第j个比特位和第j-1个比特位与被乘数基于基4 booth乘法的乘积;j为大于或等于0且小于或等于31的整数。
46.其中,第n个进位模块与第n-1个进位模块连接,以用于接收第n-1进位模块输出的级间进位参数,由此,基于第n-1个进位模块输出的级间进位参数,计算第n个进位模块的级间进位参数和第n个进位模块对应的每个比特位的进位输出。其中,n为大于1且小于或等于n的整数。
47.每个进位模块包括预处理单元和多个进位计算单元,一个进位计算单元对应64比特的2组数据的一个比特位。
48.本实施例中,第n个进位模块包含的预处理单元,用于对对应的64比特的2组数据中的多个比特位进行预处理。
49.可选地,在本技术的一种实现方式中,预处理结果包括:组内进位生成信号和组内进位传播信号。第n个进位模块包含的预处理单元,具体用于:对对应的64比特的2组数据中的每个比特位进行运算,生成每个比特位对应的进位生成信号和进位传播信号;基于对应
的至少一个比特位的进位生成信号和进位传播信号分别生成每个比特位的组内进位生成信号和组内进位传播信号。
50.具体地,对对应的64比特的2组数据中的每个比特位进行逻辑与运算,生成每个比特位的进位生成信号,进位生成信号为64比特的2组数据中的对应比特位的逻辑与值运算结果。对对应的64比特的2组数据中的每个比特位进行逻辑或运算,生成每个比特位的进位传播信号,进位传播信号为64比特的2组数据中的对应比特位的逻辑或值运算结果。为了便于电路实现时的整体化布局,在本技术实施例中,有时也将每个比特位的进位生成信号进行逻辑非运算的结果称为进位生成信号。类似地,将每个比特位的进位传播信号进行逻辑非运算的结果称为进位传播信号。
51.在得到第n个进位模块对应的每个比特位的进位生成信号和进位传播信号之后,第n个进位模块包含的预处理单元还可以对相邻的多个比特位的进位生成信号进行逻辑或运算,生成组内进位生成信号,第n个进位模块包含的预处理单元还可以对相邻的多个比特位的进位传播信号进行逻辑与运算,生成组内进位传播信号。为了便于电路实现时的整体化布局,在本技术实施例中,有时也将组内进位生成信号进行逻辑非运算的结果称为组内进位生成信号。类似地,将组内进位传播信号进行逻辑非运算的结果称为组内进位传播信号。
52.例如,对于第一加数a和第二加数b中的第i个比特位,第i个比特位的进位生成信号gi=ai·bi
,第i个比特位的进位传播信号pi=ai+bi。如上所述,为了便于电路实现时的整体化布局,第i个比特位的进位生成信号和进位传播信号有时也分别被表示为或第j个比特位到第i个比特位的组内进位产生信号g
i:j
=gi+g
i+1
+

+gi,第j个比特位到第i个比特位的组内进位传播信号p
i:j
=pi·
p
i+1
·
...
·
pi。如上所述,为了便于电路实现时的整体化布局,第j个比特位到第i个比特位的组内进位产生信号和进位传播信号有时也可以被表示为和
53.此外,g
i:j
=g
i:k
+g
k-1:j
,并且,p
i:j
=p
i:k
·
p
k-1:j
,其中,k为按照比特位从低到高的顺序位于第j个比特位到第i个比特位之间的任一比特位。
54.本实施例中,第n个进位模块包含的多个进位计算单元,用于根据预处理的结果和第n-1个进位模块的级间进位参数进行运算,生成第n个进位模块对应的每个比特位的进位输出和第n个进位模块的级间进位参数。
55.可选地,在本技术的一种实施例中,第n个进位模块包含的每个进位计算单元,具体用于根据对应的比特位的组内进位生成信号和组内进位传播信号以及第n-1个进位模块的级间进位参数进行运算,生成对应的比特位的进位输出。
56.对于第n个进位模块对应的多个比特位中的最高位,该最高比特位对应的进位计算单元,还用于将在第n个进位模块对应的最高位的进位输出的计算中得到的进位参数,作为第n个进位模块的级间进位参数。
57.其中,进位参数是在每个比特位的进位输出的计算过程中得到中间量,进位参数与进位输出之间存在预设关系。每个比特位的进位输出可以基于该比特位的进位参数与该
比特位的进位传播信号进行运算得到,具体地,每个比特位的进位输出为该比特位的进位参数与该比特位的进位传播信号的逻辑与运算结果。例如,若第i个比特位的进位输出为ci,第i个比特位的进位传播信号为pi,第i个比特位的进位参数为cpi,则预设关系为:ci=pi·
cpi。
58.若第n-1个进位模块对应的多个比特位中的最高位为第(k-1)个比特位,则在第n-1个进位模块中的多个进位计算单元在计算第(k-1)个比特位的进位输出c
k-1
时得到进位参数cp
k-1
,作为第n-1个级间进位参数。若第n个进位模块的预处理单元输出结果中包括组内进位生成信号g
i:k
和组内进位生成信号p
i-1:k
,则第i个比特位的进位输出为ci=g
i:k
+p
i:k-1
·
cp
k-1
。此外,由于p
i:k-1
·
cp
k-1
=p
i:k
·
p
k-1
·
cp
k-1
,因此,ci=g
i:k
+p
i:k
·ck-1
也成立。
59.由于g
i:k
和p
i:k
可以通过预处理单元处理得到,因此,第n个进位模块中与第i个比特位对应的进位计算单元在得到第n-1个进位模块的级间进位参数c
k-1
时,可以通过简单的逻辑运算,得到第i个比特位的进位输出或进位参数。此外,由于第n个进位模块中的预处理单元可以对第n个进位模块对应的多个比特位进行预处理得到对应的多个组内进位生成信号和组内进位传播信号第n个进位模块中的多个进位计算单元可以,基于对应的组内进位生成信号和组内进位传播信号并行计算每个比特位的进位输出,由此提高进位计算的效率。
60.应理解,为了便于电路实现时的整体化布局,进位参数cp
k-1
和进位输出c
k-1
有时也被表示为和
61.本技术实施例中,由于第n个进位模块包含的预处理单元对对应的64比特的2组数据中的多个比特位进行预处理,第n进位模块包含的多个进位计算单元,用于根据预处理的结果和第n-1个进位模块的级间进位参数进行运算,生成第n个进位模块对应的每个比特位的进位输出和第n个进位模块的级间进位参数,这使得在获取到第n-1个进位模块输出的级间进位参数时,第n个进位模块中的每个进位计算单元即可以直接利用预处理结果和第n-1个进位模块输出的级间进位参数并行计算对应的每个比特位的进位输出,由此基本上实现了并行计算16位二进制数据中每个比特位的进位输出。
62.此外,如图8所示,基4 booth乘法器中多路进位保存加法器还包括求和模块,该求和模块与n个进位模块电连接,以用于在64比特的2组数据的符号位选通控制信号为有效位时,将64比特的2组数据进行处理,所述处理包括:将被乘数和乘数的所有部分积的最高比特位取反、对第一个部分积的最高比特位加1、以及在所有部分积的最高位前增加1个比特数,且所述比特数取值为1;以及用于根据处理后的所述64比特的2组数据中的每个比特位、以及对应的进位输出进行运算,得到对应的求和结果;其中,符号位选通控制信号用于表征部分积为被乘数乘以负数倍。
63.例如,对于第一加数a和第二加数b中的第i个比特位,可以根据以下求和公式,得到第i个比特位的求和结果。该公式为:
64.其中,c
i-1
为第一加数a和第二加数a中的第i-1个比特位的进位输出。
65.本实施例中,由于基本上并行计算16位二进制数据中每个比特位的进位输出,因此,可以基本上并行地计算16位二进制数据中每个比特位的求和结果,由此可以缩短整个
计算过程的时长,提高计算速度。
66.可选地,在本技术的一种实施例中,第n个进位模块对应的64比特的2组数据中的比特位的数量等于或大于第n-1个进位模块对应的64比特的2组数据中的比特位的数量。
67.由于第n个进位模块对应的每个比特位的进位输出的计算依赖于第n-1个进位模块的级间进位参数,因此,第n个进位模块中的每个进位计算单元的进位运算时间相对于第n-1个进位模块中的每个进位计算单元的进位运算时间具有一定的逻辑时延。通过使第n个进位模块对应的64比特的2组数据中的比特位的数量等于或大于第n-1个进位模块对应的64比特的2组数据中的比特位的数量,可以充分利用这一逻辑延时进行组内进位生成信号和组内进位传播信号的计算,避免第n个进位模块在计算时等待第n-1个进位模块的级间进位参数的情况出现,有利于进一步减小运算所耗费的时间。
68.可选地,在本技术的一种实施例中,n等于7,第1个进位模块对应64比特的2组数据的第0比特位至第3比特位,所述第2个进位模块对应64比特的2组数据的第4比特位至第7比特位,所述第3个进位模块对应64比特的2组数据的第8比特位至15比特位,所述第4个进位模块对应64比特的2组数据的第16比特位至31比特位,所述第5个进位模块对应64比特的2组数据的第32比特位至48比特位,所述第6个进位模块对应64比特的2组数据的第49比特位至58比特位,所述第7个进位模块对应64比特的2组数据的第50比特位至63比特位。由此,使得加法器的布局较为集中,面积较小,有利于整体结构化布局。
69.可以理解的是,当所述乘数和所述被乘数为16位二进制数时,所述带进位链的进位加法器包括:m个进位模块,每个进位模块对应所述32比特的2组数据的多个比特位,其中,第m个进位模块与第m-1个进位模块连接,以用于接收所述第m-1进位模块输出的级间进位参数,所述被乘数和所述乘数为16位二进制数,m为小于或者等于5的整数,m为大于1且小于或等于m的整数;每个进位模块包括预处理单元和多个进位计算单元,一个进位计算单元对应所述32比特的2组数据的一个比特位;其中,所述部分积用于表征乘数的第i+1个比特位、第i个比特位和第i-1个比特位与被乘数基于基4 booth乘法的乘积;i为大于或等于0且小于或等于15的整数。具体地,m等于5时,第1个进位模块对应32比特的2组数据的第0比特位至第3比特位,所述第2个进位模块对应32比特的2组数据的第4比特位至第7比特位,所述第3个进位模块对应32比特的2组数据的第8比特位至15比特位,所述第4个进位模块对应32比特的2组数据的第16比特位至23比特位,所述第5个进位模块对应32比特的2组数据的第24比特位至31比特位。
70.应当理解,在本实施例中,进位模块的数量n可以为2个、4个、或者更多个,并且每个进位模块对应的具体比特位可以根据需要进行设置,本实施例对此不做限定。
71.基于实施例一提供的基4 booth乘法器,进一步,本实施例提供了图8所示的基4 booth乘法器中多路进位保存加法器中的一个进位模块的结构示意图。应理解,该进位模块可以为实施例一中的n个进位模块中的任一进位模块,为了便于描述,下文中将该进位模块称为第n个进位模块。在本实施例中,第n个进位模块包含的预处理单元包括交替布置的至少一个第一预处理单元和至少一个第二预处理单元。
72.本实施例中,第一预处理单元用于对对应的64比特的2组数据中的第i个比特位和第i-1个比特位进行运算,生成第一预处理结果,第一预处理结果指示第i个比特位和第i-1个比特位的进位生成信号的逻辑或运算结果,i为奇数。
73.可选地,在本技术的一种具体的实现方式中,如图9所示,第一预处理单元包括:第一与门201、第二与门202和第一或非门203,第一与门201的第一输入端和第二输入端分别接收第i个比特位,第一与门201的输出端连接至第一或非门203的第一输入端;第二与门202的第一输入端和第二输入端分别接收第i-1个比特位,第二与门202的输出端连接至第一或非门203的第二输入端,第一或非门203的输出端输出第一预处理结果。例如,若第一加数为a,第二加数为b,则第一预处理结果为其中,gi和g
i-1
为第i个比特位的进位生成信号和第i-1个比特位的进位生成信号。
74.应理解,第一预处理单元也可以直接由与或非门这种结构实现,本实施例对此不做限定。
75.本实施例中,第二预处理单元用于对对应的64比特的2组数据中的第j个比特位和第j-1个比特位进行运算,生成第二预处理结果,第二预处理结果指示第j个比特位和第j-1个比特位的进位传播信号的逻辑与运算结果,j为偶数。
76.可选地,在本技术的一种具体的实现方式中,如图10所示,第二预处理单元包括:第一或门301、第二或门302和第一与非门303,第一或门301的第一输入端和第二输入端分别接收第j个比特位,第一或门301的输出端连接至第一与非门的第一输入端;第二或门302的第一输入端和第二输入端分别接收第j-1个比特位,第二或门302的输出端连接至第一与非门303的第二输入端,第一与非门303的输出端输出第二预处理结果。例如,若第一加数为a,第二加数为b,则第一预处理结果为其中,pj和p
j-1
为第j个比特位的进位传播信号和第j-1个比特位的进位传播信号。
77.应理解,第二预处理单元也可以直接由或与非门这种结构实现,本实施例对此不做限定。
78.相应地,第n个进位模块包含的多个进位计算单元,用于基于至少一个第一预处理结果和至少一个第二预处理结果以及第n-1个进位模块的级间进位参数得到对应的比特位的进位输出。
79.可选地,在本技术的一个实施例中,第n个进位模块包含的预处理单元还包括第三预处理单元和第四预处理单元,第三预处理单元分别对至少一个第一预处理单元输出的第一预处理结果和至少一个第二预处理单元输出的第二预处理结果中的相邻至少两个进行运算,以生成对应的第三预处理结果和第四预处理结果,第三预处理结果指示对应的相邻多个比特之间的进位参数,第四预处理结果指示对应的相邻多个比特的进位传播信号的逻辑与运算结果。第n个进位模块包含的多个进位计算单元,用于基于第三预处理结果和第四预处理结果以及第n-1个进位模块的级间进位参数得到对应的比特位的进位输出。
80.例如,第三预处理单元对第一预处理结果和以及第二预处理结果进行运算,生成指示第4个比特位至第7个比特位之间的进位参数第四预处理单元对基于第二预处理结果和第二预处理结果进行运算,生成指示第3个比特位至第6个比特位的进位生成信号的逻辑或运算结果,即一个组内进位传播信号(也即,pan_6_
3)。对应的进位计算单元可以基于第三预处理结果gon_7_4和第四预处理结果pan_6_3,结合第n-1个进位模块的级间进位参数得到第7个比特位的进位输出。
81.可选地,在本技术的一种实施例中,第n个进位模块包含的多个进位计算单元包括与第i个比特位对应的第一进位计算单元,第一进位计算单元包括第三或门、第三与门和第二或非门;
82.第三或门的第一输入端连接至对应的第二预处理单元的输出端,第三或门的第二输入端连接至第n-1个进位模块输出的级间进位参数,第三或门的输出端连接至第三与门的第一输入端,第三与门的第二输入端连接至对应的第一预处理单元的输出端,第三与门的输出端输出第i个比特的进位参数;
83.第三与门的输出端连接至第二或非门的第一输入端,第二或非门的第二输入端接收第i个比特位的进位传播信号,第二或非门的输出端连接至求和模块,以向求和模块输出第i个比特位的进位输出。
84.可选地,在本技术的一种实施例中,多个进位计算单元还包括第j个比特位对应的第二进位计算单元,第二进位计算单元包括第四或门和第二与非门。
85.第四或门的第一输入端连接至对应的第二预处理单元的输出端,第四或门的第二输入端连接至第n-1个进位模块输出的级间进位参数或第j-1个比特位的进位参数,第四或门的输出端连接至第二与非门的第一输入端,第二与非门的第二输入端接收第j个比特位对应的进位生成信号,第二与非门的输出端连接至求和模块,以向求和模块输出第j个比特位的进位输出。
86.本实施例中,由于每个进位模块中的第一预处理单元、第二预处理单元、第三预处理单元和第四预处理单元对每个进位模块对应的64比特的2组数据中的多个比特位进行预处理,每个进位模块包含的多个进位计算单元,这使得每个进位模块在获取到前一进位模块输出的级间进位参数时,每个进位模块中的多个进位计算单元即可以直接利用预处理结果和前一进位模块输出的级间进位参数并行计算对应的每个比特位的进位输出,由此基本上实现了并行计算16位二进制数据中每个比特位的进位输出。
87.如图11所示,第1个进位模块对应64比特的2组数据的第0比特位至第3比特位,所述第2个进位模块对应64比特的2组数据的第4比特位至第7比特位,所述第3个进位模块对应64比特的2组数据的第8比特位至15比特位,所述第4个进位模块对应64比特的2组数据的第16比特位至23比特位,所述第5个进位模块对应64比特的2组数据的第24比特位至31比特位。
88.此外,通过有规律地布置第一预处理单元、第二预处理单元、第三预处理单元、第四预处理单元、第一进位计算单元和第二进位计算单元,可以在提高基4 booth乘法器的计算速度的同时,减少基4 booth乘法器的占用面积,并且使得布线较为集中,有利于整体结构化布局。
89.需要指出的是,图11仅是用于说明本实施实施例提供的基4 booth乘法器中多路进位保存加法器的进位链的一种具体示例,根据实际需要,进位模块的数量可以为2个、4个、或者更多个,并且每个进位模块对应的具体比特位可以根据需要进行设置,本实施例对此不做限定。
90.实施例三
91.基于上述实施例提供的基4 booth乘法器,本技术实施例提供一种基4 booth乘法器的实现方法。图12为本技术实施例提供的一种基4 booth乘法器的实现方法的流程图。如图12所示,该基4 booth乘法器的实现方法包括:
92.s1201、根据乘数各比特位上的取值,输出用于表征部分积置零的置零选通控制信号、用于表征部分积为被乘数乘以正1的正1倍选通控制信号、用于表征部分积为被乘数乘以负1的负1倍选通控制信号、用于表征部分积为被乘数乘以正2的正2倍选通控制信号、用于表征部分积为被乘数乘以负2的负2倍选通控制信号以及用于表征部分积为被乘数乘以负数倍的符号位选通控制信号中的任一种;
93.s1202、在接收表征部分积置零的置零选通控制信号,输出用于使部分积为零的第一选择结果;在接收表征部分积为被乘数乘以正1的正1倍选通控制信号,输出用于使部分积为被乘数乘自身的第二选择结果;在接收表征部分积为被乘数乘以负1的负1倍选通控制信号,输出用于使部分积为被乘数乘-1的第三选择结果;在接收表征部分积为被乘数乘以正2的正2倍选通控制信号,输出用于使部分积为被乘数乘2的第四选择结果;在接收表征部分积为被乘数乘以负2的负2倍选通控制信号,输出用于使部分积为被乘数乘-2的第五选择结果;
94.s1203、确定n/2组带有基4 booth乘法进位权重的n比特的部分积在第0个比特位至第(2n-1)个比特位上对应的比特位,并对第0个比特位至第(2n-1)个比特位上的部分积分别进行压缩,输出2n比特的2组数据;
95.s1204、带进位链的进位加法器,用于将所述2n比特的2组数据进行相加求和。
96.本技术实施例提供的基4 booth乘法器的实现方法,用于实现前述装置实施例中的基4 booth乘法器,并具有相应的装置实施例的有益效果,此处不再赘述。
97.实施例四
98.本技术实施例提供了一种运算电路,该运算电路包括根据前述实施例一和二中任一项提供的基4 booth乘法器。其原理与效果类似,此处不再赘述。
99.实施例五
100.本技术实施例提供了一种芯片,该芯片包括根据前述实施例四提供的运算电路。其原理与效果类似,此处不再赘述。
101.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
102.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1