📜  符号幅度表示中的乘法算法

📅  最后修改于: 2021-06-28 15:05:22             🧑  作者: Mango

两个定点二进制数在有符号幅值表示中的相乘是通过连续移位加法运算的过程完成的。

在乘法过程中,我们正在考虑乘法器的连续位,最低有效位在前。
如果乘数位为1,则将被乘数向下复制,否则将向下复制0。

在连续的行中向下复制的数字从上一个数字向左移动一个位置。
最后,将数字相加,然后将其总和形成乘积。

根据乘数和乘数的符号确定乘积的符号。如果它们相同,则乘积的符号为正,否则为负。

硬件实现:
乘法算法的硬件实现需要以下组件:

  1. 寄存器:
    两个寄存器B和Q分别用于存储被乘数和乘数。
    寄存器A用于在乘法过程中存储部分乘积。
    序列计数器寄存器(SC)用于存储乘法器中的位数。
  2. 拖鞋:
    为了存储寄存器的符号位,我们需要三个触发器(A符号,B符号和Q符号)。
    触发器E用于存储在部分乘积相加过程中产生的进位位。
  3. 补码和并行加法器:
    该硬件单元用于计算部分乘积,即执行所需的加法运算。

乘法流程图:

  1. 最初,被乘数存储在B寄存器中,而乘数存储在Q寄存器中。
  2. 使用XOR功能比较寄存器B(Bs)和Q(Qs)的符号(即,如果两个符号相同,则XOR运算的输出为0除非为1),然后将输出存储在As中(A寄存器的符号)。

    注意:最初将0分配给寄存器A和E触发器。序列计数器使用值n初始化,n是乘法器中的位数。

  3. 现在检查乘数的最低有效位。如果为1,则将寄存器A的内容与被乘数(寄存器B)相加,并将结果分配到触发器E中带有进位的寄存器A中。EAQ的内容向右移一位,即E的内容移至A的最高有效位(MSB)和A的最低有效位移至Q的最高有效位。
  4. 如果Qn = 0,则仅以类似方式对EAQ的内容执行右移操作。
  5. 序列计数器的内容减1。
  6. 检查序列计数器(SC)的内容,如果为0,则结束过程,最终产品存在于寄存器A和Q中,否则重复该过程。

例子:

Multiplicand = 10111
Multiplier = 10011