402 - 乘法器的硬件实现

402 - 乘法器的硬件实现_第1张图片
图1

如图所示,以实现两个4bit的二进制数相乘为例。

需要4个硬件部件(图中已编号):

①:一个8位寄存器,用来保存被乘数(根据机算乘法,每与乘数的一位相乘,就要向前移动一位,所以4位数相乘,要给8位来供被乘数移动);

附加功能:左移,即每与乘数的一位相乘,就向前移动一位供下一轮与乘数的下一位相乘,这一部操作是为了使被乘数能与中间结果正确 。

②:同样的一个8位寄存器,用来保存乘积(中间结果+最终结果,最后一次运算时产生最终结果);

③:一个8位加法运算器,供每一次将中间结果与本次运算结果相加;

④:一个4位寄存器,用来保存乘数。

附加功能:右移,最低位与控制逻辑相连。每与被乘数相乘一次,就向后移动一位供下一轮与乘数的下一位相乘。

⑤:一个控制逻辑部件,用来指挥每个部件的运行。

附加功能:

  • 控制被乘数寄存器的左移
  • 控制乘数寄存器的右移
  • 判断是否进行下一轮计算(当前乘积寄存器中的结果是否为最终结果)

基本运算步骤:

402 - 乘法器的硬件实现_第2张图片
图2

接下来进行一次简单的二进制乘法运算:1000 x 1001

402 - 乘法器的硬件实现_第3张图片
图3

①.判断乘数最低位是否为1,是,进入③;
②.将被乘数左移1位;
③.乘数与被乘数在加法器中相加;
④.加法器结果再与乘积寄存器相加;
⑤.判断是否为第4次循环,是,直接输出结果;否,乘数寄存器右移1位,接着重复步骤①-⑤。

402 - 乘法器的硬件实现_第4张图片
图4 - 步骤②,第一轮过后,被乘数左移(注意看乘积寄存器的值,此时控制逻辑判断为非第四轮相乘,接着进行第二轮)
402 - 乘法器的硬件实现_第5张图片
图5 - 步骤⑤,第一轮过后,乘数右移,此后第二、三、四轮重复之前操作

那么第四轮运算结束之后,乘数寄存器4位数全部置0,被乘数被移动到被乘数寄存器的高4位,乘积寄存器此时保存的是最终结果(如图6)。

402 - 乘法器的硬件实现_第6张图片
图6

你可能感兴趣的:(402 - 乘法器的硬件实现)