第 146 篇
考研数电·零基础讲义 第13讲(上)|SR 锁存器与电平触发的触发器
考研数电·零基础讲义 · 第 13 讲(上)|SR 锁存器与电平触发的触发器 学完本讲,你能看懂"会记事"的最小电路——SR 锁存器,背得出、也讲得清它的特性表和约束条件,能根据输入波形一段一段画出输出波形,并理解"电平触发"到底是什么意思。预计用时 90 分钟。
本讲地图
- 为什么要有存储电路:组合电路"手一松就忘",时序电路必须能记住过去,最小的记忆单元就是锁存器。
- 两种 SR 锁存器:或非门组成(高电平有效)和与非门组成(低电平有效),会分析、会列特性表、懂约束条件。
- 波形分析:给出输入波形画、波形——这是触发器部分最基础、也最常见的考法。
- 电平触发的触发器:加上时钟 CLK 当"门卫",得到电平触发 SR 触发器和电平触发 D 触发器(D 锁存器),掌握"CLK 有效期间输出跟着输入变"的动作特点。
- 华师怎么考:考纲写的是"时序逻辑电路:触发器、计数器、寄存器等",触发器是后面计数器、寄存器、时序电路分析(2026 回忆题第 7 题)的地基,概念、特性表、画波形都要熟。
- 教材对应:阎石《数字电子技术基础》第六版 5.1、5.2 节,5.3.1 节。
前置知识
- 与非门、或非门的真值表:"与非:有 0 出 1,全 1 出 0";"或非:有 1 出 0,全 0 出 1"。见第 02 讲(上)。
- 高、低电平与逻辑 1、0 的对应(正逻辑),见第 05 讲(上);CMOS 与非、或非门见第 06 讲。
- 组合逻辑电路"输出只取决于当前输入"的特点,见第 08 讲。
一、从"门铃"到"电灯开关":电路怎样才能记住东西
1.1 大白话:组合电路像门铃
前面十几讲学的全是组合逻辑电路:编码器、译码器、数据选择器、加法器……它们有一个共同脾气——输出只看现在的输入。就像门铃按钮:手按下去就响,手一松立刻不响,它根本不记得刚才有人按过。
可是生活里很多事要"记住":
- 电灯的拨动开关:拨一下,灯一直亮着,手拿开也不灭;再拨一下才灭。
- 计算器要记住你刚输入的第一个数,才能和第二个数相加。
- 计数器要记住"已经数到几了"。
这种"输入撤掉以后,结果还能保留下来"的能力,叫记忆功能。能存储 1 位二值信号(0 或 1)的电路,叫存储单元。本讲和下两讲要学的锁存器、触发器,就是最基本的存储单元。
1.2 一个门为什么记不住
拿一个或非门来看:另一个输入接 0 时,它就是一个反相器——输入 1 输出 0,输入 0 输出 1。输入一变,输出马上跟着变,输入信号消失了,输出也就"忘了"。
1.3 两个门首尾相连,就能记住
关键招数叫反馈:把输出再送回输入。
想象两个反相器首尾相接:第一个的输出接第二个的输入,第二个的输出又接回第一个的输入。
- 如果第一个输出是 1,那么第二个输出是 0,0 送回第一个,第一个输出还是 1——自己撑住自己,稳定不变。
- 如果第一个输出是 0,同理也能一直稳定下去。
所以这个环有两个稳定状态,正好可以代表 1 和 0,这就记住了 1 位!
不过两个反相器的环有个毛病:没有"入口",你没法告诉它"现在请存 1"。办法是把反相器换成或非门(或与非门)——多出来的那个输入端,正好当作"改写入口"。这就是 SR 锁存器。
1.4 几个以后天天用的名词
- 状态:存储单元里存的是 0 还是 1,就叫它的状态,用输出表示。另一个输出(读作"Q 非",图里常写作 Q')总是和相反。
- 规定:、叫 1 状态;、叫 0 状态。
- 现态(初态) :输入信号作用之前的状态。
- 次态 (读作"Q 星",有的书写作):输入信号作用之后的新状态。
一句话:次态不只由输入决定,还和现态有关——这正是"有记忆"的数学表现。
二、或非门组成的 SR 锁存器
2.1 电路长什么样
两个或非门、交叉连接:的输出就是,它又接到的一个输入;的输出是,它又接回的一个输入。剩下两个空着的输入端就是两个"入口":
- (读作"S D"):置位端 / 置 1 端,S 是 Set(设置)的首字母。
- :复位端 / 置 0 端,R 是 Reset(复位)的首字母。
- 下标 D 是 Direct(直接)的意思:信号直接加在输出门上,一来就起作用。
用逻辑式写出来就是:
注意等号右边又出现了、——这就是反馈。
图 1:或非门 SR 锁存器。橙色线表示高电平 1,动画依次演示"置 1 → 保持 → 置 0 → 保持"(动画循环播放)
2.2 逐种情况分析(一定要自己推一遍)
或非门的口诀:有 1 出 0,全 0 出 1。
情况①:,(要求置 1)
- 先看:它有一个输入是,"有 1 出 0",所以。
- 再看:两个输入是和,"全 0 出 1",所以。
- 结果、,锁存器被置成 1 状态。
- 撤掉输入(回到 0):的两个输入变成和,仍然"有 1 出 0",还是 0;仍然全 0 出 1。1 状态保持住了。
情况②:,(要求置 0)
和情况①对称:有,所以;两个输入、,所以。锁存器被置 0,撤掉后也能保持。
情况③:,(什么都不做)
两个门各自只剩反馈那一个输入在起作用,就是 1.3 节说的"两个反相器的环",原来是什么状态就保持什么状态:。
情况④:,(同时要求置 1 和置 0)
两个门都有一个输入是 1,都"有 1 出 0":。
这就麻烦了:
- 和本该相反,现在却都是 0,既不是 1 状态也不是 0 状态;
- 更糟的是,如果、 同时回到 0,两个门同时从"被压住"变成"自由",谁先翻过来全看两个门谁快那么一点点(这叫竞争),结果无法确定。
所以正常使用时不允许 。这个要求叫约束条件:
2.3 特性表
把现态也当作一个输入变量,列成真值表,就得到锁存器的特性表(也叫功能表):
| 说明 | ||||
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 保持 |
| 0 | 0 | 1 | 1 | 保持 |
| 1 | 0 | 0 | 1 | 置 1 |
| 1 | 0 | 1 | 1 | 置 1 |
| 0 | 1 | 0 | 0 | 置 0 |
| 0 | 1 | 1 | 0 | 置 0 |
| 1 | 1 | 0 | 0* | 禁止:,输入同时撤销后状态不定 |
| 1 | 1 | 1 | 0* | 同上 |
复习时可以只记压缩版:"00 保持,10 置 1,01 置 0,11 禁止"(顺序是)。
这张表我用 Python 对两个或非门做了门级迭代模拟,8 行全部核对一致(见验算脚本 13-flipflops.py)。
2.4 例题 1:按输入序列推状态
题:或非门 SR 锁存器初态,依次为、、、、、,求每一步之后的。
解:一步一步查特性表,每一步的"现态"就是上一步的结果。
| 步骤 | 现态 | 动作 | 次态 | ||
|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 置 1 | 1 |
| 2 | 0 | 0 | 1 | 保持 | 1 |
| 3 | 0 | 1 | 1 | 置 0 | 0 |
| 4 | 0 | 0 | 0 | 保持 | 0 |
| 5 | 1 | 0 | 0 | 置 1 | 1 |
| 6 | 0 | 0 | 1 | 保持 | 1 |
答:依次为 1、1、0、0、1、1。注意第 2、4、6 步输入全是 0,输出却不一样——同样的输入,结果取决于过去,这就是"记忆"。
2.5 易错点 ⚠️
- ⚠️ 或非门 SR 锁存器是高电平有效:输入为 1 才"动手",为 0 是"不管"。
- ⚠️ 时输出不是"不定",而是确定的;"不定"指的是两个输入同时撤销以后的状态。考试问"为什么要约束",两点都要答。
- ⚠️ 特性表里一定要有现态这一列,漏掉它就写不出"保持"。
三、与非门组成的 SR 锁存器
3.1 大白话:换一种"按钮"
把两个或非门换成两个与非门,也能交叉连成锁存器。区别在于:与非门的口诀是有 0 出 1,全 1 出 0,所以这种锁存器要用**低电平(0)**去"按按钮"。
为了提醒大家"0 才有效",输入端写成(读作"S D 非")、,逻辑符号的输入端还会画一个小圆圈,表示低电平有效。电路关系是:
3.2 逐种情况分析
① ,(置 1):有一个输入为 0,"有 0 出 1",;的输入是、,"全 1 出 0",。撤销后回到 1,的输入是 1 和,仍出 1,保持住了。
② ,(置 0):对称地得到、。
③ (都不按):保持原状态。
④ (同时按):两个门都"有 0 出 1",,又是非定义状态;两个输入同时回到 1 后状态不定。所以同样要遵守约束,也就是不允许。
3.3 特性表
| 说明 | ||||
|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 保持 |
| 1 | 1 | 1 | 1 | 保持 |
| 0 | 1 | 0 | 1 | 置 1 |
| 0 | 1 | 1 | 1 | 置 1 |
| 1 | 0 | 0 | 0 | 置 0 |
| 1 | 0 | 1 | 0 | 置 0 |
| 0 | 0 | 0 | 1* | 禁止:,同时撤销后不定 |
| 0 | 0 | 1 | 1* | 同上 |
两种锁存器放在一起比较:
| 或非门 SR 锁存器 | 与非门 SR 锁存器 | |
|---|---|---|
| 有效电平 | 高电平(1)有效 | 低电平(0)有效 |
| 输入写法 | 、 | 、 |
| 置 1 | ||
| 置 0 | ||
| 保持 | ||
| 禁止输入 | (此时) | (此时) |
| 约束条件 |
记忆法:"或非怕两个 1,与非怕两个 0";禁止状态下,或非门两个输出都是 0,与非门两个输出都是 1。
3.4 例题 2:画波形(重点题型)
题:与非门 SR 锁存器,初态,、的波形如图 2 上两行所示(图中写作 S'、R'),画出和的波形。
方法:画波形题的通用套路只有三步——
- 切段:在输入任何一个发生跳变的时刻画竖线,把时间轴切成若干小段;
- 查表:每一段里输入不变,用"上一段的结果"当现态,查特性表得到这一段的输出;
- 连线:把各段输出连起来。
图 2:与非门 SR 锁存器例题波形,红色底色为两个输入同时为 0 的区间(橙色竖线为扫描线,动画循环播放)
逐段分析(为图中竖线):
| 时间段 | 动作 | ||||
|---|---|---|---|---|---|
| 以前 | 1 | 1 | 保持初态 | 0 | 1 |
| 0 | 1 | 置 1 | 1 | 0 | |
| 1 | 1 | 保持 | 1 | 0 | |
| 1 | 0 | 置 0 | 0 | 1 | |
| 1 | 1 | 保持 | 0 | 1 | |
| 0 | 0 | 禁止输入,两个输出都为 1 | 1 | 1 | |
| 1 | 0 | 先回到 1,相当于置 0 | 0 | 1 | |
| 1 | 1 | 保持 | 0 | 1 | |
| 0 | 1 | 置 1 | 1 | 0 | |
| 0 | 0 | 禁止输入,两个输出都为 1 | 1 | 1 | |
| 以后 | 0→1 | 1 | 先回到 1,相当于置 1,之后保持 | 1 | 0 |
要点:和虽然出现了禁止输入,但两个输入不是同时撤销的——谁后撤销,谁就说了算(时先撤,剩下把它置 0;时先撤,剩下把它置 1),所以次态仍然能确定。只有同时撤销才真正"不定"。这张波形图的每个时隙都由 Python 门级模拟生成,和表格一致。
3.5 易错点 ⚠️
- ⚠️ 与非门锁存器输入是低电平有效,看到才是"置 1",千万别看成"置 0"。
- ⚠️ 画波形时输入的每一次跳变都要切段,不能只在某一个输入跳变时切。
- ⚠️ 禁止区间里和要画成同为 1(与非门)或同为 0(或非门),不要画成互补。
四、电平触发的 SR 触发器:给锁存器请个"门卫"
4.1 大白话:为什么要时钟
一个数字系统里往往有成百上千个存储单元。如果每个单元都是"输入一来就改",大家改的时机乱七八糟,系统就乱套了。我们希望:平时谁都别动,等统一的"口令"来了,大家再一起按各自的输入更新。
这个统一口令就是时钟信号,记作 CLK(Clock)。在锁存器前面加一道由 CLK 控制的"门",就成了触发器。
教材的定义:触发器与锁存器的区别在于,它除了置 1、置 0 输入端以外,又增加了一个触发信号(时钟)输入端,只有触发信号到来时,才按输入把状态置好并保持下去。
4.2 电路结构
电平触发 SR 触发器(也叫门控 SR 锁存器)由两部分组成:
- 后级:与非门、组成的 SR 锁存器(低电平有效);
- 前级(输入控制门):与非门、,的输入是和 CLK,的输入是和 CLK,它们的输出分别送到锁存器的、。
4.3 逐步分析
CLK = 0 时(门关着):、都有一个输入为 0,"有 0 出 1",输出恒为 1。锁存器的两个输入都是 1,处于"保持"。不管、怎么变,都不动。
CLK = 1 时(门开着):输出,输出。于是锁存器收到的是、——"取了两次反",正好变成高电平有效:置 1,置 0,保持。
这种"CLK 处于有效电平(这里是高电平)的整段时间里,输入都能影响输出"的方式,叫电平触发。
4.4 逻辑符号和特性表
逻辑符号是一个方框,框里写 C1(表示 CLK 是 1 号控制信号)、1S、1R(表示受 C1 控制的输入)。CLK 输入端外面没有小圆圈表示高电平有效;有小圆圈表示低电平有效。
| CLK | 说明 | ||||
|---|---|---|---|---|---|
| 0 | × | × | 0 | 0 | 门关着,保持 |
| 0 | × | × | 1 | 1 | 门关着,保持 |
| 1 | 0 | 0 | 0 | 0 | 保持 |
| 1 | 0 | 0 | 1 | 1 | 保持 |
| 1 | 1 | 0 | 0 | 1 | 置 1 |
| 1 | 1 | 0 | 1 | 1 | 置 1 |
| 1 | 0 | 1 | 0 | 0 | 置 0 |
| 1 | 0 | 1 | 1 | 0 | 置 0 |
| 1 | 1 | 1 | 0 | 1* | 禁止,CLK 回到 0 后状态不定 |
| 1 | 1 | 1 | 1 | 1* | 同上 |
("×"读作"任意",表示取 0 取 1 都一样。)
CLK=1 时它的功能和 SR 锁存器一样,所以同样要遵守约束条件。会出现"不定"的两种情形:
- CLK=1 期间、 同时从 1 变回 0;
- 的时候 CLK 回到 0(门一关,、同时输出 1,相当于锁存器两个输入同时撤销)。
4.5 异步置位、复位端
实际芯片常常还有两个"后门":异步置 1 端 和异步置 0 端,它们直接接到、上,不经过时钟门:
- :立刻置 1;:立刻置 0——不管 CLK 是什么。
- "异步"就是"不跟时钟同步"的意思。
- 正常按时钟工作时,这两个端要接高电平(不起作用)。
- 用它们预置状态时,最好在 CLK=0 时进行,否则 CLK=1 期间、也在影响锁存器,预置的结果不一定保得住。
4.6 电平触发的动作特点(必背)
- 只有 CLK 处于有效电平时,触发器才接受输入,按输入改变状态;
- 在 CLK=1 的全部时间里,、的每一次变化都可能引起输出变化;CLK 回到 0 以后,触发器保存的是 CLK 回到 0 之前那一瞬间的状态。
由第 2 条可以推出它的缺点:如果 CLK=1 期间输入变了好几次(比如来了干扰毛刺),输出也会跟着翻好几次——抗干扰能力差。下一讲(中)要讲的边沿触发,就是为了解决这个问题。
4.7 例题 3:电平触发 SR 触发器画波形
题:电平触发 SR 触发器,初态,CLK、、波形如图 3 前三行所示,画出。
图 3:电平触发 SR 触发器(前四行)和电平触发 D 触发器(后两行)的例题波形,蓝底为 CLK 高电平(扫描线动画循环播放)
解:先把 CLK 的高电平段找出来(图中蓝底),只在这些段里查特性表,低电平段一律保持。
- 第 1 个 CLK 高电平:一开始、,置 1;接着,保持 1;后来、,置 0。所以 CLK 回到 0 时。
- 第 1 个低电平期间:出现了一个高电平,但门是关着的,不起作用,保持 0。
- 第 2 个 CLK 高电平:本来应该保持,可上来了一个短短的干扰脉冲,门正开着,于是触发器被置成 1,而且一直保持到下一次被改写。——这就是"抗干扰能力差"的实例。
- 第 3 个 CLK 高电平:,置 0。
答:的变化见图 3 第 4 行(每个时隙都由 Python 逐拍模拟得到)。
4.8 易错点 ⚠️
- ⚠️ CLK=0 期间输入怎么变都不管,画波形时先圈出 CLK 有效段再分析。
- ⚠️ CLK=1 期间输入变几次,输出就可能变几次;不是只看 CLK 上升沿那一刻(那是边沿触发,下一讲)。
- ⚠️ CLK 端有没有小圆圈要看清:有圆圈表示 CLK=0 时"门开"。
五、电平触发的 D 触发器(D 锁存器)
5.1 大白话:把两根线并成一根
SR 触发器有两个麻烦:要两根输入线,还得时刻提防。很多时候我们只想"把一个数据存起来"。办法很简单:
也就是在和之间接一个反相器。这样、永远一个 0 一个 1,约束条件自动满足。这就是电平触发的 D 触发器,也常叫 D 型锁存器(D 是 Data,数据)。
5.2 特性表与功能
| CLK | |||
|---|---|---|---|
| 0 | × | 0 | 0 |
| 0 | × | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
一句话:CLK=1 时(输出紧跟输入),CLK=0 时保持。因为 CLK=1 时输出就像一块透明玻璃,是什么就是什么,所以也叫透明 D 锁存器。它仍然是电平触发,所以也具有电平触发的动作特点。
在 CMOS 电路里,D 锁存器常用两个传输门(第 06 讲)加两个反相器做成:CLK=1 时输入传输门导通、反馈传输门截止,;CLK=0 时反过来,两个反相器和组成闭合的自锁环,把状态保存下来。
5.3 例题 4:画 D 锁存器的波形
题:电平触发 D 触发器,初态,CLK 与波形如图 3 的 CLK 行和行,画出。
解:
- 第 1 个 CLK 高电平:依次是 1、0、1,就跟着 1、0、1;CLK 落下时,所以之后保持 1。
- 第 1 个低电平:变来变去,不理,保持 1。
- 第 2 个高电平:先是 1 后是 0,跟着先 1 后 0,落下时,保持。
- 第 3 个高电平:先 1 后 0,跟着变,最后保持 0。
答:见图 3 最后一行(Python 逐时隙模拟)。
5.4 易错点 ⚠️
- ⚠️ D 锁存器 CLK=1 期间是"跟随",不是"只采一次"。
- ⚠️ CLK 下降后保存的是下降前一瞬间的,不是上升沿那一刻的。
六、锁存器和触发器到底差在哪
| 对比项 | SR 锁存器 | 电平触发触发器 |
|---|---|---|
| 有没有时钟 CLK | 没有 | 有 |
| 输入何时起作用 | 输入信号存在的全部时间,直接改变输出 | 只有 CLK 处于有效电平时 |
| 典型用途 | 最基本的存储单元、开关去抖、异步置位复位 | 多个存储单元在同一时钟下同步工作 |
| 约束 | (D 型自动满足) |
教材里有一句话要注意:锁存器不受时钟控制,所以不属于按逻辑功能分类时所说的"SR 触发器"。这一点在第 13 讲(下)还会再提。
速记卡
| 知识点 | 一句话 |
|---|---|
| 存储单元的原理 | 两个门交叉反馈,有两个稳定状态,能存 1 位 |
| 状态约定 | 为 1 态;为 0 态;现态,次态 |
| 或非 SR 锁存器 | 高有效: = 00 保持、10 置 1、01 置 0、11 禁止() |
| 与非 SR 锁存器 | 低有效: = 11 保持、01 置 1、10 置 0、00 禁止() |
| 约束条件 | ;原因:禁止输入时两输出不互补,且同时撤销后状态不定 |
| 画波形三步 | 任一输入跳变处切段 → 用上一段结果作现态查表 → 连线 |
| 禁止输入后的去向 | 两输入先后撤销:后撤销的那个说了算;同时撤销:不定 |
| 电平触发 SR | CLK=1 时同 SR 锁存器(高有效),CLK=0 时保持;仍需 |
| 电平触发动作特点 | CLK 有效期间输入的每次变化都可能使输出翻转,抗干扰差 |
| 异步置位/复位 | 、不受 CLK 控制,正常工作时接高电平 |
| D 锁存器 | ;CLK=1 时(透明),CLK=0 时保持 |
自测练习
1. 或非门 SR 锁存器在时,、各为多少?与非门 SR 锁存器在时呢?
答案与提示
或非门:两个门都"有 1 出 0",。与非门:两个门都"有 0 出 1",。两种情况都不是定义的 0 态或 1 态,所以都属于禁止输入。
2. 与非门 SR 锁存器初态,依次为、、、、,写出每一步之后的和。
答案与提示
| 步骤 | 动作 | |||
|---|---|---|---|---|
| 1 | 10 | 置 0 | 0 | 1 |
| 2 | 11 | 保持 | 0 | 1 |
| 3 | 01 | 置 1 | 1 | 0 |
| 4 | 00 | 禁止输入 | 1 | 1 |
| 5 | 10 | 先回到 1,剩,置 0 | 0 | 1 |
第 5 步两个输入不是同时撤销,所以结果确定(已用 Python 门级模拟核对)。
3. 或非门 SR 锁存器初态,依次为、、、、,写出每一步之后的、。
答案与提示
依次为、、、、。第 4 步禁止输入,两输出都为 0;第 5 步先回到 0、仍为 1,相当于置 0,结果确定。
4. 电平触发 SR 触发器(CLK 高电平有效)在 CLK=0 期间端出现一个正脉冲,会不会变?若这个脉冲出现在 CLK=1 期间呢?
答案与提示
CLK=0 时、被封锁,输出恒为 1,锁存器保持,不变。CLK=1 时门打开,()会把触发器置 1,而且脉冲消失后仍保持 1——这正是电平触发抗干扰能力差的表现。
5. 电平触发 D 触发器初态,按时间顺序 8 个区间里 (CLK, D) 依次为 (0,1)、(1,1)、(1,0)、(0,1)、(0,0)、(1,0)、(1,1)、(0,0),写出每个区间的。
答案与提示
CLK=1 的区间,CLK=0 的区间保持:依次为 0、1、0、0、0、0、1、1。(第 4、5 区间 CLK=0,保持第 3 区间的 0;第 8 区间保持第 7 区间的 1。Python 逐区间模拟一致。)
6. 为什么 D 锁存器不需要约束条件?
答案与提示
D 锁存器内部、,和永远一个为 1、一个为 0,恒成立,约束条件自动满足。
7.(华师简答题风格)什么是电平触发方式?它有什么动作特点和缺点?
答案与提示
答题要点:① 只有 CLK 处于有效电平(如高电平)时,触发器才接受输入信号并按输入改变状态,CLK 无效时保持;② CLK 有效的全部时间里,输入的每一次变化都可能引起输出改变,CLK 变为无效后保存的是变为无效前一瞬间的状态;③ 缺点:CLK 有效期间输入多次变化(含干扰)会使输出多次翻转,抗干扰能力差。
下一讲预告
第 13 讲(中):用"两道门不同时开"的主从结构解决电平触发的毛病,学会脉冲触发和边沿触发的触发器,以及怎样只看时钟边沿画波形。
👉 点击进入下一讲:第13讲(中)|脉冲触发与边沿触发的触发器
评论
还没有评论。 来写第一条。