Q1:我们为什么要学习这一章?
在一些需求中我们必须要和时间建立起联系,而组合逻辑电路的特点又是输入决定于输出,并没有引入时间的概念,也没有储存器件,自然就不能实现某些和时间相关的功能。所以,我们要学习一些电路中的储存器件,为后面的时序电路做准备。
Q2:这一章我需要学习什么,逻辑线是什么?
用一句话总结:我们要学会“怎么用门电路来搭建储存器件”
(注意:我们主要关注电路结构的变化带来的功能的变化)
逻辑线:
存储原理电路——SR触发器——电平触发器——D触发器
脉冲触发器——主从触发器——JK触发器
边沿触发器——两个D触发器——cmos传输门的边沿触发器
触发器的逻辑功能及其描述方法
触发器的动态特性
对于存储电路原理:
1.环路反馈电路
原理可以理解为:两个反相器首尾相连,只要没有输入,该状态就可以在环路里面一直保持,相当于存储功能。
正反馈:处于亚稳态的信号会被回环推向稳态,这也就是存储的原理
2.load信号
存储使能信号
(电路中并不是每一个信号都是有效信号,不是每个信号都值得被存储,所以我们需要一个LOAD来进行筛选)
load信号存在时间间隔,且这个时间间隔正比于Tpd
对于时序电路:
下一个状态的输出=input+上一个状态
3.触发信号
存在置1端和置0端来控制电路,提供输入输出(而这个过程我们也称之为“触发”)
触发器:用于记忆1位二进制信号
1.有两个能够自行保持的状态
2.根据需要来决定置0或者置1
SR触发器
两个输出口一个为Q,一个为Q‘
状态如何体现?
输出端Q实际上为当前输入也称为下一个状态的输入一般用Q*
而上个状态的Q则反映在电路的环路部分(存储在环路里面)
功能表:
S=R=0时为存储状态(这也是和后面D触发器有区别的地方,正应为有存储状态,所以在分析电路时对于Q*的状态一定要分析上一个状态是什么,而不是根据功能表来看)
S为置1端(S=1,R=0) 在触发时可以直接用Q*=S来分析
R为置0端(S=0,R=1)
S=R=1为不定状态
(为什么会出现不定:当S=R=1时,Q和Q'的输出为0,而S,R信号同时消失时,Q的状态就要看S和R端哪个跑得快来判定了,所以,不定发生在S,R信号同时消失时)
动作特点:SR触发器的特点就是在任何时候输入都能直接改变输出(和主从的区别,主从的输出还需要关注主触发器的最后一刻存的数据,而电平触发器的输入直接改变输出)
过于灵敏,我们需要一个LOAD信号来进行控制。
电平触发器
电平触发器:clk(控制门)+SR触发器
只有当CLK到达时才会触发(与门即可)
功能表:
CLK=0时 存储状态
CLK=1时 工作(依然无法消除不定态)
clk相当于单片机里面的看门狗电路
注意电平触发器模块的画法
问题:我能不通过触发端(CLK)以及S/R端,直接将我想要的状态输入到触发器中?
可以,引入异步信号,直接和触发器相连(与非门)
同步信号:和触发端相配合的信号
异步信号:和触发端不配合的信号(clk控制不了的信号)
SR缺点:在触发的时候S和R端必须要保持相反,我觉得太麻烦了,能不能再改!
D触发器
S和R由一个信号控制,但是用一个反相器来区分。
由于S'=R那么就实现不了S=R=0时候的储存功能,但是我可以令CLK=0来实现存储状态
和数据选择器的联系:
一个二选一的数选将Y端和A端相连,可以制成一个D触发器。
G=0时 Q*=Q 实现存储
G=1时 触发 Q*=D 实现触发
地址端G(相当于CLK端)来控制Q的输出
问题:电平触发器(SR和Q触发器)只在触发端有效时(CLK=1)才发生触发,但是这个触发时间是人为控制的,在一些需求场景中,我不可能做到人为的实现对触发时间的控制(因为这个时间和Tpd有关,ns级别的),所以我想要一个不用电平触发的触发器,实现每一次的触发时间都固定。
(也可以这么理解,我想在CLK触发时间内,让我的输出状态只改变一次,两种表达,但是实现的功能都是一样的)
脉冲触发器
原理:clk相当于过车的闸门,如果利用两个“一开一关的闸门”(两个clk通过反相器相连)来实现,在一个tpd内前面一个开关打开后后面一个马上关闭,那么我就可以将触发时间控制在1个Tpd内,可以实现——脉冲触发
脉冲触发器:在每一个触发周期内,输出状态只改变一次(只有在脉冲到来时才发生触发)
电路结构:引入主从结构
两个触发器连在一起,clk用反相器相连
第一个触发器称之为主触发器,主触发器用于取数据(clk=1时)和存数据(clk=0时),之存1位
第二个触发器称之为从触发器,从触发器用于取数据(clk=0时,取的那位数据就是主触发器最后一次存的数据,所以说主从触发器在看Q的输出时不能只看功能表,还要看主触发器最后一次存的数是什么)
由于从触发器只能取1位数据,所以说脉冲触发器可以实现在每一个触发周期内,输出状态只改变一次。而触发时刻发生在CLK从1-0的时刻(正常为下降沿,如果clk端取反则为上升沿),从而实现脉冲触发。
功能表:因为主的Q连从的S,且S为置1端,所以主从触发器的功能表只是引入了一个触发时刻(clk的下降沿),其他的和sr触发器一样(依然有不定!所以S,R不能同时为1)。
(和主从的区别,主从的输出还需要关注主触发器的最后一刻存的数据,而电平触发器的输入直接改变输出)
封装图:记住特有标志!
问题:不定状态太他妈烦了,怎么改!
JK触发器
思想:再引入一个相反变量的输入使得当J=K=1时的条件用不成立。
由于触发器的两个输出就是相反变量,所以将Q的输出直接连在JK端即可,可以屏蔽J=K=1。
问:j=k=0时候的功能会受到有影响吗?
不会,由于与非门的存在(对0敏感),j=k=0时的信号是无法屏蔽的,所以主触发器依然可以实现存储的功能。
其他情况呢?
依然不会有影响
比如Q=1,Q'=0 Q'把J的置1信号屏蔽了,但此时Q的输出本身就是1,不用屏蔽
Q=0时,Q'=1 J的置1信号更屏蔽不了。
所以JK触发器:即使出现S=R=1时,Q*也是确定的。
问:J=K=1时Q*是什么状态?
Q*=Q'
假设Q=1 那么J端(S)为0 则Q*=0=Q*
假设Q=0 那么J端(S)为1 则Q*=0=Q*
JK的缺点:当主触发器打开时,主触发器的输出最多只允许翻转1次。(因为Q'=0会屏蔽掉置0 信号)
脉冲触发器的动作特点:
clk=1时,主触发器接收信号,从触发器保持
(对于JK触发器,主触发器只能翻转1次;Q=0,只允许J=1进入,Q=1,只允许K=1进入)
CLK从1-0,从触发器接受信号,但输出状态只改变一次
所以,在clk=1里发生的变化,要找到CLK下降前Q的最后状态,才能决定Q*
总结:主从结构可以实现在一个触发周期内只输出1个信号,相当于控制了触发时间,从功能上看不同的结构使得我们可以使用不同的功能,但我们在享受功能的同时,又会带来其他的缺点。
问题:
1.我需要看的信号太多了,烦!(主从的输出和CLK=1时的都有关,因为有S=R=0的存储功能)
2.clk的屏蔽能力依然对我有影响,有可能在s=r=0来临时,正好接收了一个不好的信号
我希望我的输出只决定于时钟信号跳变瞬间*(比如下图绿色框中的瞬间),而和之前的输入无关
而对于脉冲触发方式的触发器,输出与时钟有效期内(clk=1)——输入端的变化有关。也就是所,上图中两根黄线之间的那段时间内,输入端的变化情况。(因为我存在s=r=0的状态,可能会在这个有效期内一直保持)
改!
边沿触发器
边沿触发器:Q的输出只取决于CLK的下降沿(或者上升沿)到来时的输入信号状态,与之前的状态无关。
两个电平触发D触发器构成的边沿触发器:
由于S=R'所以不会存在S=R=0的情况,自然也没有存储的状态,那么Q只取决于D的输入,(功能表就可以使用了)。
实现D=Q
注意模块图的区别!(脉冲和边沿的)
利用CMOS传输门的边沿触发器:
主从的实现:4个cmos传输门,CLK来控制
只有一个输入端,储存的实现通过一个CMOS自锁回路(clk=0 时实现存储)
上升沿来到时,输出接通,且输出==上一个时刻的输入 Q*=D',实现边沿触发(输入决定输出)
动作特点:
Q*变化发生在clk的上升沿(或下降沿)
Q*仅取决于上升沿到达时的输出状态,而和此前的状态无关。
在上电之前,一般需要通过异步信号来置1or置0
因为有主从两个触发器而且是相连的,只置后面一个触发器的话,另外一个相当于没变,在异步信号撤离后从触发器依然后接收到从主触发器传来的信号,所以在异步置位的时候主从需要同时置位。对于多级信号的异步置位一定是同时进行的,不能只置某一级。
T触发器
很简单,由JK触发器改过来的,JK触发器有两个输入端,T触发器就相当于把JK接在一起,用一个信号控制。
T=0, Q*=Q (存储)
T=1,Q*=Q'(触发)
T触发器属于上升沿控制的边沿触发器。
应用:计数器
由于T触发器在上升沿才触发1次,在一个CLK周期内,会有两次边沿变化(1次上升,1次下降)
那么我们把T端置1(T=1) 在1个clk 周期内 2f(clk)=f(T)
将几个T连在一起就可以对CLK脉冲信号进行计数了!(频率正好是权重)
触发器的逻辑功能及其描述方法
这部分主要是对不同逻辑功能的FF进行一个总结,并用不同的逻辑表示方法来对他们进行描述。
(看笔记)
描述方法:逻辑表达式
状态转换图!(FSM 有限状态机)
重点关注电路中有多少个状态(0和1 两个)以及电路在这两个状态转换时需要满足什么条件
根据逻辑功能分类:
SR触发器:
特征方程:
Q*=S+R'Q(根据功能表而来)
约束条件:SR=0(不同时为1)
FSM:会自己推
模块符号
注意!:以后我们在描述一个器件是什么触发器时一定要把结构+功能都描述清楚
比如: 电平触发的SR触发器,边沿触发的SR触发器。。。。
JK触发器
Q*=JQ'+KQ
T触发器
Q*=TQ'+T'Q
D触发器
Q*=D
触发器的动态特性