6.3 复杂时序电路的设计一、同步时序电路的设计
1.设计步骤
(1)建立原始状态表和状态图原始的含义,是指没有经过简化而获得的状态转移表和状态转移图。
对于 原始状态表 和 状态图 的 要求 是:
保证其绝对的正确性,确保状态无遗漏,
状态转移关系的正确。
时序电路的设计是根据实际提出的逻辑要求,设计出符合逻辑要求的逻辑电路。它是时序电路分析的逆过程。
( 2)状态化简
( 3)状态分配
( 4)电路设计
( 5) 自启动性检查
( 6) 作逻辑电路图 。
问题的提出 抽象 原始状态图化简 最简的状态转移表状态分配电路设计,① 选择 FF
② 获得电路方程强调,这第一步最重要,并且比较难。
2.设计举例例 1:设计一个同步序列电路对输入序列进行检测,当出现 01011时,输出为 1,否则输出为 0。
解:输入,X,输出,Z。
建立原始状态图,
定义状态:
A:起始状态,准备检测。
B:电路收到一个 0;
C:电路连续收到 01;
D:电路连续收到 010;
E:电路连续收到 0101;
F:电路连续收到 01011;准备重新检测
A B C D E
0/0 1/0 0/0 1/0
0/0
1/0
0/0
1/0
0/0
0/0
状态 X/Z检测序列 01011状态转移图
F
1/1
1/0
A:准备;
B,0;
C,01;
D,010;
E,0101;
F,01011。
注意:
① 确定有多少状态来表示所设计的电路,决不能遗漏任何一个可能的状态。
② 当外部输入变量为 n个时,则每个状态有 2n个转移方向。
A B C D E
0/0 1/0 0/0 1/0
0/0
1/0
0/0
1/0
0/0
0/0
F
1/1
1/0
可导出原始状态转移表:
S( t) N( t) Z( t)
X=0 X=1 X=0 X=1
A B A 0 0
B B C 0 0
C D A 0 0
D B E 0 0
E D F 0 1
F B A 0 0
A B C D E
0/0 1/0 0/0 1/0
0/0
1/0
0/0
1/0
0/0
0/0
F
1/1
1/0
化简原始状态表关键:寻找等价状态。什么是等价状态?满足以下两条件:
①在所有输入条件下,两状态对应输出完全相同。
②在所有输入条件下,状态转移也完全相同。
则这两个状态是等价状态可以合并为一个状态。
S( t) N( t) Z( t)
X=0 X=1 X=0 X=1
A B A 0 0
B B C 0 0
C D A 0 0
D B E 0 0
E D F 0 1
F B A 0 0
上例中,A和 F是等价状态,可以合并成一个状态。
A B C D E
0/0 1/0 0/0 1/0
1/1
1/0
0/0
1/0
0/0
0/0
检测序列 01011状态转移图可以修改如下:
X/Z
例 6.3.1 1001序列检测器的功能是每当检测到有序列码 1001输入时,输出为
,1”,其余情况下输出均为,0”。试建立该检测器的原始状态转移图和原始状态转移表 。
解:① 输入变量为 X、输出变量为 Z;
② 状态个数的确定; 1001
初态 (没有序列信号输入时电路的状态)
为 S0,设 X恰为 1001。
S1,电路收到一个 1;
S2,电路收到一个 10;
S3,电路收到一个 100;
S2S3
S1S0 1/0
1/1
0/0
图 6.3.2 例 6.3.1的状态转移图入,1001001…
0/0
0/0 1/0
1/00/0
11…
101…
1000…
出,0001001…
S(t) N(t)/Z(t)X=0 X=1
S0 S0/0 S1/0
S1 S2/0 S1/0
S2 S3/0 S1/0
S3 S0/0 S1/1
表 6.3.1 图 6.3.3的原始状态转移表
1/0
(2)状态化简原始状态图的建立过程,就是问题分析的过程,因此可能引入多余状态 ;而状态数的增加,
就使电路中存储元件和门的数量增加。为使设计的电路简单?经济?方便可靠。就需要对原始状态图进行化简,这一过程称为 状态化简 。在化简前着重 介绍几个概念,
① 等价状态设状态表中的两个现态 A和 B,对任意的输入序列都有相同的输出序列,则称为 A和 B
等价 。
② 等价状态的传递性若 A和 B等价,B和 C等价,则定有 A和 C等价。记作,A ≈ B,B ≈ C?A ≈ C 。
③ 最大等价类等价状态的集合称为 等价类 。
例如,A ≈ B,B ≈ C,A ≈ C 都是等价类。
可写成,( A,B),( B,C),( A,C)
如上述 A,B,C是三个都互相等价的状态,
若再无其它状态与此三个状态等价,则此三个状态的集合为( A,B,C),就是一个 最大等价类。
④ 等价状态的判断判断的方法:
1) 在所有输入条件下,输出和次态完全相同。
则两者等价。
强调,即使是 单个状态,如果它不被其它等价类包含,此单个状态也是一个最大等价类。
( A,B),( B,C),( A,C)
2)在所有输入条件下,输出相同,次态是相互交错,则两者等价。
例如:
相互交错,
3)互为隐含条件例如:
若要 A ≈ C 则 B ≈ D ;
因而可判断( A,C),( B,D)分别等价。
而 B ≈ D 则 A ≈ C,互为隐含条件。
简化方法,利用隐含表进行简化。
a) 画隐含表方法,把原始状态表中的状态纵横依次排列,呈直角三角形网格,两直角边上的网格数为状态数减 1,即,缺头少尾 。垂直边由上向下标明的状态号,缺头,,水平边上由左向右标明的状态号,少尾,,这样的表格称为 隐含表 。
建立了这些基本概念后,下面进行简化。
例 6.3.2 化简原始状态转移表 6.3.2。
解:① 作状态对图
S(t) N(t)/Z(t)X=0 X=1
A C/1 B/0
B C/1 E/0
C B/1 E/0
D D/1 B/1
E D/1 B/1
表 6.3.2 例 6.3.2的原始状态转移表
b)进行顺序比较,作隐含表比较方法,A与 B,A与 C,B与 C;
A与 D,B与 D,C与 D ;
A与 E,B与 E,C与 E,D与 E 。
A B C D
E
D
C
B
图 6.3.4 (a)
原始状态转移表② 进行顺序比较,
作隐含表
BE
A B C D
E
D
C
B
BEBC √

× ×
× × ×
×
S(t) N(t)/Z(t)X=0 X=1
A C/1 B/0
B C/1 E/0
C B/1 E/0
D D/1 B/1
E D/1 B/1
图 6.3.4 (b)
说明:,√” 表示等价,,×,表示不等价。
③ 再 进行比较
④ 列出等价类
( B,C),( D,E)
⑤ 列出最大等价类。
A,( B,C),
( D,E)

×
×
图 6.3.4 (c)令,A? a ;
(B,C)? b ;
(D,E)? d 。
BE
A B C D
E
D
C
B
BEBC √

× ×
× × ×
×
⑥ 进行状态合并,列出最简状态转移表
S(t) N(t)/Z(t)X=0 X=1
a b/1 b/0
b b/1 d/0
d d/1 b/1
表 6.3.5 最简状态转移表
S(t) N(t)/Z(t)X=0 X=1
A C/1 B/0
B C/1 E/0
C B/1 E/0
D D/1 B/1
E D/1 B/1
令,A? a ;
(B,C)? b ;
(D,E)? d 。
c) 状态编码(状态分配)
所谓 状态分配,就是给简化了的状态分配一个二进制代码,以便于用记忆电路来表示时序电路的内部状态。
在工程上比较具有实用价值的方法为相邻法:
尽可能使次态方程和输出函数在卡诺图上,1”的分布为逻辑相邻,以便于化简。
三个原则,(优先权由高到低)
具有相同次态的现态。如上例的 c和 d
同一现态的各个次态。如上例的 ab,ac,ad
具有相同输出的现态。如 abc,可任取两两相邻,
ab,bc,ac。
S( t) N( t) /Z( t)
X=0 X=1
a a/0 b/0
b a/0 c/0
c a/0 d/0
d a/0 d/1
0 1 0 1
0 a b 0 a d
1 d c 1 b c
所以优先考虑相邻的状态的次序为:
cd?ad?ab或 ac?其它编码后的二进制状态转移表为:
S( t)
N( t) /Z( t)
X=0 X=1
00 00/0 01/0
01 00/0 11/0
11 00/0 10/0
10 00/0 10/1
最后,确定触发器类型,求激励函数和输出方程。
1、按顺序编码
2、按 Gray码
3、独热编码 (One hot)或称为每态一位。
在实际使用中,人们常采用以下三种方法:
例 6.3.3 对表 6.3.6进行状态编码。
S(t)
N(t)/Z(t)
X=0 X=1
A A/0 B/0
B A/0 C/0
C A/0 D/0
D A/0 D/1
表 6.3.6 例 6.3.3的状态转移表解,①由状态数 M确定代码位数 n=2
② 状态编码令,A→00,B →01,C →11,D →10 。
③ 作二进制状态转移表
S(t) N(t)/Z(t)X=0 X=1
0 0 00/0 01/0
0 1 00/0 11/0
1 1 00/0 10/0
1 0 00/0 10/1
表 6.3.7 例 6.3.3的二进制状态转移表
d) 电路设计
① 选定触发器类型。
② 根据二进制状态转移表(或称编码后的状态转移表)设计各触发器的激励函数和电路的输出函数。
例 6.3.4 设二进制状态转移表如表 6.3.8所示,试设计实现该表功能的同步时序电路。
解,① 选定触发器类型。
选用两位 DFF进行设计
② 根据二进制状态转移表(或称编码后的状态转移表)设计各触发器的激励函数和电路的输出函数。
表 6.3.18 例 6.3.4的二进制状态转移表
0
1
0
Q2 Q1
01/000/01
01/100/00
10/000/00
X=1X=0
Q2 Q1 / Zn n n+1 n+1
0
1
0
Q2 Q1
01/000/01
01/100/00
10/000/00
X=1X=0
Q2 Q1 / Zn n n+1 n+1
检查自启动:
11→00
11→01
电路能自启动
0
1
0
Q2 Q1
01/000/01
01/100/00
10/000/00
X=1X=0
Q2 Q1 / Zn n n+1 n+1
选用两位 JKFF进行设计
0
1
0
Q2 Q1
01/000/01
01/100/00
10/000/00
X=1X=0
Q2 Q1 / Zn n n+1 n+1
检查自启动:
11→00
11→01
电路能自启动
K2=1 K1=X
K2=1 K1=X
例一,设计一个序列信号检测器,电路要求连续输入 4个,1”时,输出为 1,并且状态可以 重叠 。
由设计要求可知,待设计电路应有一个输入端 X,一个输出端 Z。
解释,1111111·· ·· 11111111·· ··
0001111·· ·· 00010001·· ··
可以重叠 √ 不可以重叠解,(1)建立原始状态图分析,设 A:初始状态 ;
B:记忆第一个有效输入 1;
C:记忆第二个有效输入 11;
D:记忆第三个有效输入 111;
E:记忆第四个有效输入 1111。
1/0A0/0 B 1/0
0/0
C
1/0
D0/0
E 1/1
0/0
1/1
0/0
( 2)作原始状态转移表
( 3)画隐含表
( 4)顺序比较
( 5)再比较
AB,AC,BC不等价
0/0
( 6)列出最大等价类
A,B,C,( D,E)
↓ ↓ ↓ ↓
令,a b c d
( 7)进行状态合并,列出最简状态转移表
A→a,B →b,C→c,(D,E)→d
( 8)状态编码 (或称为状态分配)
( 9)电路设计
Z=XQ2Q1
Z=XQ2Q1
例二:设计一个序列信号检测器,电路要求连续输入 4个,1”时,输出为 1,并且状态可以 不重叠 。
解释,1111111·· ·· 11111111·· ··
0001111·· ·· 00010001·· ··
可以重叠 不可以重叠 √
解,(1)建立原始状态图分析,设 A:初始状态 ;
B:记忆第一个有效输入 1;
C:记忆第二个有效输入 11;
D:记忆第三个有效输入 111;
E:记忆第四个有效输入 1111。
分析,设 A:初始状态 ;
B:记忆第一个有效输入 1;
C:记忆第二个有效输入 11;
D:记忆第三个有效输入 111;
E:记忆第四个有效输入 1111。
A0/0 B1/0 C1/0
D
1/0
0/0
0/0
E 1/1
0/0
1/0
0/0
( 2)作原始状态转移表
( 3)画隐含表
( 4)顺序比较
( 5)再比较
AB,AC,BC,BE,CE不等价。
( 6)列出最大等价类
B,C,D,( A,E)
( 7)进行状态合并,
列出最简状态转移表
↓ ↓ ↓ ↓
令,b c d a
( 7)进行状态合并,列出最简状态转移表
(A,E)→a,B →b,C→c,D→d,
( 8)状态编码 (或称为状态分配)
( 9)电路设计
Z=XQ2Q1
Z=XQ2Q1
例一:序列检测器,要求检测器连续收到 1110010
一组串行码时,输出为,1”,否则为,0”。
解,序列检测器在数据通信、雷达和遥测等领域中用于检测同步识别标志。它是一种用来检测一组或多组序列信号的电路。
根据题意序列检测器具有一个输入信号 Xi
和时钟信号 CLK,一个输出检测标志 Z。其结构框图如下图所示:
解,(1)建立原始状态图分析,设 A:初始状态 ;
B:记忆第一个有效输入 1;
C:记忆第二个有效输入 11;
D:记忆第三个有效输入 111;
E:记忆第四个有效输入 1110;
F:记忆第五个有效输入 11100;
G:记忆第六个有效输入 111001;
H:记忆第七个有效输入 1110010;
A/0
状态 /输出
0
B/01
0
C/01
0
D/01
1
E/0
01
F/0 0G/0 1
0
H/1 0
110
1110010
( 2)作原始状态转移表
( 3)画隐含表
( 4)顺序比较
BC
BD CD
AE
AF
BG CG DG
× × × × × ×
√ CB DB AF BG ×
( 5)再比较
( 6)列出最大等价类
(A,H) B C D E F G
↓ ↓ ↓ ↓ ↓ ↓ ↓
令,a b c d e f g
( 7)进行状态合并,列出最简状态转移表
( 8)状态编码 (或称为状态分配)
a→000,b →001,c →010,d →011,e →100,
f →101,g →110
电路省略作业,6.2,6,3