首页 > 代码库 > 触发器
触发器
触发器
1981年,埃克尔斯和乔丹发明了一种具有记忆功能的电路。这个电路的核心是两个电子三极管,之所以让人觉的新奇,是因为它能记住你刚才对它做了什么手脚。不过这东西很有意思,但在当时却没有什么用处。直到有过了很长时间之后,因为要制造电子计算机,工程师们才又发现了它。
两个或非门首位相连形成两个反馈
把上面的电路接上开关和灯泡,如下:
验证或非门反馈功能的完整电路
分析上面电路闭合R就等于R=1,于是不管Q以前是亮还是灭,它现在一定不会发光,即Q=0;
因为有反馈存在,Q=0紧接着被送到下面。同时,因为S也为0,所以经或门和非门后,灯泡Q‘因为被通上了电而发光,也就是说Q’=1;然后Q‘=1又被反馈到上面。但是,因为R已经给或门提供了“1”,所以Q的状态不会受到影响,整个电路就因此出于稳定状态不在改变。这个电路能保存最开始那个开关的开关状态,换句话说最开始那一下子是最重要的。
上面的电路称为触发器。触发器符号如下图:
R-S触发器符号
这是最早的也是最基本一种触发器,我们一般称它为R-S触发器。触发器有两个截然相反的输出,不过多数情况下我们只需要一个输出就已经足够。因此,一直以来就把Q作为触发器的输出。
在触发器正常工作前提下。Q的输出和S的输入总是一致的,S=0则Q=0;S=1则Q=1。这意味着可以通过设置S的值,使得Q的输出和S保持一致,这就是S的由来(在英语里,S是单词“Set"的第一个字母,这个单词的意思是"设置")。不管Q以前是什么,比如Q=0,我们可以通过让S=1来使Q变成1。但是当R=1的话,Q又变回0,这等于将Q打回原形,这称为"复位",R就是这么来的(R取自英语单词”Reset“的第一个字母)。
用触发器保存一比特
使用非门使R与S总是相反,解决用触发器保存1比特的问题
为了验证它是否能保存"0"或者一个"1",设计如下电路:
使用触发器保存比特"0"的过程
如图所示,S=0,R=1,触发器动作Q=0,灯泡不亮。表明目前触发器中保存的是"0"。用手摁一下开关,电路被接通,相当于输入为"1",这个时候,S=1,R=0,触发器保存这个比特,于是灯泡亮了。当我们撤手,你会发现一旦按键开关弹开,灯泡马上就不亮了。这个电路并不能保存"1"。分析原因,当开关弹开,相当于输入的比特是"0",于是触发器又把这个"0"保存起来,灯泡自然就不亮了。
改装电路,在输入端增加两个与门,两个与门都用控制端CP控制。如下图:
经过改进的触发器,增加了一个控制端
上面电路当CP=0,就是不想保存数据,这时,因为与门的关系,不管D上是什么,S和R都为0,所以触发器保持原有的内容不变,当控制端为0时,触发器不接收D端的比特,也就是说,CP=0是希望触发器不被外面的数据干扰,继续保持原先保存的哪个比特。
分析上面电路,如果D=0,而且CP=1,则S=0而R=1,于是"0"就会被保存到了触发器里(Q=0)。
如果D=1,而且CP=1,那么S=1而R=0,于是"1"就被保存到触发器里(Q=1)。
不管是“0”、“1”,当它成功地进入触发器之后,CP=0,于是S和R都会一直为0,触发器将一直维持刚才保存的比特不变。触发器将一直维持刚才保存的比特不变。这种触发器称为D触发器,如图
由上图可知,在CP=1期间,只要D端的比特改变了,触发器就会随时触发。所以一定要把想保存的比特放到D端,等CP从0变为1时摁住输入D端比特,等待CP从1变为0之后才松手。为了解决上面问题,我们设计一种上升沿触发器。如图:
上升沿触发器的原理
这个大触发器实际上由两个小的D触发器首位相连而成,前一个触发器的输出是后一个触发器的输入。
乒乓触发器/反复触发器
反复按动开关,灯泡就会在明灭之间交替变化
本文出自 “德泽无忧” 博客,请务必保留此出处http://dezewuyou.blog.51cto.com/2628602/1903468
触发器