存储初步
在前一篇章中, 留下了一个问题, 如何让电路记住它的状态?
从与门说起
从一个很简单的 与门 说起, 两个输入中, 令下面一个始终为高电平, 那么输出的结果就由上面一个输入决定:
- 当这个输入是高电平时, 输出也是高电平;
- 当它是低电平时, 输出也是低电平.
输出总是跟随输入去变化.
现在, 提出一个问题, 输出能否脱离输入的变化从而保持不变呢? 更具体一点的说, 比如, 当输入是高电平时, 输出也是高电平; 而当输入变回低电平时, 输出还能否保持高电平呢?
如果输出还能保持高电平, 那么至少可以说, 输出此时能够 记住 这个高电平的状态. 可是如何才能达到这样的效果呢?
一个小故事
在回答这个问题前, 先讲一个小故事:
话说有一个人去庙里拜观音菩萨, 求她在某件事情上保佑自己, 然后他发现旁边也有一个人在那里跪拜, 可他再仔细一看那个人时, 却不禁大吃一惊, 那个跪拜的人居然就是观音菩萨她自己!
于是他很不解的问她: "观音姐姐, 你怎么拜起自己来了呢?" 旁边跪拜的观音姐姐对他微微一笑: "因为我知道: 求人不如求己."
那么说这个故事想说明什么呢? 其实所谓输入决定输出, 换种说法也即是输出是依赖于输入的, 或者说有求于输入的. 就以上述的与门为例, 当输入不再是高电平时, 输出也就无法维持在高电平.
输出想维持高电平, 就必须从自己身上去想办法!
晶体管电路的自我维持
让我们回忆一下先前说到的那个晶体管的工作原理图:
在这里, 集电极流向发射极的纵向大电流是由基极的横向小电流去控制的, 一旦基极没有了电流, 那个小阀门关闭, 连带着大阀门也关闭, 集电极的电流也就停止了. 假如说, 如果想让集电极电流摆脱对基极电流的依赖, 那么可以怎么去做呢?
一个很简单的方式就是从集电极电流的下游, 也即是发射极处开一条回路回到基极:
如此一来, 哪怕后面基地电流停掉了, 从集电极过来的这个 回流 电流依然可以推动那个小阀门, 从而保持住大阀门不会被关闭.
这同样是一个典型的 求人不如求己.
与门的反馈回路
那么回到前述 与门 的例子, 道理是一样的, 只要从输出拉一条线再回到输入处:
一开始, 输入处是低电平, 输出也因此是低电平, 从输出回来至输入的回路也同样是低电平, 这是一个稳定状态.
现在, 假如输入处置入一个高电平, 那么输出变成高电平, 从输出回来至输入的回路也同样变成了高电平:
注: 这里因为模拟器的缺陷, 直连输入输出时, 如果处在高电平, 会出现所谓的 Singular matrix! 异常, 导致模拟器停止运行.
为解决此问题, 引入一个二极管阻止输入到输出处的 倒流.
另: 真实世界实验时不需要作此处理, 此处仅为规避模拟器实现上的缺陷.
关于 circuitjs 异常及其处理, 参考 模拟器异常处理
现在, 假设输入处撤掉高电平, 也即是断开开关后, 情况就有所不同了:
与门反馈, 输入撤销的情况 在线可互动操作示例
因为输出到输入的这个反馈回路的存在, 输入处还是维持在高电平, 而这个输入的高电平又因此维持住了输出的高电平, 于是, 输出处就 记住 了这个高电平!
也即是, 一旦通过输入把输出处点亮, 输出就一直点亮了, 哪怕输入后面撤掉也是如此!
而这其实就达成了先前的目的, 按一下开关, 然后松手, 开关回弹, 但输出却能保持它的状态, 电路具有了记忆力.
有句话叫 曲线救国, 而这里则是 回路救己. 一个从输出到输入的 反馈(feedback) 回路的存在, 使得输出可以摆脱对输入的依赖, 电路也因此能够维持一个状态.
当然了, 目前的电路依然是一个非常简陋的原型, 也存在一些缺陷, 比如进入高电平状态后就无法回到低电平了. 不过它已经足以揭示电路存储状态的一个最基本原理, 也即是依靠 反馈. 至于目前电路存在的一些缺陷, 将在后续继续改进及完善.