第五章 同步时序逻辑电路
5,1 概述
5,1,1 时序逻辑电路结构
时序电路由组合电路和存储电路组成。其输出不仅取决于当时的输
入,还与过去的状态有关 。
x1 Z1
xn Z
m
ys … y1 Y1 … Yr
组合电路
存储电路
时钟 CP
:,图中,x1 ~ xn 为时序电路输入
信号,又称组合电路外部输入。 Z1
~ Zm 为时序电路输出信号,又称组
合电路外部输出。 y1 ~ ys 为时序电
路的,状态” 信号,又称组合电
路内部输入。 Y1 ~Yr为时序电路激
励信号,又称组合电路内部输出。
某一时刻的状态称为,现态”,记作 y,某一现态下随外部信号变
化而即将到达的状态称为,次态”,记作 y(n+1)。
5,1,2 时序电路分类
1,按电路工作方式划分
同步 (Synchronous)时序电路 ——存储电路由带时钟控制的触发器组
成,电路状态的改变由系统统一时钟控制 。时钟到来前的状态为,现
态”,时钟到来后的状态为,次态”。
异步 (Asynchronous)时序电路 ——存储电路由触发器和延时元件组
成,时序电路中状态的改变不受统一时钟的控制,输入的变化将直接导
致输出的变化 。
2,按输出与输入的关系划分
若电路输出与输入和状态有直接关系,称为 Mealy 型时序逻辑电路。
若时序电路输出仅与状态有直接关系,称为 Moore 型时序逻辑电路。
3,按输入信号形式划分
根据输入信号的形式可分为脉冲类型和电平类型。
5,1,3 同步时序逻辑电路描述方法
描述同步时序电路时,除采用函数表达式、真值表和卡诺图外,还
采用状态表、状态图和时间图加以描述。
1,逻辑函数表达式
⑴ 输出函数表达式
反映电路输出 Z 与输入 x 和状态 y 之间的关系。
对 Mealy 型,函数表达式为,Zi = fi ( x1…xn,y1 …ys ) i=1…m
对 Moore 型,函数表达式为,Zi = fi ( y1 …ys ) i=1…m
⑵ 激励函数表达式
反映存储电路输入 Y 与输入 x 和状态 y 之间的关系。
Yj = gj ( x1…xn,y1 …ys ) i=1…m
5,1,3 同步时序逻辑电路描述方法
⑶ 次态函数表达式
反映电路的次态 y(n+1) 与激励函数 Y 和电路现态 y 的关系
y(n+1) = kl ( Yj,yi )
2,状态表
反映时序电路输出 Z、次态和电路输入 x、现态 y 之间关系的表格。
3,状态图
反映同步时序电路状态转换规律及相应输入、输出取值关系的有向
图。圆圈表示状态,有向线段表示状态转换关系,箭头起点为现态,终
点为次态。
4,时间图
用波形图表示输入信号、输出信号和电路状态等的取值在各时刻的
对应关系。
5,2 同步时序逻辑电路分析
5,2,1 同步时序逻辑电路分析方法与步骤
1,表格分析方法与步骤
⑴ 根据给定的同步时序电路,写出输出函数和激励函数表达式。
⑵ 列出电路状态真值表,根据输入和状态在各种取值下的激励函
数值及触发器功能表,确定电路状态。
⑶ 根据状态真值表和输出函数表达式,作出电路状态表和状态图。
⑷ 拟定一典型输入序列,画出时间图。
2,代数分析方法与步骤
⑴ 根据给定的同步时序电路,写出输出函数和激励函数表达式。
⑵ 将激励函数表达式代入触发器次态方程,导出电路次态方程图。
⑶ 根据次态方程和输出函数表达式作出状态表,画出状态图。
⑷ 拟定一典型输入序列画出时间图,并用文字描述电路逻辑功能。
5,2,2 实例分析
例 1:用表格法分析图中的同步时
序逻辑电路
⑴ 电路输出即为状态 (Moore 型 ),
激励表达式为:
⑵ 列出电路次态真值表
⑶ 做出状态表,画出
状态图。
状态表
12211 yxKJ1KJ ?????,
输入 现态 激励函数 次态
x y2 y1 J2 K2 J1 K1 y2(n+1) y1(n+1)
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
0
1
0
0
1
1
0
1
0
1
0
1
0
现态 次态 y2(n+1) y1(n+1)
y2 y1 x = 0 x = 1
0
0
1
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
0
1
1
0
1
0
0 0 0 0 1 1 1 1
0 0 1 1 1 0 0 1
0 1 0 1 0 1 0 1
5,2,2 分析实例
⑷ 用时间图和文字描述电路的逻辑功能 x0
00 01
1
0 1 1 0
1
11 10
0
从状态表和状态图中可看出,两个触发
器组成一个 2 位二进制可逆计数器。
x = 0 时,在 CP 脉冲后沿触发下,计数
器加 1 计数,计数序列为 00→ 01→ 10→ 11。
x = 1 时,在 CP 脉冲后沿触发下,计数
器减 1 计数。计数序列为 00→ 11→ 10→ 01。
CP
x
y2
y1
5,2,2 分析实例
例 2:用代数法分析图中
的同步时序逻辑电路
解:该实例输出仅与电路
状态有关,属 Moore 型。
存储电路由三个 D 触发
器组成,激励函数表达式为:
次态方程组为:
123 yyyZ ???
xyTyyTyyT 11122233 ??????,,
1122221n2 yyyyTyy ??????? )(
2233331n3 yyyyTyy ??????? )(
xxyyTyy 11111n1 ??????? )(
5,2,2 分析实例
从状态表中可知,该电路
为向左移位寄存器。当 x = 0
时,每来一个脉冲 CP,数据
左移,右边补 0;当 x = 1 时,
每来一个脉冲 CP,数据左移,
右边补 1。
另外,当寄存器中 1 的个
数为奇数时,Z = 1;寄存器中
1 的个数为奇数时,Z = 0。
现态 次态 y3(n+1) y2(n+1)
y1(n+1)
输出
y3 y2 y1 x = 0 x = 1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
0
1
1
0
1
0
0
1
状态表
5,3 同步时序逻辑电路设计
根据特定的逻辑要求,设计实现其逻辑功能的时序逻辑电路。设计
步骤如下:
⑴ 形成原始状态图和原始状态表。
根据功能要求及输入、输出和状态的关系,形成原始状态图和原始
状态表。
⑵ 状态简化
对原始状态表进行简化,消去多余状态,求得最小化状态表。
⑶ 状态编码
将状态表中用字母标注的每个状态用二进制代码表示。
⑷ 确定激励函数和输出函数表达式。
先列出激励函数和输出函数表达式,再求出最简表达式。
⑸ 画出逻辑电路图
5,3,1 建立原始状态图和原始状态表
设计原始状态图和原始状态表时应考虑以下几点。
1.确定电路模型
时序电路有 Mealy 和 Moore 两种类型,不同模型对应的电路结构也
不同,应根据问题中信号形式、电路器件等综合考虑。
2.设立初始状态
时序逻辑电路在输入信号作用之前的状态称为初始状态。
3.根据需要记忆的信息增加新的状态
状态数目的多少取决于需要记忆和区分的信息量。在某个状态下出
现输入信号时若可用已有状态表示,则转向已有状态。仅当无法用已有
状态表示时转向新的状态。
4.确定每个时刻电路的输出
在 Moore 型电路中,应指明每种状态下对应的输出,在 Mealy 型电
路中,应指明从每个状态出发,在不同输入作用下的输出值。
5,3,1 建立原始状态图和原始状态表
例 1:模 5 加 1 和加 2 计数器有一个输入 x 和输出 Z。 x = 0 时加 1,
x = 1 时加 2,计满 5 个状态后 Z = 1 产生进位输出。
现态 次态 / 输出 Zx = 0 x = 1
0
1
2
3
4
1 / 0
2 / 0
3 / 0
4 / 0
0 / 1
2 / 0
3 / 0
4 / 0
0 / 1
1 / 0
1/0
0/0
解:该电路输出与输入和状态均有关,属
于 Moore 型电路。
计数器 5 个状态分别为 0 ~ 4,0 为初态。
根据题意可建立原始状态图和原始状态表。
例 2:某同步时序电路检测串行输入 8421
码,输入顺序为先低位后高位,当出现非法
数字(数值大于 9)时电路输出 1。电路有一
个输入 x 和一个输出 Z。
解:该电路输出与状态和输入相关,属于
Mealy 型电路。
假定起始状态为 A,第一位代码到来时,
有 0,1 两种可能,用 B,C 状态表示。
0
0/1 0/0
4 1
0/0 1/1 1/0 0/0
3 2
5,3,1 建立原始状态图和原始状态表
在状态 B,C,第二位代码到来,也有 0,1 两种可能,用 D,E,F、
G 状态表示。
在状态 D,E,F,G,第三位代码到来,又有 0,1 两种可能,用 H、
I,J,K,L,M,N,P 状态表示。
当第四位代码到来时,一组 8421 码全部接收。对编码进行判断,
若出现非法数字,Z=1,否则为 0,并返回起始状态 A。
据此可作出状态图和状态表如下。
原始状态图,A
0/0 1/0
B C
0/0 1/0 0/0 1/0
D E F G
0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0
H I J K L M N P
0/0 0/0 0/0 0/0 0/0 0/1 0/1 0/1
1/0 1/0 1/0 1/0 1/0 1/1 1/1 1/1
5,3,1 建立原始状态图和原始状态表
原始状态表:
从图中和表中可看出,当电路处于非 M,N,P
状态时,下一位信号到来后,无论为 0 或为 1,输
出均为 0;当电路处于 M,N,P 状态时,下一位信
号到来后,无论为 0 或为 1,输出均为 1。
到达 M 状态时已接收前三位代码为 101,则
101× 大于 9,属非法数字;到达 N 状态时已接收
前三位代码为 110,则 110× 大于 9,属非法数字;
到达 M 状态时已接收前三位代码为 111,则 111×
大于 9,属非法数字。
该例用 Moore 型电路也可实现(见 P149),但
Moore 型电路状态数较多,状态转换也较复杂。可
见选择一个较好的电路类型可降低设计难度。
现态 次态 / 输出x = 0 x = 1
A
B
C
D
E
F
G
H
I
J
K
L
M
N
P
B/O
D/0
F/0
H/0
J/0
L/0
N/0
A/0
A/0
A/0
A/0
A/0
A/1
A/1
A/1
C/0
E/0
G/0
I/0
K/0
M/0
P/0
A/0
A/0
A/0
A/0
A/0
A/1
A/1
A/1
5,3,2 状态化简
为降低电路设计的复杂性和电路成本,对初始状态要进行简化,尽
可能使描述设计要求的状态数达到最少。
状态化简常用方法是隐含表法,化简时,对完全确定原始状态表和
不完全确定原始状态表引用不同概念,处理方法也不同。
1.完全确定原始状态表的化简
⑴ 等效状态和等效类
等效状态,设 Si,Sj 为两个原始状态,当它们满足以下条件时等效。
① 输出相同
② 它们的次态属于下列情况之一
A.次态相同。 Si,Sj 的次态均为 Sk
B.次态交错或为各自的现态。 交错,Si 的次态 为 Sj, Sj 的次态 为
Si 。 为各自的现态,或 Si 的次态 为 Si,Sj 的次态 为 Sj 。
5,3,2 状态化简
C.次态循环或为等效对。次态循环,S1,S2 在某种取值下次态为
S3,S4,在相同取值下 S3,S4 的次态为 S1,S2。等效对,S1,S2 在某种
取值下次态为 S3,S4,若 S3,S4 等效,则 S1, S2 等效。
等效具有传递性,若 S1,S2 等效,S2,S3 等效,则 S1,S3 等效,记
作 (S1,S2 ),(S2,S3 ) → (S1,S3 )。
等效类,由若干等效状态构成的集合。等效类中任意两个状态均等
效。若存在关系,(S1,S2 ),(S2,S3 ) → (S1,S3 ),则 S1,S2,S3 属于
同一等效类。 记作 (S1,S2 ),(S2,S3 ) → | S1,S2,S3 |。
最大等效类,一个等效类不是其他等效类的子集,则该等效类为最
大等效类。
利用上述判别状态等效及状态等效的性质,可进行状态简化。
简化过程:寻找最大等效类,将每个最大等效类的所有状态合并为
一个新的状态 。简化后的状态数等于最大等效类的个数。
5,3,2 状态化简
⑵ 利用隐含表进行状态化简
状态化简的步骤为:作隐含表,寻找等效对、求出最大等效类、作
出最小化状态表。
① 作隐含表
隐含表为直角三角型网格,表中的方格用状态名称标注。横向从左
到右的状态顺序依次为第一个到倒数第二个状态,纵向从上到下的状态
顺序为第二到最后一个状态。每个方格代表一个状态对。
② 寻找等效对
进行两轮比较,先进行顺序比较,再进行关联比较。
顺序比较,对照原始状态表,对所有状态进行检查比较。若状态对
等效,在方格中打, √, ;若不等效,在方格中打, ×,;与其他状
态对相关,有待进一步检查,在方格中填上待检查状态对。
关联比较,确定待检查状态对是否等效,由此确定原状态对是否等
效。若方格内有一状态对不等效,则用, /,标志。
5,3,2 状态化简
③ 求出最大等效类
利用等效状态的传递性,通过合并求出最大等效类。原始状态表中
的每个状态都应该属于一个最大等效对。
④ 作出最小化状态表
将每个最大等效类中的全部状态合并为一个状态,可得与原始状态
表等价的最小化状态表。
例:化简以下状态表
现态 次态 / 输出
x = 0 x = 1
A
B
C
D
E
F
G
C / 0
F / 0
F / 0
D / 0
C / 0
C / 0
C / 1
B / 1
A / 1
G / 0
E / 0
E / 1
G / 0
D / 0
B CF
C × ×
D × × ×
E BE × ×
F × × √ ×
×
G × × × ×
×
AE CF
CDDE
对表中状态进行顺
序比较,根据等效状态
判别标准进行判别。
状态 C,F 输出相
同,x = 0 时次态交错,
x = 1 时次态相同,故
C,F 为等效对,在相应方格中打, √,。
5,3,2 状态化简
状态 A,F 不满足等效条件,在相应方格中打, ×,。状态 A,E
满足输出相同条件,当 x = 0 时次态相同,但当 x = 1 时次态分别为 B、
E,当前尚无法判定 B,E 是否等效,因此在方格中填入 BE … 。
经比较后,还有 A,B,A,E,B,E,D,G 共 4 个状态对尚未确
定是否等效,因此应进行关联比较。
状态 A,B 对应的方格中次态对为 C,F,由顺序比较已知 C,F 等
效,故 A,B 等效,在对应的方格中打, √,。 。
检查 A,E 状态对,出现循环关系,AE→ BE→ CF。已知 C,F 等
效,故 B,E 等效。 BE 又与 AE 构成循环,故 A,E 等效,在对应的方
格中打, √,。
状态 D,G 对应的方格中次态对为 CD 和 DE,由顺序比较已知 C、
D 不等效,故 D,G 不等效,在相应方格中打, /, 。
由造出的隐含表可知,7 个状态共有 4 个等效对 ( A,B ),( A,E )、
( B,E ),( C,F )。
5,3,2 状态化简
由所得 4 个等效对可知,( A,B )、
( A,E ),( B,E ) 构成最大等效类 { A,
B,E }。 ( C,F ) 不包含在其他等效类
中,也是一个最大等效类。状态 D,G
不和其他状态等效,故各自构成最大等
效类。
原始状态表中 7 个状态构成 4 个最
大等效类,分别为:
B √
C × ×
D × × ×
E √ √ × ×
F × × √ ×
×
G × × × / ×
×
A B C D E F现态 次态 / 输出
x = 0 x = 1
a
b
c
d
b / 0
b / 0
c / 1
d / 1
a / 1
d / 0
a / 0
c / 0
{ A,B,E },{ C,F },{ D },{ G }
a b c d
将 4 个最大等效类分别用 a,b,c,d 表示,
代入原始状态表,可得化简后的最小化状态表。
5,3,2 状态化简
2.不完全确定状态表的化简
在状态表中存在不确定的次态或输出,这种状态表称为不完全确定
状态表。为确保化简后的逻辑功能不变,需引入新概念 ——相容状态。
⑴ 相容状态和相容类
相容状态, 设 Si,Sj 为两个原始状态,当它们满足以下条件时相容。
① 输出相同,或其中一个或两个输出不确定。
② 它们的次态属于下列情况之一
次态相同,次态交错或为各自的现态,次态循环或为相容对
相容状态不具有传递性 。
相容类,由若干相容状态构成的集合。相容类中任意两个状态均相
容。若有相容对 (S1,S2 ),(S2,S3 ),(S1,S3 ),则可构成相容类 { S1、
S2,S3 }。
5,3,2 状态化简
最大相容类,一个相容类不是其他相容类的子集,则该相容类为最
大相容类。由于相容状态无传递性,故同一原始状态表的各最大相容类
中可能存在相同状态,即同一状态可能存在不同的最大相容类中。
⑵ 不完全确定状态表的化简
化简方式与完全确定状态表方式相似,但处理环节稍有不同。
① 做隐含表,寻找相容状态对
② 利用状态合并图,找出最大相容类
状态合并图将所有状态以点的形式均匀绘在圆周上,将相容对用线
段连接。所有点之间都有连线的多边形构成最大相容类。
③ 利用闭覆盖表,求最小闭覆盖
求不完全给定状态表的最小化状态表,必须从相容类中选出一个相
容类的集合,该相容类集合必须满足:
A.覆盖性,所选相容类集合应包含原始状态表中的所有状态
5,3,2 状态化简
B.最小性,所选相容类集合中相容类个数应最少
C.闭合性,所选相容类集合中任一相容类,在原始状态表中任一
输入条件下产生的次态应属于该集合中的某一相容类。
同时具备覆盖、最小和闭合三个条件的相容类集合,称为最小闭覆
盖。不完全确定状态表的最小化,就是寻找最小闭覆盖。
④ 作出最小化状态表
选出一个最小闭覆盖之后,将最小闭覆盖的每个相容类用一个新的
状态符号表示,再将其代入原始状态表中,可得
现态 次态 / 输出
x = 0 x = 1
A
B
C
D
E
A / d
C / 1
D / 0
d / d
A / 0
d / d
B / 0
d / 1
B / d
C / 1
与原始状态表功能相同的最小化状态表。
例:化简原始状态表
① 作隐含表,寻找相容状态对
表中的 d 可以为任何值 。根据相容判断标准,
可对原始表中各状态进行顺序比较和关联比较。
5,3,2 状态化简
经顺序比较后,可得 最小隐含表 a,再经关联比较,可得最小隐含
表 b。相容状态对为 (A,B),(A,C),(A,D),(A,E),(B,D),(C,
D),(C,E)。
② 作状态合并图,找出最大相容类
根据相容状态对可作出状态合并图,并由此得到最大相容类为,{A,
B,D},{A,C,D},{A,C,E}。
③ 作闭覆盖表
由得到的三个最大相容类,可作出闭覆盖表。
B AC
C AD × a
D √ √ √
E √ × AD
BC
A B C D
B √
C √ × b
D √ √ √
E √ × √
/
A B C D
A
E B
D C
5,3,2 状态化简
闭覆盖表左方列出所
选相容类,中间覆盖部分
自左到右列出全部状态。
右边闭合部分列出各相容
类在输入各种取值组合下
现态 次态 / 输出x = 0 x = 1
a
b
b / 1
a / 0
a / 0
b / 1
最大相容类 覆盖 闭合A B C D E x = 0 x = 1
ABD
ACD
ACE
A
A
A
B
C
C
D
D
E
AC
AD
AD
B
B
C
的次态组合。
④ 作出最小化状态表
最大相容类 {A,C,D} 中状态 A,C,D 包含
在另两个最大相容类中,作最小化状态表时可去除。
将相容类 {A,B,D} 用状态 a 表示,{A,C,E} 用状态 b 表示。
将 a,b 代入原始状态表可得最小化状态表。
在化简不完全给定状态表时,构成最大闭覆盖的相容类不一定是最
大相容类 。如在本例中可选取最大相容类 {A,B,D} 和相容类 {C,E}
作为最小闭覆盖,可得到相同结果。
5,3,3 状态编码
对最小状态表中的每个字母,指定一个二进制编码,形成二进制状
态表。称为状态编码或状态分配、状态赋值。
将状态用二进制代码表示,用触发器状态实现。状态编码的任务是:
⑴ 确定状态编码的长度(按二进制代码数选择触发器个数)
⑵ 寻找最佳或接近最佳的状态分配方案,使设计的电路最简单
最小化状态表中状态数为 N,状态编码长度为 m,2m-1 < N < 2m
用 m 位二进制代码的 2m 种组合对 N 个状态进行编码时,可出现的
编码方案数较多,通常采用 相邻法 予以选择。相邻编码法原则为:
⑴ 在相同输入条件下,具有相同次态的现态应尽可能分配相邻二
进制编码。
⑵ 在相邻输入条件下,同一现态的次态应尽可能分配相邻二进制
编码。
⑶ 输出完全相同的现态 应尽可能分配相邻二进制编码。
5,3,3 状态编码
例:对以下状态表进行状态编码
解:状态数 N = 4,因此触发器数 m = 2。设
状态变量用 y2,y1 表示。
4 个状态的相邻关系为:
由原则 ⑴ 可知 B,C 相邻
由原则 ⑵ 可知 B,C,A,D,C,D 相邻
现态 次态 / 输出x = 0 x = 1
A
B
C
D
C / 0
A / 0
A / 1
D / 0
B / 0
A / 1
D / 1
C / 0
由原则 ⑶ 可知 A,D 相邻
据此可确定分配方案如右图。
将状态表中的状态 A,B,C、
D 用对应的编码代替,可得对应
的二进制状态表。
满足分配条件的编码方案可
能有多个,可任选一个。
A D
B C
y2
y1
0
1
0 1
现态 次态 y2
(n+1) y1(n+1) / 输
出
y2 y1 x = 0 x = 1
0
0
1
1
0
1
0
1
11 / 0
00 / 0
00 / 1
10 / 0
01 / 0
00 / 1
10 / 1
11 / 0
5,3,4 确定激励函数和输出函数并画出逻辑电路图
根据二进制状态表,可列出激励函数和输出函数真值表,再通过卡
诺图化简,获取最简表达式,最后画出对应的电路图。
例:用 J – K 触发器和适当的逻辑门,实现下列状态表的功能。
现态 次态 y2(n+1) y1(n+1) /输出 Z
y2 y1 x = 0 x= 1
0
0
1
1
0
1
0
1
11 / 0
00 / 0
00 / 1
01 / 0
01 / 0
00 / 1
10 / 1
11 / 0
根据给定的二进制状态表和
J – K 触发器激励表可列出激励
函数和输出函数真值表。
x y2 y1 激励函数 输出函数
J2 K2 J1 K1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
0
d
d
0
0
d
d
d
d
1
1
d
d
0
0
1
d
1
d
1
d
1
d
d
1
d
1
d
1
d
1
0
0
0
1
0
1
0
1
由真值表可作出激励函数和输出函数的卡诺图。经化简后得到激励
函数和输出函数最简表达式:
5,3,4 确定激励函数和输出函数并画出逻辑电路图
激励函数和输出函数最简表达式为:
据此可画出逻辑电路图。
1 d d 0
0 d d 0
xy2
y1
0
1
00 01 11 10
d 1 0 d
d 1 0 d
xy2
y1
0
1
00 01 11 10
J2 K2 J1
1 1 1 1
d d d d
xy2
y1
0
1
00 01 11 10
d d d d
1 1 1 1
xy2
y1
0
1
00 01 11 10
K1 Z
0 0 0 0
0 1 1 1
xy2
y1
0
1
00 01 11 10
1KJ 11 ??
12112 yxyxyyyZ )( ????
xKyxyxJ 2112 ????,
5,4 同步时序逻辑电路设计举例
例 1:用 T 触发器设计一个 2 位二进制减 1 计数器,电路状态受输
入信号 x 控制,x = 0 状态不变,x = 1 在时钟作用下进行减 1 计数。计
数器有一个输出 Z,发生借位时 Z = 1,否则 Z = 0。
⑴ 作出状态表和状态图
⑵ 确定激励函数和输出函数并化简
状态表表明,当 x = 1 且 y1 = 0 时,;当
x = 1 时,;当 x = 1 且 y2 = y1 = 0 时,Z = 1,
。
现态 次态 y2 (n+1) y1 (n+1) / Z
y2 y1 x = 0 x = 1
0
0
1
1
0
1
1
0
00 / 0
01 / 0
11 / 0
10 / 0
11 / 1
00 / 0
10 / 0
01 / 0
0/0 0/0
00 01
1/1 1/0
11 10
0/0 0/0
12 yyxZ ?
21n2122 yyyxT1T ??? ? )(,,
11n111 yyxT1T ??? ? )(,,
1/0
1/0
5,4 同步时序逻辑电路设计举例
据此可作出卡诺图。
化简后得到激励函数和输出函数表达式:
0 0 0 0
1 0 0 1
y2 y1 T2
x
0
1
00 01 11 10
0 0 0 0
1 1 1 1
y2 y1 T1
x
0
1
00 01 11 10
0 0 0 0
1 0 0 0
y2 y1 Z
x
0
1
00 01 11 10
12112 yyxZxTyxT ???,,
⑶ 根据激励函数和
输出函数表达式。画出
逻辑电路图
x2 x1
00,10
00 01
10 01 00 11
10 11
5,4 同步时序逻辑电路设计举例
例 2:设计两位串行输入、并行输出双向移位寄存器。寄存器有 x1、
x2 两个输入端,x2 控制移位方向,x1 输入数据。 x2 = 0 时,寄存器数据
从高位移向低位,x1 往寄存器高位送数据; x2 = 1 时,寄存器数据从低
位移向高位,x1 往寄存器低位送数据。( 注意, 先移位后传送 )
解:寄存器输出即为状态,属于 Moore 型。根据题义可画出状态图
及状态表。
11
00
00,11
01,10
01
10
01,11
现态 次态 y2 (n+1) y1 (n+1
y2 y1 x2 x1=00 x2 x1=01 x2 x1=11 x2 x1=10
0
0
1
1
0
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
1
0
1
1
0
1
1
1
1
0
1
1
0
0
0
0
0
状态表
假定采用 D 触发器作为存储元件,根据状
态表,可画出对应的卡诺图。
5,4 同步时序逻辑电路设计举例
x2 = 0 时,x1 = 1 时往寄存器高位送
数据,故 D2 = 1; x2 = 1 时,寄存器数
据从低位移向高位,当 y1 = 1 时 D2 = 1。
x2 = 1 时,x1 = 1 时往寄存器低位送
数据,故 D1 = 1。 x2 = 0 时,寄存器数
据从高位移向低位,当 y2 = 1 时 D1 = 1。
由此可得激励函数表达式为:
0 1 0 0
0 1 1 1
0 1 1 1
0 1 0 0
x2 x1 D2
y2 y1
00
01
11
10
00 01 11 10
0 0 1 0
0 0 1 0
1 1 1 0
1 1 1 0
x2 x1 D
1
y2 y1
00
01
11
10
00 01 11 10
1222112122 xxyxDyxxxD ????,
5,4 同步时序逻辑电路设计举例
例 3:用 J – K 触发器设计一个, 101” 检测器。电路有一个输入 x
和一个输出 Z,当输入出现, 101” 序列时 Z = 1。
设输入序列为,0 0 1 0 1 0 1 1 0 1 0 0
则输出序列为,0 0 0 0 1 0 1 0 0 1 0 0
假定用 Moore 型同步时序电路实现给定功能,设计过程为:
⑴ 作出原始状态图和原始状态表,设初始状态为 A。
⑵ 状态化简。根据化简法则,该状态表已是最小状态表。
现态 次态 y2
(n+1) y1 (n+1) 输出
x = 0 x = 1 Z
A
B
C
D
A
C
A
C
B
B
D
B
0
0
0
1
x
0 A/0 1 B/0 1
0 1
0
0
D/1 1 C/0
5,4 同步时序逻辑电路设计举例
现态 次态 y2(n+1) y1(n+1) 输出
y2 y1 x= 0 x = 1 Z
0
0
1
1
0
1
0
1
0 0
1 0
0 0
1 0
0 1
0 1
1 1
0 1
0
0
0
1
A C
B D
y2
y1
0
1
0 1
⑶ 状态编码
最小化状态表中有 4 个状态,需要 2 位二进制数表示,设置两个触
发器,状态变量为 y2,y1。根据相邻法编码原则,可采用以下编码方案,
并作出相应的二进制状态表。
⑷ 确定激励函数和输出函数
根据二进制状态表和 J – K 触发器激励表,可列出 激励函数和输出
函数真值表。
5,4 同步时序逻辑电路设计举例
输入 现态 次态 激励函数 输出
x y2 y1 y2(n+1) y1(n+1) J2 K2 J1 K1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
1
0
0
0
0
0
1
1
1
1
0
1
d
d
0
0
d
d
d
d
1
0
d
d
0
1
0
d
0
d
1
d
1
d
d
1
d
1
d
0
d
0
0
0
0
1
0
0
0
1
现态 次态 J K
0
0
1
1
0
1
0
1
0
1
d
d
d
d
1
0
J – K 触发器激励函数根据二进制状态表和 J – K 触发器激励表,
可知:当现态为 0 时,若次态为 0,则 J = 0,K
任意;若次态为 1,则 J = 1,K 任意。
当现态为 1 时,若次态为 0,则 K = 1,J
任意;若次态为 1,则 K = 0,J 任意。
5,4 同步时序逻辑电路设计举例
0 d d 0
1 d d 0
xy2
y1
0
1
00 01 11 10
d 1 0 d
d 0 1 d
xy2
y1
0
1
00 01 11 10
J2 K2 J1
0 0 1 1
d d d d
xy2
y1
0
1
00 01 11 10
d d d d
1 1 0 0
xy2
y1
0
1
00 01 11 10
K1
0 0 0 0
0 1 1 0
xy2
y1
0
1
00 01 11 10
Z
12 yxJ ? 1112 yxxyyxK ???? xJ1?
xK1 ?
12 yyZ ?
5,4 同步时序逻辑电路设计举例
现态 次态 y2
(n+1) y1 (n+1) 输出
x = 0 x = 1 Z
A
B
C
D
A
C
A
C
B
B
D
B
0
0
0
1
现态 次态 y2(n+1) y1(n+1) 输出
y2 y1 x= 0 x= 1 Z
0
1
1
0
0
1
0
1
0 0
1 0
0 0
1 0
1 1
1 1
0 1
1 1
0
0
0
1
A C
D B
y2
y1
0
1
0 1
输入 现态 次态 激励函数 输出
x y2 y1 y2(n+1) y1(n+1) J2 K2 J1 K1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
1
1
0
1
0
0
0
0
1
1
1
1
0
1
d
d
1
1
d
d
d
d
1
0
d
d
1
0
0
d
0
d
1
d
1
d
d
1
d
1
d
0
d
0
0
1
0
0
0
1
0
0
更改编码方案如
下:
则二进制状态表、
真值表、电路图也必
须做相应的修改,修
改后逻辑功能不变。
5,4 同步时序逻辑电路设计举例
0 d d 1
1 d d 1
xy2
y1
0
1
00 01 11 10
d 1 1 d
d 0 0 d
xy2
y1
0
1
00 01 11 10
J2 K2 J1
0 0 1 1
d d d d
xy2
y1
0
1
00 01 11 10
d d d d
1 1 0 0
xy2
y1
0
1
00 01 11 10
K1
0 0 0 0
1 0 0 1
xy2
y1
0
1
00 01 11 10
Z
xJ1?
xK1 ?
12 yxJ ?? 12 yK ?
12 yyZ ?
5,1 概述
5,1,1 时序逻辑电路结构
时序电路由组合电路和存储电路组成。其输出不仅取决于当时的输
入,还与过去的状态有关 。
x1 Z1
xn Z
m
ys … y1 Y1 … Yr
组合电路
存储电路
时钟 CP
:,图中,x1 ~ xn 为时序电路输入
信号,又称组合电路外部输入。 Z1
~ Zm 为时序电路输出信号,又称组
合电路外部输出。 y1 ~ ys 为时序电
路的,状态” 信号,又称组合电
路内部输入。 Y1 ~Yr为时序电路激
励信号,又称组合电路内部输出。
某一时刻的状态称为,现态”,记作 y,某一现态下随外部信号变
化而即将到达的状态称为,次态”,记作 y(n+1)。
5,1,2 时序电路分类
1,按电路工作方式划分
同步 (Synchronous)时序电路 ——存储电路由带时钟控制的触发器组
成,电路状态的改变由系统统一时钟控制 。时钟到来前的状态为,现
态”,时钟到来后的状态为,次态”。
异步 (Asynchronous)时序电路 ——存储电路由触发器和延时元件组
成,时序电路中状态的改变不受统一时钟的控制,输入的变化将直接导
致输出的变化 。
2,按输出与输入的关系划分
若电路输出与输入和状态有直接关系,称为 Mealy 型时序逻辑电路。
若时序电路输出仅与状态有直接关系,称为 Moore 型时序逻辑电路。
3,按输入信号形式划分
根据输入信号的形式可分为脉冲类型和电平类型。
5,1,3 同步时序逻辑电路描述方法
描述同步时序电路时,除采用函数表达式、真值表和卡诺图外,还
采用状态表、状态图和时间图加以描述。
1,逻辑函数表达式
⑴ 输出函数表达式
反映电路输出 Z 与输入 x 和状态 y 之间的关系。
对 Mealy 型,函数表达式为,Zi = fi ( x1…xn,y1 …ys ) i=1…m
对 Moore 型,函数表达式为,Zi = fi ( y1 …ys ) i=1…m
⑵ 激励函数表达式
反映存储电路输入 Y 与输入 x 和状态 y 之间的关系。
Yj = gj ( x1…xn,y1 …ys ) i=1…m
5,1,3 同步时序逻辑电路描述方法
⑶ 次态函数表达式
反映电路的次态 y(n+1) 与激励函数 Y 和电路现态 y 的关系
y(n+1) = kl ( Yj,yi )
2,状态表
反映时序电路输出 Z、次态和电路输入 x、现态 y 之间关系的表格。
3,状态图
反映同步时序电路状态转换规律及相应输入、输出取值关系的有向
图。圆圈表示状态,有向线段表示状态转换关系,箭头起点为现态,终
点为次态。
4,时间图
用波形图表示输入信号、输出信号和电路状态等的取值在各时刻的
对应关系。
5,2 同步时序逻辑电路分析
5,2,1 同步时序逻辑电路分析方法与步骤
1,表格分析方法与步骤
⑴ 根据给定的同步时序电路,写出输出函数和激励函数表达式。
⑵ 列出电路状态真值表,根据输入和状态在各种取值下的激励函
数值及触发器功能表,确定电路状态。
⑶ 根据状态真值表和输出函数表达式,作出电路状态表和状态图。
⑷ 拟定一典型输入序列,画出时间图。
2,代数分析方法与步骤
⑴ 根据给定的同步时序电路,写出输出函数和激励函数表达式。
⑵ 将激励函数表达式代入触发器次态方程,导出电路次态方程图。
⑶ 根据次态方程和输出函数表达式作出状态表,画出状态图。
⑷ 拟定一典型输入序列画出时间图,并用文字描述电路逻辑功能。
5,2,2 实例分析
例 1:用表格法分析图中的同步时
序逻辑电路
⑴ 电路输出即为状态 (Moore 型 ),
激励表达式为:
⑵ 列出电路次态真值表
⑶ 做出状态表,画出
状态图。
状态表
12211 yxKJ1KJ ?????,
输入 现态 激励函数 次态
x y2 y1 J2 K2 J1 K1 y2(n+1) y1(n+1)
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
0
1
0
0
1
1
0
1
0
1
0
1
0
现态 次态 y2(n+1) y1(n+1)
y2 y1 x = 0 x = 1
0
0
1
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
0
1
1
0
1
0
0 0 0 0 1 1 1 1
0 0 1 1 1 0 0 1
0 1 0 1 0 1 0 1
5,2,2 分析实例
⑷ 用时间图和文字描述电路的逻辑功能 x0
00 01
1
0 1 1 0
1
11 10
0
从状态表和状态图中可看出,两个触发
器组成一个 2 位二进制可逆计数器。
x = 0 时,在 CP 脉冲后沿触发下,计数
器加 1 计数,计数序列为 00→ 01→ 10→ 11。
x = 1 时,在 CP 脉冲后沿触发下,计数
器减 1 计数。计数序列为 00→ 11→ 10→ 01。
CP
x
y2
y1
5,2,2 分析实例
例 2:用代数法分析图中
的同步时序逻辑电路
解:该实例输出仅与电路
状态有关,属 Moore 型。
存储电路由三个 D 触发
器组成,激励函数表达式为:
次态方程组为:
123 yyyZ ???
xyTyyTyyT 11122233 ??????,,
1122221n2 yyyyTyy ??????? )(
2233331n3 yyyyTyy ??????? )(
xxyyTyy 11111n1 ??????? )(
5,2,2 分析实例
从状态表中可知,该电路
为向左移位寄存器。当 x = 0
时,每来一个脉冲 CP,数据
左移,右边补 0;当 x = 1 时,
每来一个脉冲 CP,数据左移,
右边补 1。
另外,当寄存器中 1 的个
数为奇数时,Z = 1;寄存器中
1 的个数为奇数时,Z = 0。
现态 次态 y3(n+1) y2(n+1)
y1(n+1)
输出
y3 y2 y1 x = 0 x = 1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
0
1
1
0
1
0
0
1
状态表
5,3 同步时序逻辑电路设计
根据特定的逻辑要求,设计实现其逻辑功能的时序逻辑电路。设计
步骤如下:
⑴ 形成原始状态图和原始状态表。
根据功能要求及输入、输出和状态的关系,形成原始状态图和原始
状态表。
⑵ 状态简化
对原始状态表进行简化,消去多余状态,求得最小化状态表。
⑶ 状态编码
将状态表中用字母标注的每个状态用二进制代码表示。
⑷ 确定激励函数和输出函数表达式。
先列出激励函数和输出函数表达式,再求出最简表达式。
⑸ 画出逻辑电路图
5,3,1 建立原始状态图和原始状态表
设计原始状态图和原始状态表时应考虑以下几点。
1.确定电路模型
时序电路有 Mealy 和 Moore 两种类型,不同模型对应的电路结构也
不同,应根据问题中信号形式、电路器件等综合考虑。
2.设立初始状态
时序逻辑电路在输入信号作用之前的状态称为初始状态。
3.根据需要记忆的信息增加新的状态
状态数目的多少取决于需要记忆和区分的信息量。在某个状态下出
现输入信号时若可用已有状态表示,则转向已有状态。仅当无法用已有
状态表示时转向新的状态。
4.确定每个时刻电路的输出
在 Moore 型电路中,应指明每种状态下对应的输出,在 Mealy 型电
路中,应指明从每个状态出发,在不同输入作用下的输出值。
5,3,1 建立原始状态图和原始状态表
例 1:模 5 加 1 和加 2 计数器有一个输入 x 和输出 Z。 x = 0 时加 1,
x = 1 时加 2,计满 5 个状态后 Z = 1 产生进位输出。
现态 次态 / 输出 Zx = 0 x = 1
0
1
2
3
4
1 / 0
2 / 0
3 / 0
4 / 0
0 / 1
2 / 0
3 / 0
4 / 0
0 / 1
1 / 0
1/0
0/0
解:该电路输出与输入和状态均有关,属
于 Moore 型电路。
计数器 5 个状态分别为 0 ~ 4,0 为初态。
根据题意可建立原始状态图和原始状态表。
例 2:某同步时序电路检测串行输入 8421
码,输入顺序为先低位后高位,当出现非法
数字(数值大于 9)时电路输出 1。电路有一
个输入 x 和一个输出 Z。
解:该电路输出与状态和输入相关,属于
Mealy 型电路。
假定起始状态为 A,第一位代码到来时,
有 0,1 两种可能,用 B,C 状态表示。
0
0/1 0/0
4 1
0/0 1/1 1/0 0/0
3 2
5,3,1 建立原始状态图和原始状态表
在状态 B,C,第二位代码到来,也有 0,1 两种可能,用 D,E,F、
G 状态表示。
在状态 D,E,F,G,第三位代码到来,又有 0,1 两种可能,用 H、
I,J,K,L,M,N,P 状态表示。
当第四位代码到来时,一组 8421 码全部接收。对编码进行判断,
若出现非法数字,Z=1,否则为 0,并返回起始状态 A。
据此可作出状态图和状态表如下。
原始状态图,A
0/0 1/0
B C
0/0 1/0 0/0 1/0
D E F G
0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0
H I J K L M N P
0/0 0/0 0/0 0/0 0/0 0/1 0/1 0/1
1/0 1/0 1/0 1/0 1/0 1/1 1/1 1/1
5,3,1 建立原始状态图和原始状态表
原始状态表:
从图中和表中可看出,当电路处于非 M,N,P
状态时,下一位信号到来后,无论为 0 或为 1,输
出均为 0;当电路处于 M,N,P 状态时,下一位信
号到来后,无论为 0 或为 1,输出均为 1。
到达 M 状态时已接收前三位代码为 101,则
101× 大于 9,属非法数字;到达 N 状态时已接收
前三位代码为 110,则 110× 大于 9,属非法数字;
到达 M 状态时已接收前三位代码为 111,则 111×
大于 9,属非法数字。
该例用 Moore 型电路也可实现(见 P149),但
Moore 型电路状态数较多,状态转换也较复杂。可
见选择一个较好的电路类型可降低设计难度。
现态 次态 / 输出x = 0 x = 1
A
B
C
D
E
F
G
H
I
J
K
L
M
N
P
B/O
D/0
F/0
H/0
J/0
L/0
N/0
A/0
A/0
A/0
A/0
A/0
A/1
A/1
A/1
C/0
E/0
G/0
I/0
K/0
M/0
P/0
A/0
A/0
A/0
A/0
A/0
A/1
A/1
A/1
5,3,2 状态化简
为降低电路设计的复杂性和电路成本,对初始状态要进行简化,尽
可能使描述设计要求的状态数达到最少。
状态化简常用方法是隐含表法,化简时,对完全确定原始状态表和
不完全确定原始状态表引用不同概念,处理方法也不同。
1.完全确定原始状态表的化简
⑴ 等效状态和等效类
等效状态,设 Si,Sj 为两个原始状态,当它们满足以下条件时等效。
① 输出相同
② 它们的次态属于下列情况之一
A.次态相同。 Si,Sj 的次态均为 Sk
B.次态交错或为各自的现态。 交错,Si 的次态 为 Sj, Sj 的次态 为
Si 。 为各自的现态,或 Si 的次态 为 Si,Sj 的次态 为 Sj 。
5,3,2 状态化简
C.次态循环或为等效对。次态循环,S1,S2 在某种取值下次态为
S3,S4,在相同取值下 S3,S4 的次态为 S1,S2。等效对,S1,S2 在某种
取值下次态为 S3,S4,若 S3,S4 等效,则 S1, S2 等效。
等效具有传递性,若 S1,S2 等效,S2,S3 等效,则 S1,S3 等效,记
作 (S1,S2 ),(S2,S3 ) → (S1,S3 )。
等效类,由若干等效状态构成的集合。等效类中任意两个状态均等
效。若存在关系,(S1,S2 ),(S2,S3 ) → (S1,S3 ),则 S1,S2,S3 属于
同一等效类。 记作 (S1,S2 ),(S2,S3 ) → | S1,S2,S3 |。
最大等效类,一个等效类不是其他等效类的子集,则该等效类为最
大等效类。
利用上述判别状态等效及状态等效的性质,可进行状态简化。
简化过程:寻找最大等效类,将每个最大等效类的所有状态合并为
一个新的状态 。简化后的状态数等于最大等效类的个数。
5,3,2 状态化简
⑵ 利用隐含表进行状态化简
状态化简的步骤为:作隐含表,寻找等效对、求出最大等效类、作
出最小化状态表。
① 作隐含表
隐含表为直角三角型网格,表中的方格用状态名称标注。横向从左
到右的状态顺序依次为第一个到倒数第二个状态,纵向从上到下的状态
顺序为第二到最后一个状态。每个方格代表一个状态对。
② 寻找等效对
进行两轮比较,先进行顺序比较,再进行关联比较。
顺序比较,对照原始状态表,对所有状态进行检查比较。若状态对
等效,在方格中打, √, ;若不等效,在方格中打, ×,;与其他状
态对相关,有待进一步检查,在方格中填上待检查状态对。
关联比较,确定待检查状态对是否等效,由此确定原状态对是否等
效。若方格内有一状态对不等效,则用, /,标志。
5,3,2 状态化简
③ 求出最大等效类
利用等效状态的传递性,通过合并求出最大等效类。原始状态表中
的每个状态都应该属于一个最大等效对。
④ 作出最小化状态表
将每个最大等效类中的全部状态合并为一个状态,可得与原始状态
表等价的最小化状态表。
例:化简以下状态表
现态 次态 / 输出
x = 0 x = 1
A
B
C
D
E
F
G
C / 0
F / 0
F / 0
D / 0
C / 0
C / 0
C / 1
B / 1
A / 1
G / 0
E / 0
E / 1
G / 0
D / 0
B CF
C × ×
D × × ×
E BE × ×
F × × √ ×
×
G × × × ×
×
AE CF
CDDE
对表中状态进行顺
序比较,根据等效状态
判别标准进行判别。
状态 C,F 输出相
同,x = 0 时次态交错,
x = 1 时次态相同,故
C,F 为等效对,在相应方格中打, √,。
5,3,2 状态化简
状态 A,F 不满足等效条件,在相应方格中打, ×,。状态 A,E
满足输出相同条件,当 x = 0 时次态相同,但当 x = 1 时次态分别为 B、
E,当前尚无法判定 B,E 是否等效,因此在方格中填入 BE … 。
经比较后,还有 A,B,A,E,B,E,D,G 共 4 个状态对尚未确
定是否等效,因此应进行关联比较。
状态 A,B 对应的方格中次态对为 C,F,由顺序比较已知 C,F 等
效,故 A,B 等效,在对应的方格中打, √,。 。
检查 A,E 状态对,出现循环关系,AE→ BE→ CF。已知 C,F 等
效,故 B,E 等效。 BE 又与 AE 构成循环,故 A,E 等效,在对应的方
格中打, √,。
状态 D,G 对应的方格中次态对为 CD 和 DE,由顺序比较已知 C、
D 不等效,故 D,G 不等效,在相应方格中打, /, 。
由造出的隐含表可知,7 个状态共有 4 个等效对 ( A,B ),( A,E )、
( B,E ),( C,F )。
5,3,2 状态化简
由所得 4 个等效对可知,( A,B )、
( A,E ),( B,E ) 构成最大等效类 { A,
B,E }。 ( C,F ) 不包含在其他等效类
中,也是一个最大等效类。状态 D,G
不和其他状态等效,故各自构成最大等
效类。
原始状态表中 7 个状态构成 4 个最
大等效类,分别为:
B √
C × ×
D × × ×
E √ √ × ×
F × × √ ×
×
G × × × / ×
×
A B C D E F现态 次态 / 输出
x = 0 x = 1
a
b
c
d
b / 0
b / 0
c / 1
d / 1
a / 1
d / 0
a / 0
c / 0
{ A,B,E },{ C,F },{ D },{ G }
a b c d
将 4 个最大等效类分别用 a,b,c,d 表示,
代入原始状态表,可得化简后的最小化状态表。
5,3,2 状态化简
2.不完全确定状态表的化简
在状态表中存在不确定的次态或输出,这种状态表称为不完全确定
状态表。为确保化简后的逻辑功能不变,需引入新概念 ——相容状态。
⑴ 相容状态和相容类
相容状态, 设 Si,Sj 为两个原始状态,当它们满足以下条件时相容。
① 输出相同,或其中一个或两个输出不确定。
② 它们的次态属于下列情况之一
次态相同,次态交错或为各自的现态,次态循环或为相容对
相容状态不具有传递性 。
相容类,由若干相容状态构成的集合。相容类中任意两个状态均相
容。若有相容对 (S1,S2 ),(S2,S3 ),(S1,S3 ),则可构成相容类 { S1、
S2,S3 }。
5,3,2 状态化简
最大相容类,一个相容类不是其他相容类的子集,则该相容类为最
大相容类。由于相容状态无传递性,故同一原始状态表的各最大相容类
中可能存在相同状态,即同一状态可能存在不同的最大相容类中。
⑵ 不完全确定状态表的化简
化简方式与完全确定状态表方式相似,但处理环节稍有不同。
① 做隐含表,寻找相容状态对
② 利用状态合并图,找出最大相容类
状态合并图将所有状态以点的形式均匀绘在圆周上,将相容对用线
段连接。所有点之间都有连线的多边形构成最大相容类。
③ 利用闭覆盖表,求最小闭覆盖
求不完全给定状态表的最小化状态表,必须从相容类中选出一个相
容类的集合,该相容类集合必须满足:
A.覆盖性,所选相容类集合应包含原始状态表中的所有状态
5,3,2 状态化简
B.最小性,所选相容类集合中相容类个数应最少
C.闭合性,所选相容类集合中任一相容类,在原始状态表中任一
输入条件下产生的次态应属于该集合中的某一相容类。
同时具备覆盖、最小和闭合三个条件的相容类集合,称为最小闭覆
盖。不完全确定状态表的最小化,就是寻找最小闭覆盖。
④ 作出最小化状态表
选出一个最小闭覆盖之后,将最小闭覆盖的每个相容类用一个新的
状态符号表示,再将其代入原始状态表中,可得
现态 次态 / 输出
x = 0 x = 1
A
B
C
D
E
A / d
C / 1
D / 0
d / d
A / 0
d / d
B / 0
d / 1
B / d
C / 1
与原始状态表功能相同的最小化状态表。
例:化简原始状态表
① 作隐含表,寻找相容状态对
表中的 d 可以为任何值 。根据相容判断标准,
可对原始表中各状态进行顺序比较和关联比较。
5,3,2 状态化简
经顺序比较后,可得 最小隐含表 a,再经关联比较,可得最小隐含
表 b。相容状态对为 (A,B),(A,C),(A,D),(A,E),(B,D),(C,
D),(C,E)。
② 作状态合并图,找出最大相容类
根据相容状态对可作出状态合并图,并由此得到最大相容类为,{A,
B,D},{A,C,D},{A,C,E}。
③ 作闭覆盖表
由得到的三个最大相容类,可作出闭覆盖表。
B AC
C AD × a
D √ √ √
E √ × AD
BC
A B C D
B √
C √ × b
D √ √ √
E √ × √
/
A B C D
A
E B
D C
5,3,2 状态化简
闭覆盖表左方列出所
选相容类,中间覆盖部分
自左到右列出全部状态。
右边闭合部分列出各相容
类在输入各种取值组合下
现态 次态 / 输出x = 0 x = 1
a
b
b / 1
a / 0
a / 0
b / 1
最大相容类 覆盖 闭合A B C D E x = 0 x = 1
ABD
ACD
ACE
A
A
A
B
C
C
D
D
E
AC
AD
AD
B
B
C
的次态组合。
④ 作出最小化状态表
最大相容类 {A,C,D} 中状态 A,C,D 包含
在另两个最大相容类中,作最小化状态表时可去除。
将相容类 {A,B,D} 用状态 a 表示,{A,C,E} 用状态 b 表示。
将 a,b 代入原始状态表可得最小化状态表。
在化简不完全给定状态表时,构成最大闭覆盖的相容类不一定是最
大相容类 。如在本例中可选取最大相容类 {A,B,D} 和相容类 {C,E}
作为最小闭覆盖,可得到相同结果。
5,3,3 状态编码
对最小状态表中的每个字母,指定一个二进制编码,形成二进制状
态表。称为状态编码或状态分配、状态赋值。
将状态用二进制代码表示,用触发器状态实现。状态编码的任务是:
⑴ 确定状态编码的长度(按二进制代码数选择触发器个数)
⑵ 寻找最佳或接近最佳的状态分配方案,使设计的电路最简单
最小化状态表中状态数为 N,状态编码长度为 m,2m-1 < N < 2m
用 m 位二进制代码的 2m 种组合对 N 个状态进行编码时,可出现的
编码方案数较多,通常采用 相邻法 予以选择。相邻编码法原则为:
⑴ 在相同输入条件下,具有相同次态的现态应尽可能分配相邻二
进制编码。
⑵ 在相邻输入条件下,同一现态的次态应尽可能分配相邻二进制
编码。
⑶ 输出完全相同的现态 应尽可能分配相邻二进制编码。
5,3,3 状态编码
例:对以下状态表进行状态编码
解:状态数 N = 4,因此触发器数 m = 2。设
状态变量用 y2,y1 表示。
4 个状态的相邻关系为:
由原则 ⑴ 可知 B,C 相邻
由原则 ⑵ 可知 B,C,A,D,C,D 相邻
现态 次态 / 输出x = 0 x = 1
A
B
C
D
C / 0
A / 0
A / 1
D / 0
B / 0
A / 1
D / 1
C / 0
由原则 ⑶ 可知 A,D 相邻
据此可确定分配方案如右图。
将状态表中的状态 A,B,C、
D 用对应的编码代替,可得对应
的二进制状态表。
满足分配条件的编码方案可
能有多个,可任选一个。
A D
B C
y2
y1
0
1
0 1
现态 次态 y2
(n+1) y1(n+1) / 输
出
y2 y1 x = 0 x = 1
0
0
1
1
0
1
0
1
11 / 0
00 / 0
00 / 1
10 / 0
01 / 0
00 / 1
10 / 1
11 / 0
5,3,4 确定激励函数和输出函数并画出逻辑电路图
根据二进制状态表,可列出激励函数和输出函数真值表,再通过卡
诺图化简,获取最简表达式,最后画出对应的电路图。
例:用 J – K 触发器和适当的逻辑门,实现下列状态表的功能。
现态 次态 y2(n+1) y1(n+1) /输出 Z
y2 y1 x = 0 x= 1
0
0
1
1
0
1
0
1
11 / 0
00 / 0
00 / 1
01 / 0
01 / 0
00 / 1
10 / 1
11 / 0
根据给定的二进制状态表和
J – K 触发器激励表可列出激励
函数和输出函数真值表。
x y2 y1 激励函数 输出函数
J2 K2 J1 K1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
0
d
d
0
0
d
d
d
d
1
1
d
d
0
0
1
d
1
d
1
d
1
d
d
1
d
1
d
1
d
1
0
0
0
1
0
1
0
1
由真值表可作出激励函数和输出函数的卡诺图。经化简后得到激励
函数和输出函数最简表达式:
5,3,4 确定激励函数和输出函数并画出逻辑电路图
激励函数和输出函数最简表达式为:
据此可画出逻辑电路图。
1 d d 0
0 d d 0
xy2
y1
0
1
00 01 11 10
d 1 0 d
d 1 0 d
xy2
y1
0
1
00 01 11 10
J2 K2 J1
1 1 1 1
d d d d
xy2
y1
0
1
00 01 11 10
d d d d
1 1 1 1
xy2
y1
0
1
00 01 11 10
K1 Z
0 0 0 0
0 1 1 1
xy2
y1
0
1
00 01 11 10
1KJ 11 ??
12112 yxyxyyyZ )( ????
xKyxyxJ 2112 ????,
5,4 同步时序逻辑电路设计举例
例 1:用 T 触发器设计一个 2 位二进制减 1 计数器,电路状态受输
入信号 x 控制,x = 0 状态不变,x = 1 在时钟作用下进行减 1 计数。计
数器有一个输出 Z,发生借位时 Z = 1,否则 Z = 0。
⑴ 作出状态表和状态图
⑵ 确定激励函数和输出函数并化简
状态表表明,当 x = 1 且 y1 = 0 时,;当
x = 1 时,;当 x = 1 且 y2 = y1 = 0 时,Z = 1,
。
现态 次态 y2 (n+1) y1 (n+1) / Z
y2 y1 x = 0 x = 1
0
0
1
1
0
1
1
0
00 / 0
01 / 0
11 / 0
10 / 0
11 / 1
00 / 0
10 / 0
01 / 0
0/0 0/0
00 01
1/1 1/0
11 10
0/0 0/0
12 yyxZ ?
21n2122 yyyxT1T ??? ? )(,,
11n111 yyxT1T ??? ? )(,,
1/0
1/0
5,4 同步时序逻辑电路设计举例
据此可作出卡诺图。
化简后得到激励函数和输出函数表达式:
0 0 0 0
1 0 0 1
y2 y1 T2
x
0
1
00 01 11 10
0 0 0 0
1 1 1 1
y2 y1 T1
x
0
1
00 01 11 10
0 0 0 0
1 0 0 0
y2 y1 Z
x
0
1
00 01 11 10
12112 yyxZxTyxT ???,,
⑶ 根据激励函数和
输出函数表达式。画出
逻辑电路图
x2 x1
00,10
00 01
10 01 00 11
10 11
5,4 同步时序逻辑电路设计举例
例 2:设计两位串行输入、并行输出双向移位寄存器。寄存器有 x1、
x2 两个输入端,x2 控制移位方向,x1 输入数据。 x2 = 0 时,寄存器数据
从高位移向低位,x1 往寄存器高位送数据; x2 = 1 时,寄存器数据从低
位移向高位,x1 往寄存器低位送数据。( 注意, 先移位后传送 )
解:寄存器输出即为状态,属于 Moore 型。根据题义可画出状态图
及状态表。
11
00
00,11
01,10
01
10
01,11
现态 次态 y2 (n+1) y1 (n+1
y2 y1 x2 x1=00 x2 x1=01 x2 x1=11 x2 x1=10
0
0
1
1
0
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
1
0
1
1
0
1
1
1
1
0
1
1
0
0
0
0
0
状态表
假定采用 D 触发器作为存储元件,根据状
态表,可画出对应的卡诺图。
5,4 同步时序逻辑电路设计举例
x2 = 0 时,x1 = 1 时往寄存器高位送
数据,故 D2 = 1; x2 = 1 时,寄存器数
据从低位移向高位,当 y1 = 1 时 D2 = 1。
x2 = 1 时,x1 = 1 时往寄存器低位送
数据,故 D1 = 1。 x2 = 0 时,寄存器数
据从高位移向低位,当 y2 = 1 时 D1 = 1。
由此可得激励函数表达式为:
0 1 0 0
0 1 1 1
0 1 1 1
0 1 0 0
x2 x1 D2
y2 y1
00
01
11
10
00 01 11 10
0 0 1 0
0 0 1 0
1 1 1 0
1 1 1 0
x2 x1 D
1
y2 y1
00
01
11
10
00 01 11 10
1222112122 xxyxDyxxxD ????,
5,4 同步时序逻辑电路设计举例
例 3:用 J – K 触发器设计一个, 101” 检测器。电路有一个输入 x
和一个输出 Z,当输入出现, 101” 序列时 Z = 1。
设输入序列为,0 0 1 0 1 0 1 1 0 1 0 0
则输出序列为,0 0 0 0 1 0 1 0 0 1 0 0
假定用 Moore 型同步时序电路实现给定功能,设计过程为:
⑴ 作出原始状态图和原始状态表,设初始状态为 A。
⑵ 状态化简。根据化简法则,该状态表已是最小状态表。
现态 次态 y2
(n+1) y1 (n+1) 输出
x = 0 x = 1 Z
A
B
C
D
A
C
A
C
B
B
D
B
0
0
0
1
x
0 A/0 1 B/0 1
0 1
0
0
D/1 1 C/0
5,4 同步时序逻辑电路设计举例
现态 次态 y2(n+1) y1(n+1) 输出
y2 y1 x= 0 x = 1 Z
0
0
1
1
0
1
0
1
0 0
1 0
0 0
1 0
0 1
0 1
1 1
0 1
0
0
0
1
A C
B D
y2
y1
0
1
0 1
⑶ 状态编码
最小化状态表中有 4 个状态,需要 2 位二进制数表示,设置两个触
发器,状态变量为 y2,y1。根据相邻法编码原则,可采用以下编码方案,
并作出相应的二进制状态表。
⑷ 确定激励函数和输出函数
根据二进制状态表和 J – K 触发器激励表,可列出 激励函数和输出
函数真值表。
5,4 同步时序逻辑电路设计举例
输入 现态 次态 激励函数 输出
x y2 y1 y2(n+1) y1(n+1) J2 K2 J1 K1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
1
0
0
0
0
0
1
1
1
1
0
1
d
d
0
0
d
d
d
d
1
0
d
d
0
1
0
d
0
d
1
d
1
d
d
1
d
1
d
0
d
0
0
0
0
1
0
0
0
1
现态 次态 J K
0
0
1
1
0
1
0
1
0
1
d
d
d
d
1
0
J – K 触发器激励函数根据二进制状态表和 J – K 触发器激励表,
可知:当现态为 0 时,若次态为 0,则 J = 0,K
任意;若次态为 1,则 J = 1,K 任意。
当现态为 1 时,若次态为 0,则 K = 1,J
任意;若次态为 1,则 K = 0,J 任意。
5,4 同步时序逻辑电路设计举例
0 d d 0
1 d d 0
xy2
y1
0
1
00 01 11 10
d 1 0 d
d 0 1 d
xy2
y1
0
1
00 01 11 10
J2 K2 J1
0 0 1 1
d d d d
xy2
y1
0
1
00 01 11 10
d d d d
1 1 0 0
xy2
y1
0
1
00 01 11 10
K1
0 0 0 0
0 1 1 0
xy2
y1
0
1
00 01 11 10
Z
12 yxJ ? 1112 yxxyyxK ???? xJ1?
xK1 ?
12 yyZ ?
5,4 同步时序逻辑电路设计举例
现态 次态 y2
(n+1) y1 (n+1) 输出
x = 0 x = 1 Z
A
B
C
D
A
C
A
C
B
B
D
B
0
0
0
1
现态 次态 y2(n+1) y1(n+1) 输出
y2 y1 x= 0 x= 1 Z
0
1
1
0
0
1
0
1
0 0
1 0
0 0
1 0
1 1
1 1
0 1
1 1
0
0
0
1
A C
D B
y2
y1
0
1
0 1
输入 现态 次态 激励函数 输出
x y2 y1 y2(n+1) y1(n+1) J2 K2 J1 K1 Z
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
1
1
0
1
0
0
0
0
1
1
1
1
0
1
d
d
1
1
d
d
d
d
1
0
d
d
1
0
0
d
0
d
1
d
1
d
d
1
d
1
d
0
d
0
0
1
0
0
0
1
0
0
更改编码方案如
下:
则二进制状态表、
真值表、电路图也必
须做相应的修改,修
改后逻辑功能不变。
5,4 同步时序逻辑电路设计举例
0 d d 1
1 d d 1
xy2
y1
0
1
00 01 11 10
d 1 1 d
d 0 0 d
xy2
y1
0
1
00 01 11 10
J2 K2 J1
0 0 1 1
d d d d
xy2
y1
0
1
00 01 11 10
d d d d
1 1 0 0
xy2
y1
0
1
00 01 11 10
K1
0 0 0 0
1 0 0 1
xy2
y1
0
1
00 01 11 10
Z
xJ1?
xK1 ?
12 yxJ ?? 12 yK ?
12 yyZ ?