如何用继电器构建计算机的CPU

电子说

1.3w人已加入

描述

这个迷你系列文章描述了如何用继电器构建计算机的 CPU(中央处理单元)。

英语中的“Y”听起来像西班牙语(我的母语)中的“guay”,一个口语表达或俚语,意思是“酷”。从双关语开始似乎是个好主意,但事实是我确实相信 Y 开关真的很酷。

虽然这个术语不是很常用(如果以前用过的话),但我认为它对这个开关的工作方式非常具有描述性或说明性。图 1 显示了 Y 开关的示意图。它由一个可控开关组成,该开关可以改变其位置并将一个端子连接到其他两个端子之一。

cpu

图 1. Y 开关示意图(来源:Javier Piay)

这种变化可能是由于各种性质的动作或刺激引起的:手动、机械、电气、电子等。在没有这种刺激的情况下,开关保持在其静止/断电位置,连接所谓的公共端子(COM)到所谓的常闭端子(NC)。如果施加刺激,开关将切换到其激活/通电位置,将 COM 端子连接到所谓的常开端子 (NO)。

Y 开关也称为3 路开关或转换开关,但是——正如 EEWeb 精通技术的成员已经知道的那样——这种类型的开关通常被称为单刀双掷 (SPDT) 开关(另见“开关反弹和去抖动(第 1 部分):开关类型”)。

图 2 显示了 Y 开关的不同实现方式。从左到右,所示设备由手动、机械、电气和电子方式控制或操作。不言而喻,有类似的设备可以实现其他类型的开关,例如单刀单掷 (SPST)、双刀单掷 (DPST)、双刀双掷 (DPDT) 等。

cpu

图 2. 从左到右,Y 型开关用于手动、机械、电动和电子操作。(来源:哈维尔皮耶)

任何电动开关通常称为继电器(图 2 中右起第二列)。与其他形式的开关一样,机电继电器有多种类型,包括 SPST、SPDT、DPST、DPDT 等。

图 3 显示了 Y 或 SPDT 继电器的示意图。使开关的 COM 端子在 NC 和 NO 端子之间翻转的电刺激(输入信号)连接到标记为 S(意为“选择”)的第四个端子。

cpu

图 3. SPDT 继电器原理图(来源:Javier Piay)

SPDT 继电器是我们将在继电器计算设计和仿真项目中使用的主要组件(如果不是唯一的话)。至于实施/构建阶段,我目前更倾向于使用该设备的电子版本(图 2 右侧的第一列),原因有很多,例如其紧凑的尺寸(每个 IC 三个或四个开关) 、非常低的价格(每个开关 3 美分)、快速原型制作(与面包板兼容)、非常广泛的数字和模拟信号电平,并且易于耦合到其他电子设备(如果需要)。

在 SPDT 继电器(或电子开关)中可用的四个端子/引脚中,只有 S 始终充当输入。在某些使用场景中,COM 端子充当输入,在这种情况下,NC 和 NO 端子都充当输出。在其他使用场景中,NC 和 NO 端子充当输入,在这种情况下,COM 端子充当输出。与任何开关一样,一旦继电器成为更大电路的一部分,就会自动采用这些配置。

图 4 说明了上述配置。出于演示目的,左侧 SPDT 继电器的 COM 端子配置为输出。在这种情况下,NC 和 NO 端子都可以携带逻辑 0(深绿色)或逻辑 1(浅绿色)值,继电器在这些端子之间进行选择并将所选信号传递到 COM 输出。由于该继电器显示为未激活或断电 (S = 0),因此 COM 输出反映了 NC 输入上的逻辑 0 值。

cpu

图 4. SPDT 继电器允许的输入/输出 (I/O) 配置。(来源:哈维尔皮耶)

相比之下,右侧 SPDT 继电器的 COM 端子配置为输入。由于此继电器显示为激活或通电 (S = 1),NO 输出反映 COM 输入上的逻辑 1 值;同时,NC 输出处于高阻抗 (Z) 状态,这意味着其他继电器可以安全地将逻辑 0 或 1 值驱动到连接到此端子的信号(即导线)上。

在基于继电器的二进制或数字计算中,大多数继电器(如果不是全部)在计算模块/系统内执行逻辑功能并实现逻辑门,这与执行电源和负载切换的独立继电器的通用应用形成对比.

SPDT 继电器如此酷的原因在于它本身就是一个通用逻辑门。即可以用来实现任意的二输入逻辑功能。只需意识到图 4 左侧的 SPDT 继电器充当多路复用器 (MUX) 即可轻松证明这一点,众所周知,该组件是通用逻辑门。

MUX: 如果 S 等于 0,则将 COM 设置为 NC,否则将 COM 设置为 NO。

相比之下,图 4 右侧的 SPDT 继电器充当解复用器 (DEMUX)。

DEMUX:如果 S 等于 0,则将 NC 设置为 COM,否则将 NO 设置为 COM。

图 5 显示了如何使用 SPDT 继电器实现任何原始逻辑门以及全加器。

cpu

图 5. SPDT 继电器作为通用逻辑门实现任何原始逻辑门和全加器。(来源:哈维尔皮耶)

NOT:如果 A 等于 0,则将输出设置为 1,否则将输出设置为 0。

AND: 如果 A 等于 0,则将输出设置为 A (0),否则将输出设置为 B。

或:如果 A 等于 0,则将输出设置为 B,否则将输出设置为 A (1)。

XOR:如果 A 等于 0,则将输出设置为 B,否则将输出设置为 NOT B。

NAND: 如果 A 等于 0,则将输出设置为 NOT A (1),否则将输出设置为 NOT B。

NOR:如果 A 等于 0,则将输出设置为 NOT B,否则将输出设置为 NOT A (0)。

XNOR: 如果 A 等于 0,则将输出设置为 NOT B,否则将输出设置为 B。

全加器(S = A + B + Cin):S = A XOR B XOR Cin。如果 A XOR B 等于 0,则将 Cout 设置为 A,否则将 Cout 设置为 Cin。

作为“构建继电器计算机”迷你系列第 1 部分的最后一个示例,图 6 显示了使用 SPDT 继电器实现 4:16 解码器。

cpu

图 6. 使用 SPDT 继电器的 4:16 解码器实现。(来源:哈维尔皮耶)

我希望你觉得这篇文章足够有趣,可以继续阅读这个迷你系列的未来专栏,我们将在其中讨论如何构建基于继电器的寄存器、计数器、算术逻辑单元 (ALU) 和其他最终将允许我们构建了一台中继计算机,所有这些都基于不起眼的“Y”开关的概念。

一如既往,我欢迎您提出意见、问题和建议。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分