--- 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 触发器并联、共享同一个时钟**——这就是寄存器。 ![4 位寄存器(4 个 D 触发器并联)](assets/register_4bit.png) - **4bit 寄存器**:D0~~D3 并行输入,时钟上升沿一起存入 Q0~~Q3,可再添加 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 节(寄存器)