第 7章 时序逻辑设计原理 (四 )
数字逻辑设计及应用
锁存器和触发器
同步时序分析
同步时序设计
7.4 时钟同步状态机设计
根据命题构造状态 /输出表
状态化简(状态最小化)
状态编码(选择状态变量)
建立转移 /输出表,得到状态和输出方程
选择触发器作为状态存储器
构造激励表,得到激励方程
画逻辑电路图同步时钟状态机设计举例
设计入门,两个简单的例子
设计一个 3位二进制模 8计数器?
设计一个 110序列检测器?
状态表设计举例
例一 ( P408) ; 例二 ( P419) ; 例三 ( P421)
状态图设计(雷鸟车尾灯?)
猜谜游戏?
1、逻辑抽象,得到状态图(表)
2、状态编码取自然二进制数 000~111
作为 S0 ~ S7 的编码对时钟信号计数,可不用输入
—— Moore机取进位信号为输出变量需要 8个有效状态设计一个 3位二进制模 8计数器
S0/0 S1/0
S3/0
S4/0
S2/0
S5/0
S7/1
S6/0
000
111
110
101
001
010
011
100
3,构造转移 /输出表,求取 状态转移方程和 输出方程
S0/0 S1/0
S3/0
S4/0
S2/0
S5/0
S7/1
S6/0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Q2 Q1 Q0 Q2*Q1*Q0* C
S0
S1
S2
S3
S4
S5
S6
S7
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 0
0
0
0
0
0
0
0
1
000
111
110
101
001
010
011
100
0
1
Q1Q0
Q2
Q0*
00 01 11 10
1 0 0 1
1 0 0 1
3,构造转移 /输出表,求取 状态转移方程和 输出方程
Q0* = Q0’
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Q2 Q1 Q0 Q2*Q1*Q0* C
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 0
0
0
0
0
0
0
0
1
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 0
0
0
0
0
0
0
0
1
Q2 Q1 Q0 Q2*Q1*Q0* C
0
1
Q1Q0
Q2
Q1*
00 01 11 10
0 1 0 1
0 1 0 1
Q0* = Q0’
Q1* = Q1’·Q0 + Q1·Q 0’
3,构造转移 /输出表,求取 状态转移方程和 输出方程
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 0
0
0
0
0
0
0
0
1
Q2 Q1 Q0 Q2*Q1*Q0* C Q
0* = Q0’
输出方程,C = Q3· Q2·Q1
Q1* = Q1’·Q0 + Q1·Q 0’
0
1
Q1Q0
Q2
Q2*
00 01 11 10
0 0 1 0
1 1 0 1
Q2* = Q2’·Q1·Q 0 +
Q2·Q 1’ + Q2·Q 0’
3,构造转移 /输出表,求取 状态转移方程和 输出方程
Q0* = Q0’
Q1* = Q1’·Q0 + Q1·Q 0’
Q2* = Q2’·Q1·Q 0 + Q2·Q 1’ + Q2·Q 0’
4、触发器选型,得到激励方程翻转 Q* = Q’( T触发器)Q* = EN·Q’ + EN’·Q
’· ·Q
= Q2’·Q1·Q 0 + Q2· (Q1’+Q0’)
= Q2’·Q1·Q 0 + Q2· (Q1·Q 0’)’
EN1 = Q0
EN2 = Q1·Q0
EN0 = 1
选择有使能端的 T触发器
5、画逻辑电路图
EN0 = 1
EN1 = Q0
EN2 = Q1·Q0
C = Q3· Q2·Q1
1
CLK
Q0
Q1
Q2
C
1、得到状态转换表用 A表示输入数据;用 Z表示检测结果。
开始,等待第一个 1? STA STA/0 A1/0
A上捕获一个 1? A1 STA/0 A11/0
A上连续捕获 11? A11 OK/1 A11/0
A上连续捕获 110? OK STA/0 A1/0
设计一个 110串行数据检测器状态 S A0 1
S*/Z
电路检测到输入连续出现 110时,输出为 1
Mealy机
1、得到状态转换表
STA STA/0 A1/0
A1 STA/0 A11/0
A11 OK/1 A11/0
OK STA/0 A1/0
状态 S A0 1
S*/Z
2、状态化简
(状态最小化)
识别 等效状态,如果两个状态
对于所有输入组合产生相同的输出
对于每种输入组合具有同或等效的下一状态
STA/1
S*/Z
3、状态编码
00
01
10
00
01
11
00
01
10
0
Q1Q0
00 01 11 10
0
1
A
0 1
0 0 0
d
d
Z
00/0
Q1Q0
00 01 11 10
0
1
A
00/0 00/1
01/0 10/0 10/0
dd/d
dd/d
4、得到状态方程和输出方程
STA STA/0 A1/0
A1 STA/0 A11/0
A11 STA/1 A11/0
状态 S A0 1
S*/Z
00/0
Q1Q0
00 01 11 10
0
1
A
00/0 00/1
01/0 10/0 10/0
dd/d
dd/d
4、得到状态方程和输出方程
0
Q1Q0
00 01 11 10
0
1
A
0 1
0 0 0
d
d
Z
Z = A’·Q1
0
Q1Q0
00 01 11 10
0
1
A
0 0
0 1 1
d
d
Q1*
Q1* = A·Q1 + A·Q0
0
Q1Q0
00 01 11 10
0
1
A
0 0
1 0 0
d
d
Q0*
Q0* = A·Q1’·Q0’
选择 D触发器
5、得到激励方程
Q1* = A·Q1 + A·Q0
Q0* = A·Q1’·Q0’
D1 = A·Q1 + A·Q0
D0 = A·Q1’·Q0’
选择 J-K触发器
Q* = J·Q’ + K’·Q
= (A·Q1’)·Q 0’ + 1’·Q0
= A·Q1 + A·Q0 ·(Q1+Q1’)
= A·Q1 + A·Q0 ·Q 1 + A·Q0·Q 1’
= A·Q 1 + A·Q0·Q 1’
J1 = A·Q0
K1 = A’
J0 = A·Q1’
K0 = 1
6、检查电路的自启动性当电路进入无效状态 11后,
A=0时,
该电路是自启动的
Z = A’·Q1
Q1* = A·Q1 + A·Q0
Q0* = A·Q1’·Q0’ 7、画逻辑电路图(略)
下一状态为 00
A=1时,下一状态为 10 1/011
0/1
00
0/0
01
1/0
0/0
10
1/0
1/0
0/1
状态表状态表设计(例一)
设计一个具有 2个输入( A,B),1个输出( Z) 的时钟同步状态机,Z为 1的条件是:
在前 2个脉冲触发沿上,A的值相同
从上一次第 1个条件为真起,B的值一直为 1
P408
S
AB
00 01 11 10
S*
Z
状态含义初始状态? INIT 0A0 A0 A1 A1
A0A上捕获一个 0?
A上捕获一个 1? A1
0OK0 OK0
A上连续两个 0? OK0
A1 A1
0A0 A0 OK1
A上连续两个 1? OK1
OK1
1OK0 OK0 OK1B A1
因 B而 OK,A为 1?OK1B
1A0 OK0B OK1 OK1
因 B而 OK,A为 0?OK0B
1A0 OK0B OK1 OK1
1OK0 OK0 OK1B A1
1、构造状态转换表
S
AB
00 01 11 10
S*
Z
状态含义
1、构造状态转换表初始状态? INIT 0A0 A0 A1 A1
A0A上捕获一个 0?
A上捕获一个 1? A1
0OK0 OK0
A上连续两个 0? OK0
A1 A1
0A0 A0 OK1
A上连续两个 1? OK1
OK1
1OK0 OK0 OK1B A1
因 B而 OK,A为 1?OK1B
1A0 OK0B OK1 OK1
因 B而 OK,A为 0?OK0B
1A0 OK0B OK1 OK1
1OK0 OK0 OK1B A1
2、状态最小化
K1
K1
OK0
OK0
OK,A值为 0
OK,A值为 0
OK,A值为 1
初始状态? INIT
A0A上捕获一个 0?
A上捕获一个 1? A1
OK,A值为 0? OK0
OK,A值为 1? OK1
S
AB
00 01 11 10
S*
Z
0A0 A0 A1 A1
0OK0 OK0 A1 A1
0A0 A0 OK1 OK1
1OK0 OK0 A1
1A0 OK1 OK1OK0
OK1
1、构造状态转换表
2、状态最小化真的需要一一尝试吗? 合理的状态赋值 ( P412)
3、状态编码最简单的 分解的 单热点的 准单热点的从 23中选 5种一共有 种8!5!× 3!
5种编码?5个状态,又有 5!种
000
100
101
110
111
4、根据状态表和状态编码构造转移 /输出表
INIT
A0
A1
OK0
OK1
S
AB
00 01 11 10
S*
Z
0A0 A0 A1 A1
0OK0 OK0 A1 A1
0A0 A0 OK1 OK1
1OK0 OK0 A1
1A0 OK1 OK1OK0
OK1
000
100
100 100
100 100
100
101
110
101 101
101 101
101
110 110
110 110
110111
111 111
111 111
111
Q1Q2Q3
Q1*Q2*Q3*
5个输入变量,
A,B,Q1,Q2,Q3
4个输出变量,
Z,D1,D2,D3
D1 D2 D
转移 /激励表
5、触发器选型,得到激励方程和输出方程使用 D触发器
AB
00 01 11 10 Z
0
0
0
1
1
000
100
101
110
111
Q1Q2Q3
100 100
100 100
100
101 101
101 101110 110
110 110 101
110
111 111
111 111
111
Q1*Q2*Q3*D1 D2 D3
Q2Q3
AB
00 01 11 10
00
01
11
10Q1=0
D2
Q2Q3
AB
00 01 11 10
00
01
11
10Q1=1
0 0 0 0
1 1 0 0
0 0 1 1
0 1 1 1
1 1 1 0
0 0 0 0
0 0 0 0
0 0 0 0
最小冒险,未用状态?初始状态输出方程,Z = Q1·Q2
Q2Q3
AB
00 01 11 10
00
01
11
10Q1=0
D2
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
最小冒险,未用状态?初始状态
Q2Q3
AB
00 01 11 10
00
01
11
10Q1=1
1 1 0 0
0 0 1 1
0 1 1 1
1 1 1 0
D2 = Q1·Q3’·A’ + Q1·Q3·A
+ Q1·Q2·B
Q2Q3
AB
00 01 11 10
00
01
11
10Q1=0
D2
0 0 0 0
d d d d
d d d d
d d d d
最小成本,未用状态作为无关项
D2 = Q1·Q3’·A’ + Q3·A+ Q2·B
D1
D2 = Q1·Q3’·A’ + Q1·Q3·A + Q1·Q2·B
D1 =Q2’·Q3’ + Q1
思考:最小成本法 D1=?
D3
D3 = Q2’·Q3’·A+ Q1·A
D2 = Q1·Q3’·A’ + Q1·Q3·A + Q1·Q2·B
D1 = Q2’·Q3’ + Q1
激励方程
A +
思考:最小成本法 D3=?
6、画逻辑电路图(略)
D3 = Q2’·Q3’·A+ Q1·A
D2 = Q1·Q3’·A’ + Q1·Q3·A + Q1·Q2·B
D1 = Q2’·Q3’ + Q1
激励方程
A +
输出方程,Z = Q1·Q2
说明:
最小冒险法所有未用状态?“安全,状态 ( P415图 7-52 )
最小成本法所有未用状态的下一状态作为无关项电路的激励方程简单,不够安全( P416图 7-53)
用 J-K触发器设计
方法一利用状态方程和触发器特征方程得到激励方程
方法二利用状态转移表和激励表得到激励方程激励表
Q Q*
0 0
0 1
1 0
1 1
J K
0 d
1 d
d 1
d 0
J K Q
0 0
0 1
1 0
1 1
保持清 0
置 1
翻转功能表
J-K触发器特征方程,Q* = J·Q’+ K’·Q
利用状态方程和特征方程设计
Q1* = Q2’·Q3’ + Q1
= Q2’·Q3’·(Q1’+Q1)+ Q1
= Q2’·Q3’·Q1’+ Q2’·Q3’·Q1 + Q1
= Q2’·Q3’·Q1’ + Q1
Q3* = Q2’·Q3’·A + Q1·A
Q2* = Q1·Q3’·A’ + Q1·Q3·A + Q1·Q2·B
Q1* = Q2’·Q3’ + Q1
状态方程
J1 = Q2’·Q3’
K1 = 0
J-K触发器特征方程,Q* = J·Q’+ K’·Q
利用状态方程和特征方程设计
Q3* = Q2’·Q3’·A + Q1·A
Q2* = Q1·Q3’·A’ + Q1·Q3·A + Q1·Q2·B
Q1* = Q2’·Q3’ + Q1
状态方程
Q3* = Q2’·Q3’·A + Q1·A
= Q2’·Q3’·A + Q1·A·(Q3’+Q3)
= (Q2’·A + Q1·A)·Q3’+ Q1·A·Q3
J3 = Q2’·A + Q1·A
K3 = Q1’ + A
J1 = Q2’·Q3’
K1 = 0
Q2* = Q1·Q3’·A’ + Q1·Q3·A + Q1·Q2·B
= (Q1·Q3’·A’ + Q1·Q3·A)·(Q2’+Q2)+ Q1·Q2·B
= (Q1·Q3’·A’ + Q1·Q3·A)·Q2’
+ (Q1·Q3’·A’ + Q1·Q3·A + Q1·B)·Q2
K2 = (Q1·Q3’·A’ + Q1·Q3·A + Q1·B)’
= (Q1’+Q3+A)·(Q1’+Q3’+A’)·(Q1’+B’)
= Q1’ + Q3’·A·B’ + Q3·A’·B’
J2 = Q1·Q3’·A’ + Q1·Q3·A
K2 = Q1’ + Q3’·A·B’ + Q3·A’·B’
J1 = Q2’·Q3’
K1 = 0
J3 = Q2’·A + Q1·A
K3 = Q1·A
AB
00 01 11 10 Z
0
0
0
1
1
000
100
100 100
100 100
100
101
110
101 101
101 101
101
110 110
110 110
110111
111 111
111 111
111
Q1Q2Q3
Q1*Q2*Q3*J1K1,J2K2,J3K3
1d,0d,0d 1d,0d,0d 1d,0d,1d 1d,0d,1d
d0,1d,0d d0,1d,0d d0,0d,1d d0,0d,1d
d0,0d,d1 d0,0d,d1 d0,1d,d0 d0,1d,d0
d0,d0,0d d0,d0,0d d0,d0,1d d0,d1,1d
d0,d1,d1 d0,d0,d1 d0,d0,d0 d0,d0,d0
利用激励表进行 J-K触发器设计
AB
00 01 11 10 Z
0
0
0
1
1
000
100
100 100
100 100
100
101
110
101 101
101 101
101
110 110
110 110
110111
111 111
111 111
111
Q1Q2Q3
Q1*Q2*Q3*J1K1,J2K2,J3K3
1d,0d,0d 1d,0d,0d 1d,0d,1d 1d,0d,1d
d0,1d,0d d0,1d,0d d0,0d,1d d0,0d,1d
d0,0d,d1 d0,0d,d1 d0,1d,d0 d0,1d,d0
d0,d0,0d d0,d0,0d d0,d0,1d d0,d1,1d
d0,d1,d1 d0,d0,d1 d0,d0,d0 d0,d0,d0
利用卡诺图化简,教材 P418
合理的状态赋值
选择复位时容易进入的状态作为初始状态
使每次转移时要发生改变的状态变量数最小化
使一组相关状态中不变化的状态变量数最大化
发现和利用问题描述中的 对称性
将状态变量组 分解 为有明确含义的位或字段,相对于状态机的输入效果或者输出特性
可以使用多余最小值的状态变量数(便于分解)
未用状态的考虑例二:,1” 计数器 ( P419)
对两个输入 X和 Y同时计数,当 1的个数为 4的整数倍时输出为 1
1起始状态? S0 S0
XY
00 01 11 10 Z含义 S
S*
S1
收到一个 1? S1
S2
收到两个 1? S2
S1
0S1 S2 S3
收到三个 1? S3
S2
0S2 S3 S0 S3
S3 S0 S1 S0 0
00
01
11
10
雷鸟车尾灯
LALBLC RA RB RC
输入:左转 L,右转 R,应急闪烁 H( hazard),时钟输出:控制 6个灯亮或灭
——可以完全由状态控制
IDLE,全灭
L1,左边 1个灯亮
L2,左边 2个灯亮
L3,左边 3个灯亮
R1,右边 1个灯亮
R2,右边 2个灯亮
R3,右边 3个灯亮
LR3,全亮状态输 出直接利用状态控制输出
1、构造状态图
IDLE,全灭
L1,左边 1个灯亮
L2,左边 2个灯亮
L3,左边 3个灯亮
R1,右边 1个灯亮
R2,右边 2个灯亮
R3,右边 3个灯亮
LR3,全亮
IDLE
L1
L
L2
1
L3
1
1
R1
R
R2
1
R3
1
1
LR3H
1
H’·L’·R’ H+L·R
L·H’·R’
R·H’·L’
无二义性的
IDLE
L1
L
L2
1
L3
1
1
R1
R
R2
1
R3
1
1
LR3H
1
H’·L’·R’ H+L·R
L·H’·R’
R·H’·L’
1、构造状态图完备性离开某一状态的弧线上的所有转移表达式的逻辑和为 1。
无二义性的 H’·R’
H+R
H+RH’·R’
H’·L’ H’·L’
H+L
H+L
改进互斥性离开某一状态的弧线上的任意一对转移表达式的逻辑积为 0
2、状态编码
Q2Q1Q0
0 0 0
0 0 1
0 1 1
0 1 0
1 0 1
1 1 1
1 1 0
1 0 0
1、构造状态图
IDLE
L1
L2
L3
R1
R2
R3
LR3
合理的状态赋值
3、得到转移列表 P427
2、状态编码
1、构造状态图
3、得到转移列表 P427
H’·L’·R’
L·H’·R’
R·H’·L’
0 0 0
0 0 0
0 0 0
0 0 0 H+L·R
0 0 0
0 0 1
1 0 1
1 0 0
IDLE
Q2Q1Q0 S 转移表达式 S* Q2*Q1*Q0*
IDLE
L1
R1
LR3
Q2Q1Q0 S 转移表达式 S* Q2*Q1*Q0*
H’·L’·R’
L·H’·R’
R·H’·L’
H+L·R
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 1
1 0 1
1 0 0
IDLE
IDLE
L1
R1
LR3
L10 0 10 0 1 L2LR3 0 1 11 0 0H’·R’H+R
L20 1 10 1 1 L3LR3 0 1 01 0 0H’·R’H+R
L30 1 0 IDLE 0 0 01
R11 0 11 0 1 R2LR3 1 1 11 0 0H’·L’H+L
R21 1 11 1 1 R3LR3 1 1 01 0 0H’·L’H+L
R31 1 0 IDLE 0 0 01
LR31 0 0 IDLE 0 0 01
Q0* =
Q2’·Q1’·Q0’·(L·H’·R’)
+ Q2’·Q1’·Q0’·(R·H’·L’)
+ Q2’·Q1’·Q0·(H’·R’)
+ Q2·Q1’·Q0·(H’·L’)
= Q2’·Q1’·Q0’· H’·(L?R)
+ Q2’·Q1’·Q0·(H’·R’)
+ Q2·Q1’·Q0·(H’·L’)
用转移表综合状态机 P428
猜谜游戏机( P430)
4个灯( G1~ G4) 由时钟控制轮流亮起如果按下的按钮( L1~ L4) 与亮的灯对应,则猜对否则,ERR灯亮,表示猜错
输入,G1,G2,G3,G4( 4个按钮)
输出,L1,L2,L3,L4,ERR( 5个灯)
状态,6个,S1~ S4对应 L1~ L4
Serr对应 ERR; SOK表示猜对
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
4个灯( G1~ G4)
由时钟控制轮流亮起
(没有按钮按下)
S1
L1=1
S4
L4=1
S2
L2=1
S3
L3=1
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
S1
L1=1
S4
L4=1
S2
L2=1
S3
L3=1
如果按下的按钮与亮的灯对应,
则猜对( SOK)
SOK
G1·G2’·G3’·G4’
G1’·G2·G3’·G4’
G1’·G2’·G3·G4’
G1’·G2’·G3’·G4
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
S1
L1=1
S4
L4=1
S2
L2=1
S3
L3=1
SOK
G1·G2’·G3’·G4’
G1’·G2·G3’·G4’
G1’·G2’·G3·G4’
G1’·G2’·G3’·G4
否则猜错( Serr)
Serr
ERR=1
G2+G3+G4
G1+G3+G4
G1+G2+G4
G1+G2+G3
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
G1’·G2’·G3’·G4’
S1
L1=1
S4
L4=1
S2
L2=1
S3
L3=1
SOK
G1·G2’·G3’·G4’
G1’·G2·G3’·G4’
G1’·G2’·G3·G4’
G1’·G2’·G3’·G4
Serr
ERR=1
G2+G3+G4
G1+G3+G4
G1+G2+G4
G1+G2+G3
G1+G2+
G3+G4
G1’·G2’·G3’·G4’G1’·G2’·G3’·G4’
G1+G2+
G3+G4
状态转换图
1、状态转换图
2、状态编码
3、转移列表状态
S
编码
Q2Q1Q0
S1
S2
S3
S4
SOK
SERR
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 0
0 0 0 0 1
1 X X X X
0 1 X X X
0 0 1 X X
0 0 0 1 X
0 0 0 0 0
0 0 0 0 1
用输出作为状态编码
L1 L2 L3 L4 ERR
无关项的使用
L1 L2 L3 L4 ERR
P432
表 7-18
P433表 7-19 P434表 7-21
第 7章作业( P468)
7.3
7.5
7.9 7.10
7.13
7.14
7.16
7.18
7.20(c)
7.27
7.28
7.32
7.34
7.38
7.47
7.49