前不久,ITT技术学院邀请我去做演讲,我打算趁此机会让学生们真正“动手”体验——看一看、摸一摸继电器和真空管这些器件。 我的办公室里现在就有几个继电器(哪个工程师没有呢?),但这些小小的继电器有点儿太摩登了,例如是装在透明的塑料包装里,我担心不能完全像我想的那样展示给学生,传达我的想法。
为此我专门去了一家商店,这家店常有一些让我爱不释手的“老古董”。我问他们有没有一些老式的继电器,别说还真有,当他们拿出来下面这个可爱的小东西时,我一点儿也不惊讶。
它有一个线圈缠绕在一个软铁芯上,可以使用两个触点“ C1”和“ C2”通电(我一回到办公室,我的好友伊万立刻就将这个小可爱装到了他的电源上。我们发现它的开关电压约为4V,仅消耗20mA电流。因此,我们猜测它实际上是为5V操作而设计的。它还有一个轭铁,为磁通量提供低磁阻路径。
然后是衔铁,围绕轭铁的左侧转动。在没有电压施加到线圈上时,弹簧拉动衔铁,使其紧靠触点“ A”。这意味着无论施加到“输入”触点“ A”的电压值如何,都会通过衔铁传导至“输出”触点 “Y”。
线圈通电后将吸住图像上方的衔铁末端,把它向右拉。由于衔铁绕着轭铁转动,使图像下方的衔铁末端向左移动,从而脱离触点“ A”并压到触点“ B”上。现在无论“输入”触点“ B”上的电压值如何,都会通过衔铁传导到“输出”触点“Y”。
令人称奇的是,图中的Mock继电器是简单(功能)与复杂(实现)的完美结合。我们来看如何快速轻松地调节继电器,例如触点的位置和弹簧的张力。
根据接线方式,它可以充当一个简单的隔离缓冲器:如果线圈未通电,则输出“Y”=0V(逻辑0),如果线圈通电了,则输出“Y” =5V(逻辑1);也可以充当反相器:如果线圈未通电,则输出“Y”=5V(逻辑1),如果线圈通电了,则输出“Y”=0V(逻辑0)。 由此,我们可以构建AND、OR、NAND和NOR门;或XOR和NXOR门; 或寄存器等。
哦,当然,你很了解我……现在我梦想着可以得到数千个这样的小可爱,用它们来做一些有趣的东西,例如简单的4位处理器,不过这件事我们留待以后再说。
现在还是回到只使用上图所示的这类继电器来实现逻辑门和寄存器的问题。如果你从来没用过继电器,我敢打赌,你下意识地就会想到使用继电器跟使用晶体管开关的情况差不多,但这通常并不是那么简单。很快你就会发现,用继电器来构建逻辑函数是简单性和复杂性的奇怪又奇妙的结合。我们得跳出思维定势。
好了,我就不在这里喋喋不休痛苦地解释了,我们来做点儿有意思的事儿。首先,你能不能给出一个电路符号和真值表来清楚、简洁地表示该继电器的操作? 能否为每个缓冲器画一个电路图,然后画出这三个缓冲器串联的电路图?接下来,能否为每个反相器画一个电路图,然后画出这三个反相器串联的电路图?
为2输入AND、NAND、OR和NOR门画一个电路图如何:(a)隔离,(b)驱动一个缓冲器门,以及(c)驱动一个反相器门?
暂时先到这里吧。如果你接受这个挑战,我们再继续考虑如何着手实现寄存器和存储器。
看美国工程师网友如何应对挑战:
@ betajet
可以通过2:1总线开关(例如Fairchild NC7SB3257)得到继电器的功能。像上述继电器一样,在公共端子Y与NC(常闭)/NO(常开)端子A和B之间会产生双向流动。
我还记得上高中时玩继电器箱的事。噪音很多,乐趣也很多。在我学习VLSI设计时,又看了继电器逻辑,因为传输晶体管可以做很多事,例如用任意数量的DPDT(双刀双掷)开关而不是很多TTL门来控制一个灯。Claude Shannon 1937年完成的硕士论文《继电器和开关电路的符号分析》中就包含继电器逻辑背后的理论。
仅使用两个Mock继电器就可以得到非常好的XOR。首先是梯形图:
如果A&!B或!A&B,就会导通。接下来,考虑到继电器可通过NO和NC连接往任一方向导通,我们将一组单刀双掷触点用于A和!A(将COM连接到左侧端子),将另一组单刀双掷触点用于B和!B(将COM连接到右侧的继电器线圈)。 然后,只需将两个继电器的NO/NC触点相互连线,就可以交换常开/常闭线来得到XNOR。这样可以得到奇校验或偶校验功能,具体取决于怎么连接。
这跟从两个位置控制电灯所使用的开关方式相同。若是想从两个以上的位置进行控制,就需要DPDT开关作为中间开关,这需要成对的Mock继电器。
@ rjs20
串联触点实现AND函数。
并联触点实现OR函数。
继电器通电时,它们会闭合常开触点(并断开常闭触点)。
@ Weatherbee
好吧,你对NC7SB3257的观察很仔细,但不完全正确。实际上,继电器的描述是这样的:如果线圈在逻辑电压下工作,则它相当于2:1多路复用器(就像你提到的)加上2:1多路复用器控制引脚前面的XOR门。 这是因为继电器线圈对极性不敏感,因此只要每条腿的输入相反,磁场就会将Y触点从A移到B。因此,使用一个继电器就可以实现XOR门。
C1=输入1,C2=输入2,Y=输出,A=GND,B=+5V。
这表明使用一个继电器甚至可以得到不止一个XOR,因为此时A和B是静态连接的。
与非三态门逻辑相比(假设所有触点始终必须具有有效的逻辑电平),
继电器接头C1、C2、A和B是输入,而Y是输出。因此,可以实现很多4输入、1输出函数。如果允许A、B和Y无源,那么还可以另外得到一些2输出函数。
下面的C代码可以快速为Mock继电器产生真值表:
真值表如下:
(原文刊登于ASPENCORE旗下EETimes网站,参考链接:The Magic of Mock Relays,由Jenny Liao编译。)