如图所示,以实现两个4bit的二进制数相乘为例。
需要4个硬件部件(图中已编号):
①:一个8位寄存器,用来保存被乘数(根据机算乘法,每与乘数的一位相乘,就要向前移动一位,所以4位数相乘,要给8位来供被乘数移动);
附加功能:左移,即每与乘数的一位相乘,就向前移动一位供下一轮与乘数的下一位相乘,这一部操作是为了使被乘数能与中间结果正确 。
②:同样的一个8位寄存器,用来保存乘积(中间结果+最终结果,最后一次运算时产生最终结果);
③:一个8位加法运算器,供每一次将中间结果与本次运算结果相加;
④:一个4位寄存器,用来保存乘数。
附加功能:右移,最低位与控制逻辑相连。每与被乘数相乘一次,就向后移动一位供下一轮与乘数的下一位相乘。
⑤:一个控制逻辑部件,用来指挥每个部件的运行。
附加功能:
- 控制被乘数寄存器的左移
- 控制乘数寄存器的右移
- 判断是否进行下一轮计算(当前乘积寄存器中的结果是否为最终结果)
基本运算步骤:
接下来进行一次简单的二进制乘法运算:1000 x 1001
①.判断乘数最低位是否为1,是,进入③;
②.将被乘数左移1位;
③.乘数与被乘数在加法器中相加;
④.加法器结果再与乘积寄存器相加;
⑤.判断是否为第4次循环,是,直接输出结果;否,乘数寄存器右移1位,接着重复步骤①-⑤。
那么第四轮运算结束之后,乘数寄存器4位数全部置0,被乘数被移动到被乘数寄存器的高4位,乘积寄存器此时保存的是最终结果(如图6)。