欢迎光临
我们一直在努力

16位乘法器第一篇---二进制数的表示,基2、基4BOOTH编码

16位乘法器计算过程:

如上图所示普通的16位乘法器过程,每一个圆点代表1个1位的0或者1。如果直接计算,最多的部分和有16个之多,同时考虑到进位等,面积和时序都是无法接受的。所以考虑减少部分和的数量。从二进制数的表示到BOOTH编码,解决了这个难题。

1、二进制数的统一表示

有符号二进制数B可以用下图表示:

当B为正数或者0时,最高位为0,可以表示为:

当B为负数时,最高位为1,可以表示为:

由于负数是由补码构成,一个数据的补码当做无符号数X,加上这个数的绝对值Y是等于2的n次方。所以上述公式成立。去掉绝对值号后,B可以表示为:

综合B为正数和负数的情况,B可以表示为:

2、基2BOOTH编码

二进制数都可以表示成下图:

将B展开得到下图:

将A与B相乘,则:

由上式可见,每个系数都是一个二进制数减去另一个二进制数。所以系数就只能是1、0、-1,所以只需要将A进行左移或者右移然后再相加就可以了。

但是基2BOOTH编码需要相加的部分和还是太多,引出了基4BOOTH编码。

3、基4BOOTH编码

由于任何一个二进制数都可以表示成

由于基2BOOTTH编码部分积的数量还是没有减少,为了将部分积的数量减半,采用基4BOOTH编码,具体如下:

从0开始、2、4、6、8递增,隔一个数合成一个部分积。对于16位数乘法来说,是

组7:(B₁₅, B₁₄, B₁₃)

组6:(B₁₃, B₁₂, B₁₁)

组5:(B₁₁, B₁₀, B₉)

组4:(B₉, B₈, B₇)

组3:(B₇, B₆, B₅)

组2:(B₅, B₄, B₃)

组1:(B₃, B₂, B₁)

组0:(B₁, B₀, B₋₁)

核心变换原则是,收尾的两个数据不做变换,中间的数据隔一个做一次变换。

这些系数的值就只能出现下面几种情况:

相比于基2 Booth编码,基4 Booth编码将使得乘法累积的部分和数减少一半,其基系数只涉及到移位和补码计算。

关注同名公众号,学生需求->16位乘法器合集。观看完整文档和代码。

赞(0)
未经允许不得转载:171主机测评 » 16位乘法器第一篇---二进制数的表示,基2、基4BOOTH编码
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址