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

这个迷你系列文章描述了如何用继电器构建计算机的 cpu(中央处理单元)。
英语中的“y”听起来像西班牙语(我的母语)中的“guay”,一个口语表达或俚语,意思是“酷”。从双关语开始似乎是个好主意,但事实是我确实相信 y 开关真的很酷。
虽然这个术语不是很常用(如果以前用过的话),但我认为它对这个开关的工作方式非常具有描述性或说明性。图 1 显示了 y 开关的示意图。它由一个可控开关组成,该开关可以改变其位置并将一个端子连接到其他两个端子之一。
图 1. y 开关示意图(来源:javier piay)
这种变化可能是由于各种性质的动作或刺激引起的:手动、机械、电气、电子等。在没有这种刺激的情况下,开关保持在其静止/断电位置,连接所谓的公共端子(com)到所谓的常闭端子(nc)。如果施加刺激,开关将切换到其激活/通电位置,将 com 端子连接到所谓的常开端子 (no)。
y 开关也称为3 路开关或转换开关,但是——正如 eeweb 精通技术的成员已经知道的那样——这种类型的开关通常被称为单刀双掷 (spdt) 开关(另见“开关反弹和去抖动(第 1 部分):开关类型”)。
图 2 显示了 y 开关的不同实现方式。从左到右,所示设备由手动、机械、电气和电子方式控制或操作。不言而喻,有类似的设备可以实现其他类型的开关,例如单刀单掷 (spst)、双刀单掷 (dpst)、双刀双掷 (dpdt) 等。
图 2. 从左到右,y 型开关用于手动、机械、电动和电子操作。(来源:哈维尔皮耶)
任何电动开关通常称为继电器(图 2 中右起第二列)。与其他形式的开关一样,机电继电器有多种类型,包括 spst、spdt、dpst、dpdt 等。
图 3 显示了 y 或 spdt 继电器的示意图。使开关的 com 端子在 nc 和 no 端子之间翻转的电刺激(输入信号)连接到标记为 s(意为“选择”)的第四个端子。
图 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 值。
图 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 继电器实现任何原始逻辑门以及全加器。
图 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 解码器。
图 6. 使用 spdt 继电器的 4:16 解码器实现。(来源:哈维尔皮耶)
我希望你觉得这篇文章足够有趣,可以继续阅读这个迷你系列的未来专栏,我们将在其中讨论如何构建基于继电器的寄存器、计数器、算术逻辑单元 (alu) 和其他最终将允许我们构建了一台中继计算机,所有这些都基于不起眼的“y”开关的概念。
一如既往,我欢迎您提出意见、问题和建议。


蓝牙艾灸宝承传统养生精髓,启现代艾灸新时代
指纹锁活体识别定义及优势特点
两种方法给你的硬盘“扩容”
TTP117-AD8专业台灯触摸IC,欢迎来电咨询
紫光展锐掌门人曾学忠联合多家股东成立了新公司
如何用继电器构建计算机的CPU
乐视演义进入下半场 贾跃亭能否有转机?
一些也许你不知道的TINA-TI 资源!(IV)
电源的整流滤波原理图详解(五种滤波整流电路)
SAMP流程生成准确的跟踪掩膜的技术解析
如何利用Bolt IoT实现自动灯光监控系统的设计
高铁的电从哪里来?高铁上停电该怎么办?
易华录打造普陀数绘治理体系
日本Seven Dreamers公司开发一种名为Laundroid的洗衣折叠机器人
5G+教育大势所趋,运营商赋能智慧校园建设
诚迈科技应邀参加鸿蒙生态千帆启航仪式
一种可以通过内窥镜插入病人胃中的蛇形机器人原型
【服务器数据恢复】断电导致raid故障的数据恢复案例
研华扩建欧洲总部 加速成为在地全方位物联网公司
土壤盐分速测仪的应用、性能及参数