计算机组成原理--真正的减法器

  在上一篇博文(计算机组成原理--加法器的变异-CSDN博客)中,做而论道按照计算机专业教材的说法,用【加法器+异或门】设计出了 “计算机专业的减法器”。即将一路信号取反加一,再相加,就实现了减法运算。

  其实,计算机专业所介绍的这种 “减法器”,就是糊弄人的。

  作为一个减法器,不仅有两个数据(A、B)的输入端,还应该有一个 “低位送来借位” 的输入端;相减之后,再有一个正确输出 “借位” 的输出端。(参考加法器的输入、输出端,就知道减法器的需要了。 )

  但是,用 “加法器+异或门” 改造出来的可控减法器,就没有 “低位来的借位” 的输入端了,而且输出的 “借位”,也是错误的。

  其实,实现一个真正的减法器,并不是很难的事。只是在计算机刚刚诞生的时代,一个加法器,就占了 XXX 平米,耗电 YYY 瓦特,故障率,也很高的。如果再弄一个同等规模的减法器,这就勉为其难了。

  随着电子技术的发展,运算器+控制器,都可以集成在一个芯片上了! 此时的运算器,就不仅仅是加法器了,而是算术逻辑单元(ALU)了。 做减法,就可以直接进行,并不需要用补码转来转去的了。


  要说减法器,还得从全减器说起。全减器是实现一位数相减的逻辑器件。用 N 个全减器级联,就可成为 N 位减法器了。

  全减器,与全加器的引脚是雷同的。
   有三个输入端:A、B、Ci;
   有两个输出端:Co、S。
  全减器的功能是:CoS = A-B-Ci。

  上面写的 Ci、Co,就是输入输出的借位; S 是差。(在这里,就是为了省事,直接借用了加法器所用的代号,没有特意改成减法的符号。)

  把三个一位二进制数,按照 A-B-Ci 进行相减,其两位结果是 CoS。它们的值列表如下:
   0-0-0 = 0 0
   0-0-1 = 1 1  (即-1)
   0-1-0 = 1 1  (即-1)
   0-1-1 = 1 0  (即-2)
   1-0-0 = 0 1
   1-0-1 = 0 0
   1-1-0 = 0 0
   1-1-1 = 1 1  (即-1)

  把这些,写入真值表,然后,就可以列出逻辑表达式了。可见下图:

  由真值表可以看出:S(差),与加法器中的 S 相同,所以,S 仍然是三个变量的异或。

  还可以看出,Co(借位)与 “三人表决” 中的 F,是雷同的,只是变量 A 取了反而已。

  按照这两个逻辑表达式,就可以设计出全减器的逻辑电路图,如下所示。

  这个电路,是做而论道优化过的,只需两种集成电路芯片(与非门和异或门),没有用到或门,就可实现全减器的全部功能。这个电路,做而论道曾经用硬件做过实验,没有任何纰漏。

  图中所示的数值是:0-1-0 = 11 (即负一)。有兴趣的网友可以试试看,在右上角的拨动开关输入不同的数值,同时观察两个 LED 的显示,即可证明本电路,就是一个全减器。


  全减器,只是一个 1 位的减法器。

  把 N 个全减器级联起来,就可以构成 N 位的减法器。下图就是一个两位的减法电路图。

  按照这个电路图,仅需三块集成电路芯片(两片 74LS00、一片 74LS86),就可以实现两位二进制数的减法功能。这个电路,做而论道也是用真正的硬件,验证过的,没毛病。

  图中的 C1,就是第一位数相减产生的借位。它并不输出,而是向左送到第二位去了,这种连接方式,就叫做 “级联”。减法电路所需的数据,是由右上角的拨动开关输入的,相减后,由下面的三个 LED 进行显示输出。

  图示的输入输出数据是:10-10-1 = 11 (即负一)。

  本电路,是真正的减法电路,并非是计算机专业所推崇的残疾电路。按照本电路图,你还可以继续进行级联,即可构成多位的减法电路。采用级联方式构成的电路,是比较简单的。但是,它需要一位一位的计算,位数越多,计算的速度就越慢。提高运算速度的改进方法,也和加法器雷同,这里就先不说了。


  经过上述说明,可知,用极为常见的集成电路芯片就可以组建一个多位的减法电路。如果由集成电路厂家生产专用的集成芯片,更是轻而易举的事情。事实上,早已经有这种芯片在市场上出现了。

  既然减法器是这么容易做的,那就不要再说 “计算机只有加法器” 了。也不要听信计算机专业教材中喋喋不休的介绍 “补码的运算” 了。

  事实上,在最基本的 80x86 CPU 中,其运算部分已经不仅仅是加法器了,而是功能更多的 ALU。 ALU 已经具有二进制数相减的功能,从 CPU 的指令系统中具有减法运算指令,你就可以得到确定。

--本文完--

  

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值