关于加法器相关的实现看这篇文章:关于ALU中加法器最高位的溢出检测(进位输入与进位输出的异或)
减法器的实现是在加法器的基础上完成的,
对于运算 A-B 需要的输入有:
A、B、减法控制信号
这样就可以将减法拆解成 A 与 -B的加法
那么控制信号的主要作用就是完成对于 B到-B的转换电路切换。
其设计图如下所示:
上面在加法器的基础上,添加了图中标注的 1-4;
- 用来控制多路选择器(2)的控制信号,如果是加法则由B不经过(3)向下传递,否则经过(3)传递
- 多路选择器,用来配合控制信号(1)完成对于加减法电路的切换
- 非门,对B的输入所有位取反
- C0是最低为的进位输入,若是减法运算则该位为1,对应+1操作。
注:对于补码来说,正数B对应的相反数 -B,只需要对B整体取反+1
其原理为:B + ~B = -1(0111 + 1000 = 1111),1111是十进制的-1
-B = ~B + 1;