计算机系统设计 - 乘法器与除法器 🔗
结构 🔗
- 被乘数寄存器
Multiplicand
- 8位,具有左移操作shift_left
- 乘数寄存器
Multiplier
- 4位,具有右移操作shift_right
,最低位接到控制器multiplier_lowbit
- 8位加法器
8-bit Adder
,具有使能端add_en
- 乘积寄存器
Product
- 8位,具有写使能端product_write
- 控制电路,输入
multiplier_lowbit
,输出shift_left
,shift_right
,add_en
,product_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轮循环,若不是则进入下一轮循环