第 14 讲:时序逻辑电路的分析与设计
组合电路只回答“现在输入什么”,时序电路还要回答“过去走到了什么状态”。所以时序题的核心不是多画一个触发器,而是把状态引入逻辑函数。
时序电路的统一模型
设外部输入为 ,当前状态为 ,触发器的激励为 ,输出为 ,则一个时序电路可以写成三组方程:
第一式是输出方程,第二式是激励(驱动)方程,第三式由所用触发器的特性方程给出。把第二式代入第三式,才得到真正的状态方程。
同步与异步
- 同步时序电路:所有触发器受同一个时钟控制,状态在同一有效沿更新;
- 异步时序电路:各触发器不一定共用时钟,有些触发器由前一级输出触发,状态变化会逐级传播。
同步电路容易按离散时刻分析;异步计数器结构简单,但中间状态和累计延迟不能忽略。
Moore 与 Mealy
- Moore 型:,输出只由状态决定,通常较稳定;
- Mealy 型:,输入一变,输出可能在时钟沿之前就变,响应快但更容易出现毛刺。
状态图标注也不同:Mealy 常在边上写 输入/输出,Moore 常把输出写进状态节点。
描述同一电路的五种语言
- 电路图告诉你器件怎样连接;
- 方程告诉你组合逻辑怎样算;
- 状态表枚举每个“现态 + 输入”对应的次态和输出;
- 状态图把转移关系画成有向图;
- 时序图沿着时钟逐拍展开真实变化。
它们不是五套知识,而是同一个对象的五种表示。考试最常见的要求,就是把一种表示翻译成另一种。
分析一张同步电路图
固定流程如下:
- 先确认触发器类型和有效时钟沿;
- 从组合逻辑写输出方程、各触发器激励方程;
- 代入 、 或 触发器特性方程,求 ;
- 枚举现态和输入,列状态表;
- 画状态图和必要的时序图;
- 识别计数模数、序列检测等外部功能;
- 把未用状态也代入,判断是否能自启动。
一个最小例子
若 D 触发器满足
则
状态表为:
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
当 时保持;当 时翻转。输出只有在输入和原状态都为 1 时才为 1。这一步已经足够画出 Mealy 状态图。
计数器与“自启动”
一个三位状态机共有 个编码。若只设计六进制计数循环,仍有两个未用状态。
所谓自启动,是指电路即使因为上电、干扰等原因落入未用状态,也能在有限个时钟后回到有效循环。检查方法非常机械:
- 保留化简时未用项所对应的实际逻辑;
- 分别把每个未用状态代入状态方程;
- 沿次态继续走;
- 能进入有效循环则可自启动,否则形成无效循环。
不要只看设计表里的六个有效状态就宣布“六进制计数器设计完成”。
从要求设计同步时序电路
分析和设计方向相反:
- 把自然语言要求变成原始状态图;
- 合并等价状态;
- 给状态编码;
- 列次态、输出表;
- 选择触发器,用激励表求 、 或 ;
- 用 Karnaugh 图化简驱动方程和输出方程;
- 画电路;
- 校验完整输入序列与自启动。
状态数与触发器数
若化简后有 个状态,需要的触发器数 满足
状态编码会直接改变最终逻辑复杂度。相邻编码通常有利于 Karnaugh 化简,但“自然二进制顺序”不一定总是最优。
等价状态
两个状态可以合并,至少要满足:
- 对每一种相同输入,它们的输出相同;
- 对每一种相同输入,它们转向同一状态,或转向一对仍然等价的状态。
只因为两个圆圈“看起来作用相近”就合并,会改变机器行为。
异步计数器怎样分析
异步电路不能假设所有位同时更新。应先写每个触发器自己的时钟方程,再按真实触发顺序追踪状态。
例如低位触发器由外部 CP 驱动,高位触发器由低位输出驱动,那么一个外部时钟沿可能先改变低位,传播延迟后才改变高位。示波器上短暂出现的中间码并不是“算错”,而是异步结构的物理结果。
最容易丢分的地方
- 激励方程和状态方程混为一谈;
- 忘记 、 触发器还要结合现态;
- Mealy 状态图边上的输入、输出顺序写反;
- 状态编码后漏掉未用状态;
- 用 Karnaugh 图的无关项化得很简,却不检查自启动;
- 异步计数器仍按“全体同沿更新”计算;
- 时序图没有标清初态和有效沿。
真正稳妥的做法,是让“方程 → 表 → 图 → 波形”互相复核。任何两种表示对不上,都说明前面有一步出了问题。