说明:本文转自知乎 三郎 (致敬作者)
原链接:https://zhuanlan.zhihu.com/p/37137899
数字逻辑里,最美妙的设计就是触发器!
那就让我们开始旅程吧!
首先,放张图镇一下,hahaha
从非门讲起
请盯着这个非门电路图看30秒,你会想到什么:
吾非吾
对,就是自相矛盾,逻辑错误,那最后到低是输出真呢还是假呢,**答案是:**不真不假。
也就是输出的电平不断地01010101交替变化,输出震荡波形。
那我们有没有办法,让这个系统稳定住呢???
稳定记忆
接着看这张图
我们把两个非门串在一起,是不是就能够稳定了,逻辑自洽啦,既可以存储状态0也可以存储状态1。
吾亦是吾
**结论:**两个非门反馈串联,产生记忆。
遗憾的地方:我们没有办法改变这个系统的记忆,因为没有控制接口。
控制记忆状态
于是有了这张图
用与非门替代上图的非门,这样就可以给系统添加两个控制端。
如果我把下面的与非门翻转180度,会变成下面的图:
哈哈哈哈,有没有一种似曾相识的感觉。没错,这就是RS触发器呀!
还记不记得RS触发器的四种状态
- 输入全为1就是保持,也就退化为两个非门反馈串联。
- 其中一个为0,就会控制记忆和输出
- 两个全为0,就会非法态。
- 备注:当然也可以用或非门玩,于是就产生了两种RS触发器呀。
(注:这个如何分析出来的参见基础组合逻辑电路之RS触发器)
Bug:
-
- 能够控制记忆,但是有非法态。
-
2.整个系统不受控,一直都在工作。
自控给我自由
在输入端添加了两个或门,这样的话,中间这个输入引脚为1的话,那就自动屏蔽外部输入,也就是老子不想干活了。只有中间这个引脚为0的时候,才工作。
我们这样的设计,解决了上面的第二个bug,但是依然存在非法态,那我们怎么干掉呢?
化繁为简
既然中间引脚解决了保持记忆的问题,那我们最后只要保证输入的两个引脚不同,就可以避免全0的情况,加个非门不就完事了。两个输入,永远都不会同时为0.
仔细看一下,这是不是电平型D触发器。
电平型D触发已经可以保存数据,修改数据,但是存在bug,就是使能的时候,一旦输入数据发生干扰变化,输出也会受干扰。
那有没有可能,我们精确控制数据只在某一时刻改变,其他时候都是可靠地保持数据。
继续串联,终极触发器
将两个D触发器串联,其中使能端CP用非门保证互斥,
于是第一个传输数据的时候,第二个D触发器保持
第二个传输数据的时候,第一个触发器保持。
最后的结果就是,只在边沿触发的那一刻传输数据!
于是边沿性D触发器诞生了。
我们可以在某一时刻同步触发所有读写动作,然后其他时候数据一致可靠保存记忆。
鸣谢
本文作者: 知乎 三郎
原链接: https://zhuanlan.zhihu.com/p/37137899
评价: 文章化繁为简,逐层剖析,令人记忆深刻