使用累加器建造加法器和计数器
累加器是一个非常有用的装置。它可以存储插入到其中的任何内容的总和。建造累加器要先从上升边缘检测器开始:
上升边缘检测器是一种装置,当输入端从关闭到开启时输出信号。你也可以通过倒置逻辑灯来创建一个下降边缘检测器,它只在输入端从打开到关闭时输出脉冲。如果你将一系列的下降边缘检测器并排放置并从右向左连接,你将得到一个累加器:
当线路被触发时,累加器存储的值以相应位的2的幂值增加。只需将最右边的电线连接到触发器上,就可以将累加器用作计数器。您还可以同时触发多条线路,以使累加器可以增加任意值。注意,如果累加器内的值超过11111111(最大值),则会发生溢出,导致其发生重置。
通过倒置所有的逻辑灯(从而将它们转换为上升边缘检测器),您可以反转累加器,从而使插入到其中的数据被减去。
叠加单一的组件以建造更复杂的装置
在这之前,我们知道了如何建造各种可以在1bit(八个数位)的数位上运行的装置,从D触发器到移位器再到累加器。现在是时候将它们放在一起来建造更完善的装置了。
这可以通过将装置堆建在一个类似架子的结构中,以一种非常紧凑的组件组装方式来完成。
例如,这里有一个D触发器阵列和一个累加器连接在一起:
上面一行是D触发器阵列,下面一行是累加器,摆放的石砖只是为了帮助连接电路。
请注意,看我是如何使用单线传输特定bit的所有信号的。 我本可以用单独一种颜色的电线来做D触发器,而对累加器中的每一位使用另一种颜色的电线连接,但是将同一根电线连接到每一个与一个bit相连接的装置上要容易得多,也更有整齐性。
更换电线颜色也很重要,就像我对蓝线和绿线所做的那样,因为这样可以让两个bit相互连接而不产生干扰。
最后,注意一下如何使用单独的一组红线连接累加器中的D触发器。如果我没有这样做,那么来自D触发器的信号将激活累加器中的下降边缘(沿)触发器。
无论如何,这只是一个如何组合设备的基本例子。在构建更大的设备堆栈时,请记住我提到的规则(每比特一根垂直线、交替的电线颜色和单独的触发器线),因为我将在后面的教程中展示的大多数设备都将使用这些规则。
使用比较器比较数值
比较器是将两个数值作为输入,并确定它们是相等的还是一个值大于另一个值的装置(比较大小)。
要建造一个二进制数值的比较器,需要考虑关于二进制数的两个很明显但是重要的事实: 1大于0;1在较高的地方(即左边)的数值大于1在较低的地方。
知道这些之后, 您可以比较两个二进制数字,方法是从左到右扫描它们,并找到第一个出现在同一位置的两个位不匹配的情况。
例如,00110110大于00110010。
如果您查看每个数字中最左边的位,然后一次向右移动一位,直到找到不匹配的位为止,你就会知道,结果是1的位,就必须是更大的数字。
如果,在比较数字时,没有匹配过一对不同的位,那么你就知道这两个数字是相等的。
下面是使用故障灯门实现此过程的方法:
这个比较器包含一个单比特比较(一行) ,它会触发三个输出端中的一个,从上到下的输出端的情况分别是蓝色=绿色、蓝色>绿色和蓝色<绿色。
如果是单独比较一个位,你可以看到蓝线和绿线的位都连接到顶端的一对故障灯门。如果位不同,这对门将向红线发送信号,如果它们相同则向黄线发送信号,从而继续下一位的比较。
如果位不同,则红线触发一对仅由绿线控制的故障灯门。 如果绿线连接的位关闭,则“蓝色>绿色”的输出端将被触发,因为蓝线连接的位必须打开。 但是,如果绿线连接的位打开,则触发“蓝色<绿色”的输出端。