06-时序逻辑电路与状态机.md 8.3 KB


tags: [数电] type: note source_type: reconstructed created: 2026-08-15 updated: 2026-08-18

aliases: [时序逻辑, 计数器, 寄存器, 状态机, 移位寄存器]

时序逻辑电路与状态机

[!note] 对象层 学完这篇,你能判断

  1. 时序逻辑 vs 组合逻辑(记忆元件存在与否);
  2. 同步时序 vs 异步时序(时钟是否共用一个);
  3. 计数器芯片(74LS160/161/90)如何级联实现任意进制;
  4. 从状态图/状态表读懂一个状态机在干什么(序列检测器)。

用生活理解:时序电路 = 组合电路 + 记忆。它像"计步器"——每走一步(时钟沿)才更新一次,当前状态取决于历史。状态机则是"有剧本的机器人":每收到一个输入,按剧本(状态图)从当前状态跳到下一个状态。计数器是"自动加一"的状态机,寄存器是"排队存档"的状态机。


一、一句话本质

时序逻辑电路包含存储元件(触发器),输出是"当前输入 + 历史状态"的函数;按结构分同步/异步,按模型分米利(输出看输入)/摩尔(输出只看状态);分析工具是状态表/状态图/时序图。


二、速查表(公式与结论)

2.1 同步 vs 异步

维度 同步时序 异步时序
时钟 所有触发器共用同一个 CLK 触发器各用各的时钟(前级输出驱动后级)
速度/可靠性 状态同时更新,无累积时延,可靠 存在级间延迟(行波),速度慢、易毛刺
工程选择 默认首选 仅简单场合(如 74LS90 内部)

2.2 米利(Mealy)vs 摩尔(Moore)

模型 输出依赖 特点
米利 当前状态 + 当前输入 响应快,但输入变化立即影响输出(可能有毛刺)
摩尔 仅当前状态 输出稳定一个时钟周期,与输入无关,更可靠

2.3 常用计数器芯片

芯片 功能 级联/注意
74LS160 同步十进制计数器(0~9) 进位输出 RCO
74LS161 同步四位二进制计数器(0~15) 可预置数(同步置数)
74LS90 异步二-五-十进制计数器 内部两段,B 接 A 组成十进制
74LS194 四位双向移位寄存器 左移/右移/并行置数/保持

2.4 任意进制计数器的两种构成法

  • 清零法(异步):计数到 N 时用译码电路立刻清零 → 从 0 到 N−1 循环,但清零有毛刺;
  • 置数法(同步):计数到 N−1 时下一个时钟预置初值(如 0)→ 无毛刺,工程首选。

例:用 74LS161 构成 0~9 十进制:计数到 1001(9) 时"同步置 0"(LOAD'=0)。

2.5 同步时序电路分析步骤

  1. 写激励方程(各触发器输入表达式);
  2. 代入特性方程 → 状态方程;
  3. 列状态表 → 画状态图;
  4. 画时序图(波形)验证。

三、判别规则

  1. 时序 vs 组合:含触发器/锁存器/反馈 = 时序;纯门电路 = 组合。
  2. 同步 vs 异步:所有 CLK 引脚连同一网络 → 同步;连到别的触发器输出 → 异步。
  3. 进制判定:看"模"——计数器循环的状态数(0~14 循环 = 模 15)。
  4. 清零 vs 置数:清零法是"到 N 立即归零"(可能闪一下 N);置数法是"在 N−1 时预置"(不出现 N)→ 判别电路里到底用哪个。

四、易混对比

易混点 A 易混点 B 关键区别
同步计数 异步计数 同步所有位同一时钟同时翻转;异步前级进位驱动后级(行波)
计数器 寄存器 计数器按模循环递增/递减;寄存器只存不移(移位寄存器另说)
移位寄存器 计数器 移位寄存器把数据逐位移入移出(串行);计数器产生序列(计数)
米利输出 摩尔输出 米利=状态+输入;摩尔=只状态。时序图上摩尔输出变化只在状态转移后

五、典型例题(先想再翻)

  1. 分析:两个 74LS161 级联,进位 RCO 接高位 ENP,构成多少进制? > 答:16×16 = 256 进制(两片级联相乘)。
  2. 设计:用 74LS161 构成 12 进制计数器。 > 答:同步置数法:Q3Q2Q1Q0=1011(11) 时 LOAD'=0,预置 0000 → 0~11 循环。清零法:计数到 1100(12) 时清零(会出现 12 的毛刺)。
  3. 陷阱题:同学说"异步清零法没有毛刺,因为清零瞬间就完成了"。 > 答:错。异步清零存在竞争(清零信号与时钟竞争),可能产生毛刺或漏计;工程上优先用同步置数法。

六、完整知识点

6.1 寄存器与移位寄存器

  • 74LS194:4 位双向移位,S1S0 控制模式(00 保持/01 右移/10 左移/11 并行置数);
  • 应用:串并转换(UART 就是移位寄存器)、乘法器移位累加、键盘扫描。

6.2 计数器的"使能-进位"链

级联关键:低位的 RCO(进位输出)→ 高位的 ENP/ENT(使能)。ENP 高、ENT 高且计满 15 时 RCO 才输出一个时钟周期的高 → 高位同步加 1。

6.3 状态机(FSM)设计入门

  1. 定义状态(用格雷码/独热码编码);
  2. 画状态转移图(每个状态:输入条件 → 下一状态/输出);
  3. 写状态表 → 用 D 触发器 + 组合逻辑实现;
  4. 现代工程:用 Verilog/VHDL 描述,EDA 工具综合——概念完全一致,只是实现语言变了。

6.4 序列检测器(经典例子)

检测"101"序列:需要 4 个状态(S0 无输入、S1 收到 1、S2 收到 10、S3 收到 101 输出 1 并回退)。它能体现状态机"如何用有限状态记住无限序列",是面试与课程设计常客。

6.5 分频器(工程高频应用)

T 触发器=二分频;多个分频器级联 → 任意分频。STM32 时钟树(PLL、分频)原理相同——一个晶振 8MHz,内部分频到 72MHz 主频再分频给外设

6.6 寄存器 = 多个 D 触发器并联(Digital 动手,尚硅谷补充)

D 触发器只能存 1 bit;要存多位就多个 D 触发器并联、共享同一个时钟——这就是寄存器。

  • 4bit 寄存器:D0D3 并行输入,时钟上升沿一起存入 Q0Q3,可再添加 en 使能信号控制"何时写";
  • 直接用"组件→存储器"里的寄存器即可(不必再画触发器阵列);
  • PC 计数器(程序计数器)= 寄存器 + 加法器:加法器把寄存器输出 +1 再写回寄存器,每个时钟上升沿自动加 1 → 这正是 [[10-从零搭建计算机(上)-组成与算力|数电 10]] 里 CPU 逐条取指令的地址来源(详见 [[11-从零搭建计算机(下)-控制与指令|数电 11]])。

结论:本课"寄存器是排队存档的状态机"落地到电路就是"一组共享时钟的 D 触发器";移位寄存器则让数据在 D 触发器间"传递"(串并转换、UART 的地基)。


七、与 PCB 画图的关联

  • 晶振 → 分频 → 时钟树:看 STM32 原理图上的时钟引脚(OSC_IN/OSC_OUT)与外部晶振电路(对应 [[PCB学习笔记/09-项目实战-51单片机核心板|PCB 笔记 09]])。
  • 复位电路/上电时序:计数器与复位芯片保证芯片按序启动。
  • 数码管动态扫描(计数器+选择器)是 51 核心板典型电路。
  • 看门狗、定时器 → 计数器概念([[PCB学习笔记/09-项目实战-51单片机核心板|PCB 笔记 09]] 与 STM32 学习笔记 Watchdog)。

来源:阎石《数字电子技术基础》第 5 章(时序逻辑电路)、第 6 章(中规模时序电路);尚硅谷《从零搭建计算机》第 1.3.6 节(寄存器)