目录
文介绍了基4 Booth乘法器,并且设计了具有基本功能的Booth乘法器,其中在文末留下了几个有待优化的问题,本文将优化“生成部分和”与“符号位扩展”两部分,参考:https://zhuanlan.zhihu.com/p/143802580
本文原理部分意译自《Sign Extension in Booth Multipliers》,需要说明的是其中的表述存在多处歧义,且Booth编码表负数认定有误,请注意鉴别,其中位宽的问题更值得注意。对于有符号数乘法,其实在用如下符号位扩展时无需自动扩展部分和的符号位,这在参考的文档中是致命的误导,但好在可以通过图片获得该符号位扩展算法的启发。
先给出符号位扩展算法如下(算法有效,已验证):
(1)将每个部分和的最高比特位取反;
(2)对第一个部分和的最高比特位加“1”;
(3)在所有部分和的最高位前增加1比特数“1”。
依据以上3条规则,我总结为“取反”,“加一”,“再加一”。
以4*4有符号乘法器为例,A=4‘b1111=-1,B=4‘b0100=4,P=A*B=-4,如下图为使用符号位扩展技巧前后的阵列式:

上图中(1),仅仅将每一部分的符号位进行扩展,之后按列相加;而在(2)中使用符号位扩展技巧,将不必对每一个部分和进行符号