两个定点二进制数的乘法符号幅度表示完成的过程连续转移和添加操作.
在乘法过程中, 我们正在考虑乘法器的连续位, 最低有效位在前。
如果乘数位为1, 则被乘数将被向下复制, 否则将被复制为0。
在连续的行中向下复制的数字从上一个数字向左移动一个位置。
最后, 将数字相加, 然后将其总和形成乘积。
根据乘数和乘数的符号确定乘积的符号。如果它们相似, 则乘积的符号为正, 否则为负。
硬件实现:
乘法算法的硬件实现需要以下组件:
寄存器:
两个寄存器B和Q分别用于存储被乘数和乘数。
寄存器A用于在乘法过程中存储部分乘积。
序列计数器寄存器(SC)用于存储乘法器中的位数。
触发器:
为了存储寄存器的符号位, 我们需要三个触发器(A符号, B符号和Q符号)。
触发器E用于存储在部分乘积累加过程中产生的进位位。
补码和并行加法器:
该硬件单元用于计算部分乘积, 即执行所需的加法运算。
乘法流程图:
- 最初, 被乘数存储在B寄存器中, 而乘数存储在Q寄存器中。
- 寄存器B(Bs)和Q(Qs)的符号使用异或功能(即, 如果两个符号都相同, 则XOR操作的输出为0除非为1), 然后将输出存储在As中(A寄存器的符号)。
注意:最初, 将0分配给寄存器A和E触发器。序列计数器使用值n初始化, n是乘法器中的位数。
- 现在检查乘数的最低有效位。如果为1, 则将寄存器A的内容与被乘数(寄存器B)相加, 并将结果分配到触发器E中带有进位的寄存器A中。EAQ的内容向右移一位, 即E的内容移至A的最高有效位(MSB)和A的最低有效位移至Q的最高有效位。
- 如果Qn = 0, 则仅以类似方式对E A Q的内容执行右移操作。
- 序列计数器的内容减1。
- 检查序列计数器(SC)的内容, 如果为0, 则结束过程, 最终产品存在于寄存器A和Q中, 否则重复该过程。
例子:
Multiplicand = 10111
Multiplier = 10011