5位无符号阵列乘法器设计_【HDL系列】乘法器(6)——Radix-4 Booth乘法器

v2-7908f0a633339cfa19e181b7266b0ba1_1440w.jpg?source=172ae18b

一、Radix-4 Booth乘法器原理

上文中介绍了基2 Booth乘法器,本文继续介绍基4 Booth乘法器。

对于N比特数B来说:

v2-1dfc6aee72f2e37530cbcb316d9b3dec_b.jpg

N比特数B,将其展开,其中B-1=0:

v2-bc4103aa7ec4d330af7fe7c02e08428f_b.jpg

基2 Booth表示为:

v2-54571867e6ea3461c7b97a4c0c7ded05_b.jpg

其基系数为:

v2-e6a4ba0843b6c5aae3d639b853742f58_b.png

基4 Booth乘法器的基系数为:

v2-d28222644219645530702f1eceb1329c_b.png

所以,上式B可以重写为如下式(位宽为偶数):

v2-2e6b99605bea7e2a458922cd6b83afe1_b.jpg

将A与B相乘,则:

v2-bf43b299f67909469615850d35d7b8ff_b.png

以下是基4 Booth编码表,其中A为被乘数,B为乘数。

v2-2842d635ec6d5cb2c5b181bd32fce767_b.jpg

以下为6比特数9的Radix-2 Booth和Radix-4 Booth编码例子:

v2-78f41515f9c96e8b61214f91553e7175_b.jpg

从基2看9:

9 = 0*2^4 + 1*2^4 + (-1)*2^3 + 0*2^2 + 1*2^1 + (-1)*2^0

从基4看9:

9 = 1*4^2 + (-2)*4^1 + 1*4^0

其阵列表示如下:

v2-d14c3a83e4ce43be50f0c079f6853a55_b.jpg

可以看出,6比特乘数的基2 Booth算法部分累积和个数为6,而基4的部分累积和数为3。

相比于基2 Booth编码,基4 Booth编码将使得乘法累积的部分和数减少一半,其基系数只涉及到移位和补码计算。对于二进制码为1010…1010的乘数(1与0交替),如果采用基2 Booth编码,则部分和累积的输入有几乎一半为被乘数的补码,所以,相比于普通的阵列乘法器,基2 Booth编码的乘法器性能不升反降,基4 Booth编码可以避免以上问题。

二、Verilog设计

声明:没有PPA驱动的功能性Verilog设计,仅供娱乐

本文中将基于Radix-4 Booth编码、Wallace树、CSA以及行波进位加法器设计一个16比特位宽的有符号数并行阵列乘法器,仅供参考。

几个如下要点:

(1)Wallace树,请参考往期文章《图解Wallace树》;

(2)CSA,请参考往期文章《进位保存加法器原理与设计》;

(3)行波进位加法器,请参考往期文章《半加器、全加器和行波进位加法器原理与设计》;

(4)Radix-4 Booth编码器;

(5)部分和生成。

前3点在往期的文章中已有介绍并设计,所以我们看第(4)点,即一个基4 Booth编码器,根据输入3比特生成0,+1,+2,-2,-1等系数。

v2-c75c3aa64b82ff4e7a1bbbc4076b5f06_b.jpg

根据以上Booth编码表可以将系数生成归纳如下:

假设输入码字为B[2:0]

1.B[2]决定了输出系数的符号位,定义为neg;

2.当输入码字为011和100时,输出绝对值为2,定义为two;

3.当输入码字为000和111时,输出绝对值为0,定义为zero;

4.除了以上码字,输出绝对值为1,定义为one。

v2-0deae1c66bfc7e5864fc1cab5a89eb66_b.jpg
基4 Booth编码器

第(5)点生成部分和,根据编码器输出,与被乘数相乘,生成部分和:、

1.如果编码器zero为1,则输出部分和为0;

2.如果编码器one为1,则输出部分和为被乘数;

3.如果编码器two为1,则输出部分和为被乘数左移1位;

4.如果是负数,则生成补码输出。

v2-d2594a7844fcfaa02cc0a69d4815dd39_b.jpg
生成部分和

16比特乘法器,需要8个Booth编码器Booth Enc和8个生成部分和Gen Prod模块。根据Wallace树结构、CSA和行波进位加法器RCA,设计框图如下:

v2-cf581eff1a7ed61bca969572d1c7e9a3_b.jpg
Booth并行乘法器设计框图

v2-72de4ab38f96fd1d2442800eefe0a13e_b.jpg
Booth乘法器顶层

在追求面积、功耗和速度的要求下,该设计有以下几个优化空间:

(1)部分和生成

在部分和负数生成中,对于像 “-1*A”和“-2*A”等,进行了取反加一,增大的关键路径延时,且耗费了8个16比特加法器,后期会有改进。

(2)符号位扩展

在部分和计算中具有大量的符号位扩展,且在求和过程中翻转频繁,故而极大耗费面积和功耗,后期文章会提到;

(3)Wallace树结构

在Wallace树种求解sum和carry时,简单地进行移位使得3:2 CSA中全加器的位宽为32位,徒增面积和功耗;另外在结构上,因为CSA层次有4级,大概率效率不高,通常还会结合4:2 CSA,后期会提到;

(4)最后一级加法器

最后一级32比特加法器负责进位链传播,此处是速度最慢的行波进位加法器,可以根据需求进行替换。

(5)流水线技术

使用流水线技术提升乘法器的性能,

根据以上要点设计的基4 Booth乘法器,源码参考公众号回复“011”。

谢谢您的阅读!

原创不易,如果对您有帮助,记得点赞关注哦。欢迎批评指正,谢谢鼓励!

一起“纸上谈芯”,共同学习:

http://weixin.qq.com/r/5Uhza1zEFAFrrRgI9x33 (二维码自动识别)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值