以3*7为例,首先写出乘数和被乘数的二进制表达式,分别为0011,0111;
其中,3是被乘数,7是乘数,将乘数的补码形式表示出来,为:1001
booth乘法器步骤:
1、初始化p空间,其位数为2*n+1,n为乘数及被乘数的位数,本例中n为4,所以有
p=0000 0000 0
2、将被乘数写入p[4:1],即
p=0000 0011 0
3、判断p[1:0],如下:
p[1:0]的值 |
操作 |
00 |
无操作,右移一位 |
01 |
p[8:5]加乘数,右移一位 |
11 |
无操作,右移一位 |
10 |
p[8:5]减乘数,右移一位 |
对于本例,过程如下:
p[1:0]的值 |
操作 |
10 |
p[8:5]减乘数,右移一位-->p=1100 1001 1 |
11 |
无操作,右移一位 -->p=1110 0100 1 |
01 |
p[8:5]加乘数,右移一位-->p=0010 1010 0 |
00 |
无操作,右移一位 -->p=0001 0101 0 |
操作完成后,p[8:1]即为运算结果,即0001 0101(21)