D触发器的进化之路

[说明]:本文转自知乎 三郎 (致敬作者)
原链接:https://zhuanlan.zhihu.com/p/37137899

数字逻辑里,最美妙的设计就是触发器!

那就让我们开始旅程吧!

首先,放张图镇一下,hahaha
吾非吾 吾亦是吾

从非门讲起

从非门讲起
请盯着这个非门电路图看30秒,你会想到什么:

吾非吾

对,就是自相矛盾,逻辑错误,那最后到低是输出真呢还是假呢,答案是:不真不假。

也就是输出的电平不断地01010101交替变化,输出震荡波形。

那我们有没有办法,让这个系统稳定住呢???

稳定记忆

接着看这张图
稳定记忆

我们把两个非门串在一起,是不是就能够稳定了,逻辑自洽啦,既可以存储状态0也可以存储状态1。

吾亦是吾

结论:两个非门反馈串联,产生记忆。

遗憾的地方:我们没有办法改变这个系统的记忆,因为没有控制接口。

控制记忆状态

于是有了这张图
控制记忆状态1
用与非门替代上图的非门,这样就可以给系统添加两个控制端。

如果我把下面的与非门翻转180度,会变成下面的图:

哈哈哈哈,有没有一种似曾相识的感觉。没错,这就是RS触发器呀!
控制记忆状态2
还记不记得RS触发器的四种状态

  • 输入全为1就是保持,也就退化为两个非门反馈串联。
  • 其中一个为0,就会控制记忆和输出
  • 两个全为0,就会非法态。
  • 备注:当然也可以用或非门玩,于是就产生了两种RS触发器呀。
    (注:这个如何分析出来的参见基础组合逻辑电路之RS触发器

Bug:

    1. 能够控制记忆,但是有非法态。
  • 2.整个系统不受控,一直都在工作。

自控给我自由

自控给我自由
在输入端添加了两个或门,这样的话,中间这个输入引脚为1的话,那就自动屏蔽外部输入,也就是老子不想干活了。只有中间这个引脚为0的时候,才工作。

我们这样的设计,解决了上面的第二个bug,但是依然存在非法态,那我们怎么干掉呢?

化繁为简

化繁为简1
既然中间引脚解决了保持记忆的问题,那我们最后只要保证输入的两个引脚不同,就可以避免全0的情况,加个非门不就完事了。两个输入,永远都不会同时为0.

仔细看一下,这是不是电平型D触发器。
化繁为简2

电平型D触发已经可以保存数据,修改数据,但是存在bug,就是使能的时候,一旦输入数据发生干扰变化,输出也会受干扰。

那有没有可能,我们精确控制数据只在某一时刻改变,其他时候都是可靠地保持数据。

继续串联,终极触发器

继续串联,终极触发器

将两个D触发器串联,其中使能端CP用非门保证互斥,

于是第一个传输数据的时候,第二个D触发器保持

第二个传输数据的时候,第一个触发器保持。

最后的结果就是,只在边沿触发的那一刻传输数据!

于是边沿性D触发器诞生了。

我们可以在某一时刻同步触发所有读写动作,然后其他时候数据一致可靠保存记忆。

鸣谢

本文作者:知乎 三郎
原链接:https://zhuanlan.zhihu.com/p/37137899
评价:文章化繁为简,逐层剖析,令人记忆深刻