计算机系统设计 - 乘法器与除法器

· 618字 · 2分钟

计算机系统设计 - 乘法器与除法器 🔗

结构 🔗

  • 被乘数寄存器 Multiplicand - 8位,具有左移操作 shift_left
  • 乘数寄存器 Multiplier - 4位,具有右移操作 shift_right ,最低位接到控制器 multiplier_lowbit
  • 8位加法器 8-bit Adder,具有使能端 add_en
  • 乘积寄存器 Product - 8位,具有写使能端 product_write
  • 控制电路,输入 multiplier_lowbit,输出 shift_leftshift_rightadd_enproduct_write

初始化 🔗

  • 将被乘数置于被乘数寄存器的低4位

  • 将乘数置于乘数寄存器中

  • 将乘积寄存器置0

第一步 🔗

(1)检查乘数寄存器最低位 multiplier_lowbit 是否为1

(1a)若 multiplier_lowbit 为1,将乘数寄存器中的内容与乘积寄存器中的内容相加,结果写入乘积寄存器:add_en=1 product_write=1

第二步 🔗

(2)对被乘数寄存器左移,对乘数寄存器右移 shift_left=1 shift_right=1

第三步 🔗

(3)判断是否已经是第四个循环,若不是,则进入下一个循环

结构 🔗

余数寄存器 Remainder - 8位

除数寄存器 Divisor - 8位

商寄存器 Quotient - 4位

8位运算器 ALU

控制电路

初始化 🔗

a - 将8位被除数放入余数寄存器

b - 将4位除数放入除数寄存器的高4位

c - 将4位商寄存器置0

第一步 🔗

执行减法运算:余数寄存器 - 除数寄存器,结果保存到余数寄存器中

第二步 🔗

检查余数寄存器

(2a)若值大于或等于0,将商寄存器左移1位,将新的最右位设为1

(2b)若值小于0,则需要回退第一步的操作,执行加法运算:余数寄存器 + 除数寄存器,结果保存到余数寄存器;然后商寄存器左移1位,将新的最右位设为0

第三步 🔗

将除数寄存器右移1位

第四步 🔗

检查是否是第4+1轮循环,若不是则进入下一轮循环