第 158 篇
考研数电·零基础讲义 第14讲|时序逻辑电路的分析方法
考研数电·零基础讲义 · 第 14 讲|时序逻辑电路的分析方法 学完本讲,拿到一张由触发器和门组成的同步时序电路图,你能按固定步骤写出驱动方程、状态方程、输出方程,列出状态转换表,画出状态转换图和时序图,说出电路的功能,并判断它能否自启动;遇到不能自启动的电路,还能说出修改思路。这正是 2026 回忆题第 7 题的完整题型。预计用时 120 分钟。
本讲地图
- 时序电路的结构:组合电路 + 存储电路(触发器),存储电路的输出反馈回组合电路;用输出方程、驱动方程、状态方程三组方程描述。
- 同步时序电路分析七步法:驱动方程 → 状态方程 → 输出方程 → 状态转换表 → 状态转换图 → 时序图 → 功能与自启动。
- 三道完整例题:例 1 由 D 触发器构成、能自启动;例 2 由 D 触发器构成、不能自启动,并给出修改方法;例 3 带输入变量的米利型电路(序列检测)。所有状态序列都用 Python 逐拍模拟核对。
- 华师怎么考:2026 回忆题第 7 题就是"D 触发器构成的时序电路分析:(1) 驱动(激励)方程、状态方程 (2) 状态转换表/状态转换图 (3) 功能?能否自启动?"——本讲最后给出答题模板。
- 教材对应:阎石第六版 6.1 节、6.2.1、6.2.2 节;自启动的概念见 6.2.3 及 6.4.2 节。
前置知识
- 五种触发器的特性方程,特别是 D 触发器、JK 触发器,见第 13 讲(下)。
- 边沿触发的动作特点(只在时钟沿按沿前一瞬间的输入动作),见第 13 讲(中)。
- 组合电路的分析方法(从逻辑图写表达式),见第 08 讲;卡诺图化简与无关项,见第 04 讲(中)、(下)。
一、时序电路长什么样
1.1 大白话:下棋
组合电路像计算器上的"开平方"键:输入 9 就出 3,跟你以前按过什么没关系。
时序电路像下棋:同样是"走马",棋盘局面不同,结果完全不同。棋盘局面就是电路的状态,它记录了"过去发生过什么"。教材的定义:时序电路任一时刻的输出不仅取决于当时的输入,还取决于电路原来的状态。
1.2 结构:组合电路 + 存储电路 + 反馈
时序电路通常有两部分:
- 存储电路:若干个触发器,它们的输出就是电路的状态;
- 组合电路:一堆门,把输入和状态组合起来,产生输出,以及送给触发器输入端的信号(叫驱动信号或激励信号,比如 D 触发器的、JK 触发器的、)。
最关键的特征:触发器的输出要反馈回组合电路的输入端,和外部输入一起决定下一步。
1.3 三组方程
| 方程 | 含义 | 形式 |
|---|---|---|
| 输出方程 | 输出由什么决定 | |
| 驱动方程(激励方程) | 每个触发器的输入端接的是什么 | 或 |
| 状态方程 | 每个触发器的次态 | ,由驱动方程代入特性方程得到 |
有了这三组方程,电路的逻辑功能在理论上就完全确定了。但方程看不出"它到底在干嘛",所以还要列表、画图。
1.4 两种分类
- 同步 / 异步:所有触发器接同一个时钟、同时翻转的叫同步时序电路;触发器时钟不统一的叫异步时序电路。本讲讲同步电路(考研主流),异步电路分析时要额外判断每个触发器"这一拍有没有时钟"。
- 米利型(Mealy)/ 穆尔型(Moore):输出与输入有关的是米利型;输出只取决于状态的是穆尔型。注意:时钟 CLK 不算输入变量,它只是控制翻转时刻的操作信号。
二、同步时序电路分析七步法
先记住这张流程表,三道例题都按它走:
| 步骤 | 做什么 | 得到什么 |
|---|---|---|
| 0 | 看清电路:几个触发器、什么类型、什么沿触发、是否同步、有无输入、输出是哪个 | 心里有数 |
| 1 | 从逻辑图写出每个触发器输入端的表达式 | 驱动方程 |
| 2 | 把驱动方程代入该触发器的特性方程 | 状态方程 |
| 3 | 从逻辑图写出输出的表达式 | 输出方程 |
| 4 | 把全部 个状态(及各种输入)逐个代入状态方程和输出方程 | 状态转换表 |
| 5 | 圆圈表示状态、箭头表示转换,箭头旁标"输入/输出" | 状态转换图 |
| 6 | 在一串时钟作用下画出各和的波形 | 时序图 |
| 7 | 看循环规律说功能;检查无效状态能否回到有效循环 | 功能、能否自启动 |
几个以后天天用的名词:
- 有效状态 / 有效循环:电路正常工作时反复经过的那些状态及其组成的循环;
- 无效状态:个触发器共有个状态,有效循环没用到的就是无效状态(比如上电瞬间、受干扰时可能出现);
- 能自启动:电路处于任何一个无效状态时,在时钟作用下都能自动进入有效循环。只要有一个无效状态回不去(例如几个无效状态自己转成一个圈),就不能自启动。
⚠️ 第 4 步一定要把个状态全部列出来。只从初态开始顺着算、算到回到初态就停,会漏掉无效状态,自启动就没法判断了。
三、例 1:由 D 触发器构成的同步电路(能自启动)
题:分析图 1 所示同步时序电路。三个触发器都是上升沿触发的 D 触发器,共用时钟 CLK。要求:(1) 写出驱动方程、状态方程和输出方程;(2) 列出状态转换表,画出状态转换图和时序图;(3) 说明电路功能,判断能否自启动。
图 1:例 1 的同步时序电路(三个上升沿 D 触发器,一个或非门、一个异或门、一个与门,输出)
第 0 步:看清电路
- 3 个上升沿 D 触发器,同一个 CLK → 同步电路;
- 没有外部输入 → 次态和输出只由现态决定,是穆尔型;
- 门电路:前面是或非门(输入、),前面是异或门(输入、),前面是与门(输入、);输出直接取自。
第 1 步:驱动方程
顺着导线读出每个端接的是什么:
(用了摩根定理把"或非"写成"非与非"的形式,见第 02 讲(下)。)
第 2 步:状态方程
D 触发器的特性方程是,直接代入:
D 触发器构成的电路,状态方程和驱动方程"长得一样",但意义不同:驱动方程说的是"D 端接了什么",状态方程说的是"下一拍 Q 变成什么"。答题时两组方程都要写出来。
第 3 步:输出方程
第 4 步:状态转换表
状态按的顺序书写(为高位)。先详细算一行,比如现态,即、、:
所以,。其余 7 行同样计算,8 个状态全部列出:
| 现态 | 次态 | ||||
|---|---|---|---|---|---|
| 000 | 1 | 0 | 0 | 001 | 0 |
| 001 | 0 | 1 | 0 | 010 | 0 |
| 010 | 1 | 1 | 0 | 011 | 0 |
| 011 | 0 | 0 | 1 | 100 | 0 |
| 100 | 0 | 0 | 0 | 000 | 1 |
| 101 | 0 | 1 | 0 | 010 | 1 |
| 110 | 0 | 1 | 0 | 010 | 1 |
| 111 | 0 | 0 | 1 | 100 | 1 |
也可以写成"按时钟顺序"的形式,更直观:
| CLK 顺序 | ||||
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 | 0 |
| 2 | 0 | 1 | 0 | 0 |
| 3 | 0 | 1 | 1 | 0 |
| 4 | 1 | 0 | 0 | 1 |
| 5 | 0 | 0 | 0 | 0 |
第 5 步:状态转换图
从表里读出箭头:构成一个5 个状态的循环;另外、、三个状态都直接跳进了循环。箭头旁标"/Y"(没有输入,斜线上方不写)。
图 2:左为例 1 的状态转换图(灰色为无效状态,都能进入有效循环);右为例 2 的状态转换图(红色两个状态构成无效循环,绿色虚线为修改后的去向)。橙色圆环沿有效循环跑动(动画循环播放)
第 6 步:时序图
从 000 开始,在每个 CLK 上升沿按状态表更新一次,画出各自的波形。画法要点:
- 先画 CLK,标出每个上升沿;
- 状态只在上升沿处跳变,两个上升沿之间保持;
- 穆尔型输出只取决于状态,所以和状态同时跳变。
图 3:例 1 从 000 开始、12 个时钟作用下的时序图(波形由 Python 逐拍模拟生成,扫描线动画循环播放)
第 7 步:功能与自启动
功能:有效循环正好是二进制数 0、1、2、3、4 依次加 1,再回到 0,共 5 个状态;每 5 个时钟,输出一个高电平脉冲。所以这是一个同步五进制加法计数器,是进位输出。
自启动:无效状态 101、110、111 经过 1 个时钟分别进入 010、010、100,都落进了有效循环,所以能自启动。
验算:用 Python 对 8 个状态逐个模拟,有效循环长度为 5,所有无效状态都能进入循环(脚本 14-analysis.py)。
四、例 2:不能自启动的电路,以及怎么改
题:同步时序电路由 3 个上升沿 D 触发器构成,从逻辑图读出:接,接,接,输出。分析其功能,判断能否自启动;若不能,提出修改方案。
第 1~3 步:三组方程
驱动方程:
状态方程(代入):
输出方程:
看结构:依次传递,最后又送回——这是一个"首尾反相相接"的移位结构(第 15 讲会知道它叫扭环形计数器)。
第 4 步:状态转换表(8 个状态全列)
| 现态 | 次态 | |
|---|---|---|
| 000 | 001 | 0 |
| 001 | 011 | 0 |
| 010 | 101 | 0 |
| 011 | 111 | 0 |
| 100 | 000 | 1 |
| 101 | 010 | 1 |
| 110 | 100 | 0 |
| 111 | 110 | 0 |
算一行示范:现态():,,,次态。
第 5、7 步:状态图、功能、自启动
从 000 出发:,6 个状态的循环,每次只有一位变化;在这个循环里只有 100 时,每 6 个时钟输出一个脉冲。所以有效循环是一个六进制计数器(为进位输出)。
剩下两个状态:,它们自己转成一个圈(无效循环),永远回不到有效循环(见图 2 右)。所以电路不能自启动。一旦上电时落到 010 或 101,或者工作中被干扰打进去,计数器就"卡死"在错误的两状态循环里。
修改思路一:改反馈逻辑(推荐,最根本)
想法:有效循环里的转换一个都不能动,只改无效状态的去向,让它们能进入有效循环。
因为、是移位关系,我们只改。把有效状态对(也就是)的要求填进卡诺图(行,列):
| \ | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 0(010:指定) |
| 1 | 0 | ×(101) | 0 | 0 |
- 有效状态 000、001、011 的次态分别是 001、011、111,要求;111、110、100 的次态分别是 110、100、000,要求。这 6 格不许改。
- 无效状态 010:原来使它去 101;现在指定,那么次态为,正好是有效状态!
- 无效状态 101:暂时当无关项 ×。
化简:圈行的 00、01 两格得,圈 01、11 两格得:
检查(必须做!):×(101)在化简中被圈在外面,即取,于是,也进入了有效循环。6 个有效状态的去向一个没变。所以修改后能自启动。
| 现态 | 原来的次态 | 修改后的次态 |
|---|---|---|
| 010 | 101 | 100 |
| 101 | 010 | 010(再下一拍到 100) |
| 其余 6 个有效状态 | 不变 | 不变 |
验算:Python 对修改后的电路逐状态模拟,有效循环仍是 000→001→011→111→110→100→000,010、101 都能进入有效循环(14-analysis.py);sympy 按"010 取 0、101 无关"化简,结果相同。
修改思路二:开机预置
利用触发器的异步置零端(),在电源接通时给一个清零脉冲,把电路强行置成有效状态 000。这样开机一定从有效循环开始。
缺点:它只管"开机那一下"。工作中如果被干扰打进 010 或 101,电路照样卡死。所以题目问"如何使电路能自启动"时,首选思路一(修改逻辑设计),思路二可以作为补充。
五、例 3:带输入变量的米利型电路
题:同步时序电路由两个上升沿 D 触发器构成,输入为(每个时钟周期送入一位串行数据),读图得:
分析电路功能,判断能否自启动。
第 1~3 步
驱动方程即上式;状态方程:
输出方程——输出和输入直接有关,是米利型电路。
第 4 步:状态转换表
有输入时,状态转换表要对"每个现态 × 每个输入"都算。常用二维表:行是现态,列是输入,格子里写"次态 / 输出":
| 现态 | ||
|---|---|---|
| 00 | 00 / 0 | 01 / 0 |
| 01 | 00 / 0 | 10 / 0 |
| 10 | 00 / 0 | 10 / 1 |
| 11 | 00 / 0 | 10 / 1 |
示范一格:现态 01()、:,,,填"10 / 0"。
第 5 步:状态图(文字版)
- 00:回 00(输出 0),去 01(输出 0);
- 01:回 00(输出 0),去 10(输出 0);
- 10:回 00(输出 0),留在 10(输出 1);
- 11:去 00,去 10(输出 1)。
画图时箭头旁写"",如"1/0""1/1"。
第 6 步:给一串输入模拟(相当于时序图的表格版)
设初态 00,输入序列:
| 第几拍 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | |
| 现态 | 00 | 00 | 01 | 10 | 10 | 10 | 00 | 01 | 10 | 00 | 01 | 10 |
| 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
(米利型输出是"本拍的现态 + 本拍的"算出来的,在时钟沿到来之前读取。)
第 7 步:功能与自启动
状态的含义:00 = "前面没有连续的 1",01 = "已经连续收到 1 个 1",10 = "已经连续收到 2 个或更多 1"。只要就回到 00。
功能:当输入连续出现 3 个或 3 个以上的 1 时,从第 3 个 1 起输出——这是一个**"111"序列检测器**(可重叠检测)。上表第 4、5、12 拍正是这样。
自启动:11 是无效状态,时去 00,时去 10,无论输入是什么都进入有效状态,所以能自启动。
验算:Python 按方程逐拍模拟上述输入序列,在第 4、5、12 拍为 1(14-analysis.py)。
六、怎么一眼看出"功能"
分析题第 (3) 问常让人卡壳。几条经验:
- 数有效循环有几个状态:个状态的循环,基本就是"进制计数器"或"分频器"。
- 看状态是不是按二进制数递增/递减:递增叫加法计数器,递减叫减法计数器;如果每次只变一位(如例 2),可能是格雷码式计数或扭环形计数器。
- 看输出:每循环一周出一个脉冲,通常是进位(或借位)输出。
- 看结构:依次传递的是移位寄存器型电路(第 15 讲)。
- 有输入时:看取不同值时循环是否不同(如加法、减法,叫可控计数器),或者看输出在什么输入序列下为 1(序列检测器)。
- 描述功能要完整:说清"几进制、加法还是减法、同步还是异步、是什么、能否自启动"。
七、真题怎么考:2026 回忆题第 7 题的答题模板
2026 回忆题第 7 题:时序电路分析(D 触发器构成):(1) 驱动(激励)方程、状态方程 (2) 状态转换表/状态转换图 (3) 功能?能否自启动?
拿到图后,按下面的模板写,步骤分一分不丢:
- 驱动方程:,,(写清每个 D 端接的逻辑式,有门的要化成与或式)。
- 状态方程:由 D 触发器特性方程得,,。如果有输出,再写输出方程 。
- 状态转换表:个现态全部列出(有输入时每个输入值都要列),写出次态和输出。
- 状态转换图:画出有效循环和所有无效状态的去向,箭头旁标"输入/输出"。
- 功能:"该电路是同步进制(加法/减法)计数器,为进位输出"之类。
- 自启动:写一句判断依据——"无效状态 ×××、××× 在时钟作用下均能进入有效循环,故电路能自启动",或"无效状态 ××× 与 ××× 构成无效循环,不能进入有效循环,故电路不能自启动"。若题目追问,再给修改方案。
八、易错点汇总 ⚠️
- ⚠️ 状态表漏行:只算有效循环、不算无效状态,自启动就判断不了。个触发器必须列满行。
- ⚠️ "同时更新":同一拍里所有触发器都用现态计算次态,算完再一起换成新状态;不能用刚算出来的去算。
- ⚠️ 状态位的顺序:还是,开头就要写清并一直保持;功能判断(是不是二进制递增)依赖这个顺序。
- ⚠️ JK 电路别忘代特性方程:D 触发器很省事,JK 触发器要代入再化简(见练习 2)。
- ⚠️ CLK 不是输入变量:没有的电路是穆尔型,状态转换图箭头上方不写字。
- ⚠️ 自启动判断看"最终"能否进入:无效状态可以经过几步才进入有效循环(如例 2 修改后 101→010→100),也算能自启动。
- ⚠️ 修改电路后要复查:改反馈逻辑时,有效循环的转换不能被改坏,无关项最终取了什么值也要代回去检查。
速记卡
| 项目 | 要点 |
|---|---|
| 时序电路特征 | 组合电路 + 触发器,触发器输出反馈回去;输出取决于输入和原状态 |
| 三组方程 | 输出方程;驱动方程;状态方程 = 驱动方程代入特性方程 |
| 七步法 | 驱动 → 状态 → 输出 → 状态表(列满)→ 状态图 → 时序图 → 功能与自启动 |
| D 触发器电路 | ,状态方程与驱动方程同式但含义不同 |
| 穆尔 / 米利 | 输出只看状态 / 输出还看输入 |
| 自启动 | 所有无效状态都能在时钟作用下进入有效循环 |
| 不能自启动的标志 | 无效状态自成循环(或停在自身) |
| 修改方法 | ① 改反馈逻辑:卡诺图中给无效状态指定能进入有效循环的次态,有效转换不变;② 开机用异步置零预置(只管开机) |
| 例 1 | ,,:同步五进制加法计数器,能自启动 |
| 例 2 | ,,:六进制,010↔101 无效循环,不能自启动;改后能自启动 |
| 例 3 | ,,:连续三个及以上 1 检测器 |
自测练习
1. 两个上升沿 D 触发器构成同步电路,,。写出状态方程,列出状态转换表(状态写作),说明功能,判断能否自启动。
答案与提示
,。状态表:00→01,01→11,11→10,10→00。4 个状态构成一个循环 00→01→11→10→00,每次只变一位,是四进制计数器(格雷码顺序)。没有无效状态,能自启动。(Python 核对。)
2. 两个下降沿 JK 触发器构成同步电路,,,输出。写出状态方程,列出状态转换表,说明功能。
答案与提示
代入:,。状态表():00→01(Y=0),01→10(Y=0),10→11(Y=0),11→00(Y=1)。是同步两位二进制(四进制)加法计数器,为进位输出;4 个状态全部有效,能自启动。
3.(2026 回忆题第 7 题同类型)三个上升沿 D 触发器构成同步电路:,,,。(1) 写出驱动方程和状态方程;(2) 列出状态转换表,画出状态转换图;(3) 说明功能,判断能否自启动。
答案与提示
(1) 驱动方程如题;状态方程,,;输出。
(2) 状态表( → 次态 / ):000→001/0,001→011/0,010→100/0,011→110/0,100→000/1,101→010/1,110→100/0,111→110/0。
(3) 有效循环 000→001→011→110→100→000,共 5 个状态,每循环一次输出一个脉冲(在 100 时),是同步五进制计数器。无效状态 010→100、101→010→100、111→110,都能进入有效循环,能自启动。(Python 逐状态模拟核对。)
4. 三个上升沿 D 触发器:,,,。说明功能。
答案与提示
状态按依次 000→001→010→011→100→101→110→111→000,是同步三位二进制(八进制)加法计数器,在 111 时为 1,是进位输出。8 个状态都是有效状态,能自启动。
5. 三个上升沿 D 触发器:,,,初态。写出有效循环,判断能否自启动。
答案与提示
、、,数据循环移位。有效循环 001→010→100→001(3 个状态,三进制环形计数器)。无效状态中 000、111 各自停在原地,011→110→101→011 构成另一个循环,都回不到有效循环,不能自启动。
6. 两个上升沿 D 触发器:,,。说明功能,判断能否自启动。
答案与提示
状态表():00→01,01→10,10→00,11→10。有效循环 00→01→10→00,三进制计数器,在 10 时为 1。无效状态 11 一拍后进入 10,能自启动。
7. 例 3 的电路,初态 00,输入依次为 1、1、0、1、1、1、1、0,求每一拍的现态和输出。
答案与提示
现态依次 00、01、10、00、01、10、10、10;依次 0、0、0、0、0、1、1、0。第 6、7 拍分别是连续的第 3、第 4 个 1,输出 1;第 8 拍,输出 0。(Python 核对。)
下一讲预告
第 15 讲:时序电路最简单的"成品"——寄存器和移位寄存器,看数据怎样在触发器之间一拍一拍地挪动,认识双向移位寄存器 74HC194,并预告环形、扭环形计数器。
👉 点击进入下一讲:第15讲|寄存器与移位寄存器
评论
还没有评论。 来写第一条。