一、例题
设计一个时序逻辑电路用来检测01110序列,电路有一个输入x和输出z, 当输入序列中包含01110时,输出z=1,否则z=0。典型的输入和输出序列如下:
输入x:1 0 1 1 1 0 1 1 1 0 1 0
输出z:0 0 0 0 0 1 0 0 0 1 0 0
二、思路
1.按照序列画状态图
状态图用于描述电路在不同输入下的状态转移逻辑,需根据目标序列 01110 拆解状态
-
状态定义:
-
A:初始状态 / 未匹配任何前缀;
-
B:已匹配前缀 “0”;
-
C:已匹配前缀 “01”;
-
D:已匹配前缀 “011”;
-
E:已匹配前缀 “0111”;
-
当输入完整序列 “01110” 时,从 E 状态转移到 B 并输出 1。
-
-
状态转移逻辑:
-
状态 A:输入 0→转 B,输入 1→保持 A;
-
状态 B:输入 0→保持 B,输入 1→转 C;
-
状态 C:输入 0→转 B,输入 1→转 D;
-
状态 D:输入 0→转 B,输入 1→转 E;
-
状态 E:输入 0→转 B(匹配完整序列,输出 1),输入 1→转 E;
-
-
输出逻辑:仅当状态从 E 接收 0 时,输出 z=1,其余情况 z=0。
2.按照000-100给A-E编码,画出状态表
按要求用 3 位二进制码(000-100)对状态 A-E 编码:
-
状态编码:
-
A:000(初始状态)
-
B:001
-
C:010
-
D:011
-
E:100
-
3.写出次态方程(利用激励方程卡诺图找到对应每个触发器的输入)
写出方程后再具体根据何种触发器写激励方程
三、总结
通过状态机记录输入序列历史信息,利用时序逻辑电路的状态转移特性实现特定模式检测