触发器、锁存器、边沿触发器——最容易理解的方式

前言:

如果计算机要计算1+2+3,必须得先计算1+2,然后再把1+2得结果存起来,在去计算3+3.

那么如何保存这个临时数据呢?

 

1.触发器

触发器(Flip Flop)是一种可以存储电路状态的电子元件。最简单的是由两个或非门,两个输入端和两个输出端组成的RS触发器。

触发器的电路图由逻辑门组合而成,其结构均由R-S锁存器派生而来(广义的触发器包括锁存器)。触发器可以处理输入、输出信号和时钟频率之间的相互影响。

 

我们得设计一个电路来让计算机保存这些临时数据:

如下图,有两个或非门,或非门就是或门再取反,既只要输入端有1,结果就为0。输入全为0,输出才为1.

观察该电路,红线表示输出为1。其实这个电路红线部分可以是0,也可以是1
如果是1,那么灯泡灭,如果是0,则灯泡亮的。这里刚好用灯泡灭来做演示,也可以按着红线输出为0来推演,那么灯泡是亮的。
当两个输入端V都为0时,先看右边的或非门,上面输入为1,下面为0,那么根据或非门,输出为0,灯泡灭,同时输出传递到左边的或非门,左边的或非门两个输入都为0,输出为1

 

这种两个门的输出都作为另一个门的输入的连接方式称之为反馈。

 

现在闭合上面的开关:

或非门的特点,输入有1时,输出为0,那么左边的或非门输出为0,右边的或非门两个输入都是0,则输出为1,灯泡亮。同时将输出带到左边的或非门的输入中

然后将上面的开关再打开:

因为上面的输入为1,所以导致灯泡还是亮。这个图和第一个图是一样的,但是灯泡却不一样。

这就是反馈和或非门结合的结果,此时不管再怎么操作上面的开关,灯泡永远都是亮的,因为或非门的特点:左边的或非门输入有1,则输出为0

这个状态时,下面的开关不动,不管你如何操作上面的开关,输出永远是不变的

 

 

假如此时闭合下面的开关:

输入有1,输出既为0,灯泡灭,然后左边的两个输入为0,输出是1,使得右边的上面的输入变为1,灯泡依旧灭

 

然后在打开下面的开关:

由于上面的输入为1,所以灯泡还是灭的

此时,不管你如何操作下面的开关,灯泡都是灭的,因为或非门的特点,输入有1,则输出为0。

而这个状态就是第一幅图的状态。

这个状态时,上面的开关不动,不管你如何操作下面的开关,输出永远是不变的。

 

总结下这个电路:
接通上面的开关,灯泡亮,断开此开关,灯泡依然亮着
接通下面的开关,灯泡灭,断开此快开,灯泡依然灭着

尽管看起来这个电路很神奇,但是很难总结出什么有用的信息,我们只须要记住,这种连接形式,能让电路记住某些信息

 

接下来我们把这个电路绘制方式稍微改变一下,其实还是刚刚的电路,只不过把左边或非门的输出也画了出来,用_Q代表下面那个符号(因为那个符号打不出来) 

这个电路和上面的电路一样,被称为R-S触发器(Reset-Set)

根据或非门的特点,当R=1时,Q为0;当S为1时,_Q为0。这个很容易推断出来

当R=1时,Q为0,同时,S的上输入也为0,若S为1,那么不用看了,_Q必定为0,所以看S=0时,两个输入都为0,_Q为1

既                   R=1,S=0; Q=0,_Q=1
反之也一样     R=0,S=1; Q=1,_Q=0

把4种可能的结果变成表格,就变成了R-S功能表:如下图:

这里的禁止只是因为本身设定了Q和_Q是相反的,但是若R,S都等于1的话,则Q和_Q都为0,那就违背了设定,所以R-S触发器要避免两个输入都为1。

其中最关键的是R=0,S=0时,Q=Q,_Q=_Q,这个意思是输出保持上一次的结果,既不变。

这个结论其实我们已经在最上面的5副图中论证过了

不管是从S=1,R=0变成0 0 还是S=0,R=1变成0 0 ,都改变不了输出,因为输出中已经有了一个1,然后这个1会被作为输入,输入到另外一个,会导致另外一个输出还是0(因为有1则0) .既若Q=1,则_Q=0; 若_Q为1,则Q为0.

若从S=1,R=0 变成 S=0,R=0;本来对应的结果是_Q0,Q1, S对应的是_Q,而R则是Q,关键在于_Q0是因为输入端有两个1,既S为1,Q也是输入为1,那么此时S变成0,Q依然是1,然后Q的1作为_Q的输入,所以保证了_Q还是0,所以结果依然是_Q0,Q1

因此,00的情况代表记录了上一次的状态。既在00时,若Q=1,_Q=0,那么根据图表,说明上次是S=1,R=0;反过来则说明上次是S=0,R=1。

R-S触发器能记住哪个输入端为1,但是看起来还是十分的不直观,很绕

 

2.锁存器

能不能有一种电路,有一个数据端,一个保持位

当保持位为1时,这种情况下数据端的输入就是输出,保持位不影响输出,当保持位为0时,此时电路的输出被记住,数据位的变化影响不了输出,简化如下:

这个电路和R-S触发器电路相比,应该多一个输入为保持位,如下图:

这个和上图相比,用两个与门作为输入端,与门的特点是,两个1,才输出1。那么保持位若为1时,则不影响电路的输出,结果和R-S的结果一致,当保持位为0时,则两个输入都变成0,就是R-S触发器功能表中的第三种情况,既不管R-S的输入是多少,都无法改变目前的输出结果。

保持位的加入,使得电路更好理解了,既保持位为1时,不影响输出,当保持位为0时,状态被记住,无法再更改

 

这个电路有三个输入,想办法精简成两个,回想下R-S的功能表,当R-S都为1是非法的,当R-S都为0时,则能记住上一次的信息,但是目前我们有了保持位,保持位已经帮我们更好的实现了该功能(也更容易理解)。所以R-S都为0对我们来说也没有意义了,所以我们只剩下R=0,S=1和R=1,S=0这两种情况,而这刚好可以用一个取反器来表示。

如下图:

数据端就是R-S,只是有两个分支,流向下面的为S,流向上面的为R,因为有取反器,所以R-S必定是不同的

很显然此时数据端的输入为0,保持位为0,对应的结果是Q为0,_Q为1.

此时把数据端设为1,但是由于保持位依然是0,而与门的特点,只要有0,输出就是0,所以数据端不管怎么变,都影响不了输出端。

当我们把保持位置为1时,那么输入端就能影响输出端了,输出端会跟着数据端的变化而变化

再把保持位置0,那就保存了刚刚保持位为1时,数据端的状态,既最后一次保持位为1时数据端的输入值。

 

这种电路被称为电平触发的D型触发器。D代表Data,既数据端,而电平触发就是指当保持位输入某一特定电平(本例为“1”)时,触发器才保存数据端的输入置。 与电平触发对应的,后面我们会讲到“边沿触发”

 

其实在实际应用中,输入端并不会被叫做保持位,而应该叫时钟Clock, 因为它会在0和1之间有规律的不断的变化。

 通常把数据端记为D,时钟简写为clk,则功能表如下:

这个电路也叫D型锁存器,他表示电路锁存住一位数据并保持它,以便将来用之。这个电路也可以被称为1位存储器。

 

似乎不太对啊, 这个电路除了保持位三个字改成了时钟,跟上面的电路一模一样,怎么一会是触发器,一会是锁存器?

其实触发器其结构均由R-S锁存器派生而来(广义的触发器包括锁存器),R-S锁存器就是上面说的那个:

 触发器更侧重于触发,既当时钟信号来了之后触发某种功能,触发器利用了锁存器的保存原理,但是加上了触发功能,可以控制保存的时间。

 

 

3.连续加法器:

有了锁存器,我们再来考虑下如何实现本文开头说的,如何保存1+2的结果

把锁存器简化一下,就是这样,我们忽略了_Q,那是因为_Q本身就是Q的取反,为了方便理解,所以可有可无。

如果有8个1位锁存器,把这8个放在一个盒子里,把它们的时钟端连在一起,那么就会变成这样:

这个锁存器就是8位锁存器,用D0-D7代表8个开关,开关输入8个0或1,时钟信号通常为0,为0时,输出不会改变,当时钟为1时,此时8个输入会被输出到Q0-Q7,然后当时钟为0时,Q0-Q7被保存。

再简化一下就变成这样:

就是8位输入,8位输出

 

下面时8位加法器:

CI代表进位输入(接地) ,上面两个8位输入A和B,然后把输出8位,和一个进位CO连接到灯泡上。

 

我们先不考虑减法器,把加法器的输出既连到灯泡,又连到锁存器的输入中,如下图:

这个图本质上就是一个加法器

先看最下方的加法器,加法器和我们之前说的一样,有输入A,B和CI,然后输出S到灯泡,还有进位C0,唯一不同的是,输出的8位S,也同时被输出到了最上方,8位锁存器的数据输入端中。

2-1选择器就理解成一个可以控制输出是A,还是B的选择器,若开关为0,则输出A,若为1则输出B

整个过程如下:

起始状态是锁存器的保存开关是1,既时钟为1。选择器的开关为0断开,既选择A端输入

1.最左边的开关输入8位(00000001=十进制1)到加法器的A端输入,中间的开关输入8位(00000010=十进制2)到选择器的A端输入,此时让选择器的开关断开为0,选择器输出的就是A端的输入,启动加法器,得到一个输出

2.加法器得到A,B输入后,计算结果得到S1(00000011=十进制3),灯泡显示计算结果,然后同时将S1带到锁存器的输入端

3.此时锁存器状态为时钟为1,既输出随输入S1改变,那么锁存器的输入S1就被带到了选择器的B端输入,此时断开锁存器的时钟,既时钟信号为0,不再接受数据。选择器的B端输入变成了S1后,此时选择器和锁存器共同保存了第一次计算结果(S1=3).

4.此时闭合选择器的开关,选择器的输出变成B端输入,既S1被输入到加法器的B端.

5.然后再改变最左边的开关输入8位(00000011=十进制3),再启动加法器,这时又得到了一个新结果S2(00000110, 3+3=6)

6.又把S2带到了锁存器的输入端,然后依次循环

 

这样就通过加法器和锁存器实现了一个能连续运算的加法器!

 

附上2-1选择器的实现电路:

有两个与门和一个或门和一个取反器组成,当选择端为0时,B端的与门输出就是0,A端的与门输出就是A,所以结果为A
同理,当选择器为1时,则B端输出为B,A端输出为0,那么结果为B

这只是一位选择器,既只能选择1位数据,而上面的连续加法器中,则是8个一位选择器器组成的,将8个选择端连在一起即可。

 

4.改良连续加法器:

上面的连续加法器可以处理连续加法,但是不能处理进位,因为仅仅是一个8位加法器,进位则被忽略了,我们可以将8位改成16位或者9位,总之比8位多,即可勉强的解决该问题(因为16位也会存在进位问题,不断连续的加法,最终结果会大于16位),这个问题我们之后再讨论

 

还可以同过加入清零信号来该改良加法器:

可以看到上面的是之前的D型锁存器,下面的就仅仅是加了一个清零输入(一个或门)。

也就是说数据端其中一个输入被清零或门处理后再输出了,而或门就是有1则输出1,所以当清零为1时,则或门输出1,输入到了右上方的或非门中,而或非门则是有1则0,00为1,所以若清零信号为1,那么就可以让Q强制为0.

其实最简单的清零器就是一个或非门,有1则0

 

现在再设计一个电路如下图:

改良后的加法器过程如下:

1.先清零,关闭清零开关,使锁存器的输出灯泡全部为0,然后同时加法器的B端输入也为0。

2.在左上开关,输入第一个加数,如(00000001=十进制1 ),此时会得到加法器的输出既S1=1+0=1,因为B端现在是0 

3.然后关闭锁存器右侧的相加开关(这个相加就是时钟信号,只是在这里代表一个相加的动作,所以叫相加),时钟为1,代表锁存器的输入跟随输出改变,此时S1就被反映到了锁存器的输出Q上,同时也反映到了加法器的B端输入

4.断开锁存器的相加开关,然后再用左上方的开关输入第二个加数如3,再闭合相加开关,就得到了第二个结果S2=3+1=4.

5.再断开相加开关,再通过左上开关输入,依次类推

 

这个改良后的加法器,相比之前那个少了一个选择器,同时可以瞬间清零,更加方便,而且电路原件更少

 

 

 

5.边沿触发器(edge-tiggered)

上面我们讨论的都是电平触发器,既当时钟电平为高电平电平时,才能引起输出的改变,但是接下来我们要介绍一种边沿触发器

这种触发器是在时钟端的输入从0变为1时,才会引起输出的改变,如下:

这个电路是由两个R-S触发级联而成,左边的是第一级触发器,右边的是第二级触发器

时钟控制着这两个触发器,对第一级触发器来说时钟会取反

该电路只有一个数据端,然后第一级触发器的输出同时也是第二级触发器的输入

回想下触发器的功能,当时钟为1时,触发器的输出会根据数据端而改变,当时钟为0时,则不会改变。

首先,当时钟为0时,第二级触发器的时钟信号为0,那么此时不管左边第一级数据端如何变化,Q不会改变

当时钟为1时,第二级触发器时钟为1,此时对第二级触发器来说,输出会随着输入改变,但是输入就是第一级触发器的输出,而对于第一级触发器来说,由于它的时钟信号被取反是0,所以它的结果也不会改变。所以对第二级触发器来说,虽然时钟是1,但是输入端不变,那么输出也是不变的

因此,不管时钟信号处于某个状态,0,还是1,Q都不会改变

那么怎么才会改变呢,答案就是时钟从0跳变为1.

细想一下,当时钟为0时,第二级的结果是被锁住的,然后第一级结果可以任意改变,当此时时钟变为1时,第二级可以动了,而第一级则是被锁住,同时结果被保存下传到第二级上,此时第二级结果发生改变。

此时再改变数据端。Q也不会变了,因为第一级被锁住了

 

所以,只有这一个状态能改变Q的结果,只有从0-1才能改变Q的输出。

这就是边沿触发器的原理!

我们用一个向上的箭头代表从 0到1 的瞬时变化,那么上面的电路功能表就如下表:

只有当clk跳变时,Q才改变

边沿触发器的符号如下图所示:

clk旁边的小三角代表边沿触发 

 

6.振荡器(oscillator)

我们先来看一个电路

 首先这是一个闭合的电路,但是这个状态时不同的,因为左边的开关是断开状态

我们都知道继电器的特点,当继电器中有电路经过,则继电器产生磁性(电生磁),然后吸引上面的开关(金属簧片)断开,如下图:

 而拉下金属黄片之后,电路又断开了,继电器又失去了磁性,金属簧片又弹回原位。

弹回原位,电路再次接通,继电器又产生磁性,拉下金属簧片,。。。依次循环

整个过程就是:接通侧开关,上面的金属簧片开关就会不断的断开,闭合,断开闭合......

如果我们在金属簧片下接一个锣片,而金属簧片是一个锤子,那么就会变成一个电铃,想象铃铃铃铃的声音。。

 

将该电路简化如下:

可以这么看:当开关闭合时,反向器这里的输入为1,那么输出为0,输出为0又导致开关打开

开关为什么会打开?这是因为这是个抽象,把这个开关想象成上面那个电路图的金属簧片,所以这里我们认为反向器的输出0,会让开关打开...开关打开,输入为0,输出为1,开关又闭合了,如此反复。。。

我们将电路中的开关去掉,就变成这样了:

这个图看起来更奇怪,但是我们只要想象下上面那个继电器就明白了,要记住这个电路图就是上面那个继电器电路,而反向器本质上是一个继电器。

我们把这种电路称为振荡器,振荡器的作用是在不需要人的干预下,不断的输出0和1:

 

 

我们把振荡器从某个时间的输出开始,经历一段变化又回到同样输出的这一段间隔称为 振荡器的一个循环(c y c l e):

一个循环所需要的时间称为振荡器的周期。假设一个振荡器的周期是0.05秒,则可以在水平轴上标出时间:

振荡器的频率是周期的倒数。本例中,若振荡器的周期是0.05秒,则其频率是1 除以 0.05 秒=20,即每秒钟2 0个循环。这表明振荡器的输出每秒钟改变 2 0次。

为了纪念第一个发送和接收无线电波的人—鲁道夫·赫兹( 1 8 5 7-1 8 9 4 ),我们用“赫兹”这个词表示每秒的循环数。这个用法始于2 0世纪2 0年代的德国,后来传到其他国家。

于是,我们可以说这个振荡器的频率是 2 0赫兹,或直接简写为20Hz.

 

 

7.计数器

讲完了振荡器,我们再看看第六段落中说的边沿触发器,我们把边沿触发器的符号记成:

代表只有时钟从0跳变到1时,Q才发生变化:

 

 

那么我们把振荡器和边沿触发器相连,然后把_Q的输出连接到数据端D中,如下:

这个触发器的输出又变成了自己的输入,然后左边振荡器不断的输出0-1,我们分析下该电路:

幸运的是,我们只需要记住边沿触发器的功能表即可:

只有时钟从0跳变到1时,Q才发生变化,那么用一张图来表示输出的Q和_Q:

Clk的状态是从0,瞬间0-1,1,瞬间1-0,1,瞬间0-1,依次类推

然后D又会再Clk跳变时输出到Q,而_Q也会将此时的Q取反赋给D,也就是说D会随着Clk跳变而不断的变化,但在其余时刻保池不变,而Q也会在Clk跳变时跟着D变化,在其余时刻保持不变

那么就形成了上面的波形图.

如果振荡器的频率为20Hz,那么Q的变化频率则是振荡器的一半,就是10Hz.

由于这个原因,这种电路也被称为分频器(frequency divider)

 

我们可以把三个边沿触发器和一个振荡器按下面连在一起:

 最左边的clk我们看成一个振荡器,然后右边连接三个边沿触发器,第一个触发器的输出_Q,作为第二个触发器的输入,那么_Q是不是也可以看成一个振荡器,因为_Q也是不断地输出0和1,只是频率为10Hz,最左边的振荡器的一半罢了

同理,第二个触发器接收到的振荡器频率为10Hz,那么输出的_Q则为5Hz,然后最右边的触发器_Q则为2.5Hz

这样看其实也可以称之为3个分频器相连,因为我们把每个触发器的输出都当成是振荡器,则和下一个触发器形成了一个分频器。同理,3个触发器的输出Q频率也是递减分别为10Hz,5Hz,2.5Hz

 

我们把振荡器取反的_Clk和Q1,Q2,Q3的输出  既上面4个顶部信号 变成一个波形图:

如果我们把把这些信号标上 0和1:

如果把这个图形,顺时针旋转90度,那么就变成了:

 

 

没错,上面的4个顶部信号的输出,连续起来会组成一个计数器,是一个4位计数器,会不断的从0累计到15,然后再变成0,再继续变成15,不断的计数

如果我们想计更多的数,那么只需要加入更多的触发器,若再加4个触发器,就会变成一个8位计数器:

 

 

最右边的Q0,就是上面的第一个振荡器的取反输出_Clk,第二个Q1则是第一个触发器的输出...

如果将Q0-Q7用灯泡连接,那么就可以明显的看到8位数字的显示:


 

我们把8位输出标记为Q

每当Clk有0-1的跳变时,Q就会加1,一直加到11111111 =255 为止,然后又变为00000000

 

 

总结:

1.我们利用R-S触发器,演化出了1位锁存器,然后变成8位锁存器,通过8位锁存器和加法器,得到了一个改良版的8加法器

2.利用两级R-S触发器演化出了边沿触发器(只有输入从0跳变1时输出才发生改变),然后通过继电器实现了振荡器,将振荡器和边沿触发器结合,演化出了分频器。

将7个边沿触发器和一个振荡器连接起来,就可以组成8位计数器

 

这就是本博客的内容,通过最简单的或非门,与门,或门,取反器,实现了触发器,再通过触发器和振荡器我们实现了计数器!

 

 

  • 15
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
触发器锁存器都是具有存储功能的逻辑电路,是构成时序电路的基本逻辑单元,每个锁存器触发器都能存储一位二值信息。但是它们之间也存在一些区别。 首先,触发器按照触发信号工作方式的不同可以分为电平触发、边沿触发和脉冲触发三种类型。而锁存器则没有这种区分,它的存储状态可以一直保持,无需外部触发信号。 其次,锁存器消耗的门资源比触发器要少,这是锁存器触发器优越的地方。因为锁存器的特点有时候锁存器是不能被代替的。 综上所述,触发器锁存器在存储功能方面是相似的,但触发器具有不同的触发方式,而锁存器则相对更节省门资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [简单理解锁存器触发器的主要区别](https://blog.csdn.net/qq_55894557/article/details/125841700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [锁存器触发器](https://blog.csdn.net/weixin_40877615/article/details/96978127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值