时序逻辑电路

官方工学老师·24 页·深入(追求细节与边界)·0 次浏览·2 天前
触发器状态机时序分析HDL设计

时序逻辑电路

从锁存器内部到状态机设计,掌握时序电路完整方法论

按 空格/→ 演示下一步

1 / 24 页

全部页面点击任意一页,跳回舞台从这页播放

触发器状态机时序分析HDL设计

时序逻辑电路

从锁存器内部到状态机设计,掌握时序电路完整方法论

1第 1 页 · 时序逻辑电路

组合逻辑 vs 时序逻辑

时序和组合名字只差一个字,本质却天差地别——一个记得住过去,一个只看得见当下输入。

组合逻辑
  • 输出仅由当前输入决定
  • 不需要时钟信号
  • 基本元件是与、或、非门
  • 无记忆,过去输入不影响现在
时序逻辑
  • 输出由输入和当前状态共同决定
  • 依赖时钟边沿同步更新
  • 基本元件是触发器、寄存器
  • 有记忆,能保存历史状态
核心区别是「有没有存储状态」——需要记住过去就用时序逻辑,只要当下条件判断就用组合逻辑;实际电路中两者常嵌套使用。
2第 2 页 · 组合逻辑 vs 时序逻辑

时序电路的基本结构

上一页我们看到,时序电路和组合电路最大的差别是——它有「记忆」。那这个「记忆」到底从哪儿来?为什么加上记忆之后,电路行为就完全变了?答案就在它的三个组成部分里。

组合逻辑
根据当前输入与当前状态算出输出,是电路的「决策中心」
存储元件
通常由触发器或锁存器构成,负责把状态从 t 时刻带到 t+1 时刻
反馈回路
把存储的状态送回组合逻辑的输入端,构成闭环,让「过去」影响「现在」
投币式自动售货机对应 →时序电路

投币总额被记住(存储),每次投币累加(反馈),金额足够才出货(组合逻辑判断)

s[t+1]=f(x[t], s[t])s[t+1] = f\big(x[t],\ s[t]\big)
3第 3 页 · 时序电路的基本结构

存储元件:触发器

左右两个稳态;实线为触发切换,虚线自环表示无输入时状态自保持——这正是'存储'的来源。

图解渲染中…
A稳定态0:Q=0、Q'=1;输入不变时无限停留B稳定态1:Q=1、Q'=0;与稳态0互补,Q 与 Q' 恒相反
4第 4 页 · 存储元件:触发器

时序电路的描述方法

上页画出了时序电路的结构——组合逻辑加触发器。但工程师不能只靠看图,他们需要几组代数方程来精确刻画「输入怎样决定下一步」,就像物理定律要用公式表达一样。

输出方程
Y = F(X, Qⁿ),Mealy 型含输入 X,Moore 型只取决于现态 Qⁿ
驱动方程
Z = G(X, Qⁿ),给出触发器各输入端激励信号的取值表达式
状态方程
Qⁿ⁺¹ = H(Z, Qⁿ),把驱动信号代入触发器特性方程得到次态
方程组的因果链
X、Qⁿ 经组合逻辑同时产生 Z 与 Y;Z 再驱动触发器跳到 Qⁿ⁺¹
自动售货机对应 →时序电路三组方程

投币(X)+ 当前库存(Qⁿ)→ 出货找零(Y)、推杆电机信号(Z)→ 库存更新为 Qⁿ⁺¹

Y=F(X,Qn),  Z=G(X,Qn),  Qn+1=H(Z,Qn)Y = F(X, Q^n),\; Z = G(X, Q^n),\; Q^{n+1} = H(Z, Q^n)
5第 5 页 · 时序电路的描述方法

状态表与状态图

从方程到表格到图形的映射

状态表与状态图
从方程到表格到图形的映射
6第 6 页 · 状态表与状态图

时序图分析方法

沿时间轴看四个信号的先后——输入D、时钟CLK、状态Q、输出Y,谁先动谁后动。

图解渲染中…
C时钟CLK,上升沿是触发时刻D数据输入,须满足建立时间tsuQ触发器在↑沿锁存的当前状态Y由当前状态经组合逻辑产生的输出
7第 7 页 · 时序图分析方法

同步时序电路分析实例

python

用 30 行 Python 完整跑一遍「方程→表→图→时序」四步分析。

代码高亮加载中…

代码骨架严格对应分析的四步:先用 D 表达式把电路写成函数,再穷举现态得到状态表,再把 (现态→次态) 装进字典画状态图,最后逐拍仿真得到波形。

8第 8 页 · 同步时序电路分析实例

寄存器的电路特点

上页说单个触发器只能存 1 比特。要存一个字节(8 位)、一个字(32 位)怎么办?把多个触发器并排放在一起,让它们步调一致地工作——这就是寄存器的构造思路。

触发器阵列
N 个触发器一字排开,每个存 1 位,合起来即 N 位存储单元
共享时钟
所有触发器接同一时钟沿,保证 N 位在同一瞬间同步锁存
公共控制
清零、使能等控制信号一并接到每一位,集体动作
并行存取
N 位数据同时输入、同时输出,不串行、不分时
酒店保险柜一整面墙对应 →寄存器

每个小格子=1 个触发器存 1 比特,整面墙共享一把总钥匙(时钟),一刷卡所有格子同时打开

9第 9 页 · 寄存器的电路特点

移位寄存器 vs 并行寄存器

都叫"寄存器",但数据吞吐方式截然不同——一个按位串行流动,一个整组并行搬运。

移位寄存器
  • 数据输入:串行输入,按时钟逐位进入
  • 数据输出:串行输出,按时钟依次移出
  • 结构:触发器级联,前级驱动后级移位
  • 场景:UART串口、序列检测、信号延时
并行寄存器
  • 数据输入:并行输入,所有位同时进入
  • 数据输出:并行输出,所有位同时可用
  • 结构:多路D触发器,共用同一时钟锁存
  • 场景:数据缓冲、总线接口、CPU寄存器
逐位处理或省I/O引脚→移位;整组快速存取→并行。混淆源于名字都带"寄存器",本质是两种存储范式。
10第 10 页 · 移位寄存器 vs 并行寄存器

寄存器的典型应用

寄存器不只是存放数据,它在数字系统里有四种典型用武之地。

1
数据存储
时钟上升沿锁存输入,是寄存器最朴素也最常用的功能
2
移位操作
每个脉冲数据左移或右移一位,实现序列延迟或位运算
3
串并转换
串行输入逐位移入,并行端口一次读出 N 位
4
复合应用
多组寄存器级联构成计数器、累加器、FIFO 等模块
11第 11 页 · 寄存器的典型应用

计数器的逻辑功能

寄存器能存一组比特,但如果让这组比特每来一个时钟就按固定规律自动变化——比如加 1——它就变成了计数器。计数器设计的核心就两个问题:状态怎么编码、状态怎么循环。

模 M
计数器循环一周经过的状态总数,决定计数范围
自然二进制编码
按 0、1、2…M−1 顺序给每个状态编号,最直观
状态循环
所有有效状态按编码顺序形成单向闭环,末态下一拍回到初态
编码 → 电路
不同编码下,求次态的组合逻辑复杂度可以差很多
自启动
上电后无论落在哪个无效态,都能在若干拍内进入有效循环
钟表表盘对应 →模 12 计数器的状态循环

12 个刻度顺时针走一圈,从 12 直接跳回 1 而不是 13——模运算最直观的物理模型

Sn+1=(Sn+1)modMS_{n+1} = (S_n + 1) \bmod M
12第 12 页 · 计数器的逻辑功能

同步计数器电路结构

中心是组合逻辑,外围是触发器;同一时钟并行驱动所有触发器,避免串行进位延迟。

图解渲染中…
COMB由现态Q算出每个触发器的T控制信号CLK公共时钟边沿,所有FF同步被触发S0FF0的Q端,即计数器当前计数位
13第 13 页 · 同步计数器电路结构

同步计数器设计方法

verilog

Verilog 实现:3 位同步计数器,把状态图翻译成 D 触发器电路

代码高亮加载中…

D0..D2 正是 K 图化简后的次态方程;三只 D 触发器在同一时钟沿采样,这就是「同步」的电路含义。

14第 14 页 · 同步计数器设计方法

任意进制计数器构成

两种把二进制计数器"截断"成 M 进制计数器的工程做法,区别在于如何处理越界态。

1
选定基础计数器
M 进制至少需要 n=⌈log₂M⌉ 位二进制计数器做底盘
2
清零法·识别越界态
状态 M 对应的二进制码是触发清零的探针,不是有效态
3
清零法·异步清零
组合逻辑检出 M 立即送 CLR,M 态仅闪现一拍即归 0
4
置数法·识别并跳过
到达 M 前用 LOAD 把计数器强制置回初值,不进越界态
5
两法差异与边界
清零法电路简洁但有毛刺,置数法起跳点可任意指定
15第 15 页 · 任意进制计数器构成

同步时序电路设计流程

从状态表出发到画出电路,标准流程浓缩在这四步。

1
状态化简
合并等价状态,把冗余状态砍掉,从源头压电路规模
2
状态编码
为每个状态分配二进制码,选得巧能直接简化后续方程
3
求方程
用卡诺图化简得到触发器驱动方程和输出方程
4
画电路
用触发器和门电路把方程连线实现,并检自启动
16第 16 页 · 同步时序电路设计流程

设计实例:模5计数器

verilog

用Verilog实现模5同步计数器:3位状态、5个有效态、计数到S4后归零。

代码高亮加载中…

模5 = 计数到S4后归零,其余状态顺序加1。这是把状态表直接翻译成always块——状态转移的代码落地。

17第 17 页 · 设计实例:模5计数器

状态化简方法

设计模5计数器时,原始状态表里常藏着冗余——两个状态行为完全一样却各占一格。怎么挑出可以合并的?这就要请出'等价状态'这把筛子。

等价状态定义
对所有可能的输入序列,两状态产生的输出序列完全相同
判定准则
同输入输出相同,且下一状态也等价——这是递归条件
隐含表法
方格表逐对检查,先排除不等价对,再传递推出等价对
传递性边界
若A≡B且B≡C则A≡C;合并时一组等价状态一起归并
班里两个表现完全一致的同学对应 →等价状态

每次考试同分、回答同、未来走向也可预测相同——外部根本分不出来

AB    X: λ(A,X)=λ(B,X)δ(A,X)δ(B,X)A \equiv B \iff \forall X:\ \lambda(A,X)=\lambda(B,X) \land \delta(A,X)\equiv\delta(B,X)
18第 18 页 · 状态化简方法

同步 vs 异步时序电路

同步靠统一时钟协调,异步靠信号传递——设计哲学截然不同

同步时序电路
  • 所有触发器共用一个时钟
  • 状态在同一节拍同步翻转
  • 基本无竞争冒险问题
  • 速度受限于最慢组合路径
异步时序电路
  • 无统一时钟,靠信号链传递
  • 状态翻转有先后延迟
  • 易产生竞争与冒险
  • 速度可能更快但设计复杂
工程上首选同步;异步仅用于特殊高速场景且需严控冒险
19第 19 页 · 同步 vs 异步时序电路

异步计数器电路结构

异步计数器(行波计数器)的级联结构:外部时钟只接第一级,后续各级时钟来自前级输出,信号逐级传递。

图解渲染中…
A外部时钟源,仅接入第一级FF0G每级触发器的传播延时tpdCFF1的CP端接FF0的Q0输出
20第 20 页 · 异步计数器电路结构

异步计数器时序分析

沿箭头追踪时钟在异步计数器中的级联延迟,看单级 Δt 如何累积成译码毛刺与竞争冒险。

图解渲染中…
n2FF0 由外部 CLK 直接驱动,翻转延迟 Δtn3FF1 以 Q0 为时钟,额外 Δt,累计 2Δtn4FF2 以 Q1 为时钟,再 Δt,累计 3Δtn6输出经过非预期中间态,产生窄脉冲
21第 21 页 · 异步计数器时序分析

异步计数器应用

异步计数器的分频、测量、时序控制三类应用,背后其实是同一条信号链:高频时钟逐级降频后送入系统。

1
确定分频比
先算清目标频率是输入时钟的几分之一,这一步决定要串几级触发器。
2
级联触发器
每级 T 触发器实现二分频,前后级用前级输出当下级时钟,逐级降频。
3
选择输出位
不同位输出对应 2、4、8… 倍分频,按需抽头,无需额外组合逻辑。
4
接入测控系统
分频信号可作测量闸门、节拍时钟或控制序列的触发源。
22第 22 页 · 异步计数器应用

核心概念自测

点击作答

下列关于时序逻辑电路的描述,哪一项最准确地揭示了其与组合逻辑电路的本质区别?

23第 23 页 · 核心概念自测

课后思考

先合上 PPT 自己想,再点开答案对照思路,不必追求唯一解。

1触发器不工作时,'记忆'靠什么物理机制维持?

参考答案靠正反馈。Q 与 Q̄ 交叉耦合,输入撤掉后反馈回路把状态'锁'住,直到下一次有效时钟沿到来。

2实际电路中,时钟毛刺为什么会让同步计数器状态错乱?

参考答案毛刺达到阈值后被当成有效时钟沿,触发寄存器翻转;组合逻辑输出瞬间变化,可能被下一级误采样,状态机就此错位。

3异步计数器在所有场景都能被同步方案取代吗?

参考答案不一定。超高速分频、低功耗待机等场景,异步结构更省门、更省功耗;同步位数多时门数爆炸,未必划算。

24第 24 页 · 课后思考