第四章 时序电路
Sequential Circuits
4.32 同步时序电路设计(书页163-168)
同步时序电路设计是其分析的逆过程,是根据对电路逻辑功能的要求设计出具体的时序逻辑电路。
同步时序电路是由触发器和组合逻辑构成,其设计就是选择触发器和寻找组合电路,并将二者有机连接构造出满足设计要求的时序逻辑电路的过程。
设计步骤组合逻辑电路设计要求是用真值表表述的,与其对应,时序电路设计要求用状态表(或状态图)表述。一旦得到了状态表,我们便可以用组合电路的设计方法导出输出方程和激励方程并进而画出逻辑图。所以,同步时序电路设计的关键是找状态表。找状态表的过程就是设法把文字描述的设计要求转化为状态表,这是非常重要的第一步。
据设计要求建立原始状态表。由于其可能包括多余状态,故称之为原始状态表。如首先得到状态图,将其转化为状态表。
状态化简。消除原始状态中的多余状态,得到简化状态表。
状态分配。将字符表示的状态指定一个二元代码,得到代码形式状态表。
选择触发器类型。
据简化的代码形式状态表导出触发器的简化激励函数。
根据简化的代码形式状态表导出电路的简化输出函数。
画出逻辑图。
自启动检查。
在实际工作中,完成逻辑设计后,还应利用计算机辅助设计进行逻辑模拟,验证设计的正确性。(略)
建立状态图和状态表
情况简单,可直接建立状态表。
情况复杂,先建立状态图,再转化为状态表。
状态图必须准确地反映文字表述的设计要求,必须仔细认真。不幸的是,这步工作没有严格的步骤和规范的程序可循,只有掌握基本思路,积累经验。
正确建立状态图三个要素:
1.分析出输入变量的个数和情况;
2.分析出电路应给出输出指示的条件;
3.最为关键,分析出电路所应记住历史情况(状态)的个数,及每种历史情况的准确描述。
状态设立方法:
一次设态。
一次正确的分析出电路所应具有的态和态的准确涵义,然后以每个电路状态作为现态,根据各种可能的输入分别判断出每种输入情况下电路的输出和下一时刻转入的状态,画出所有状态之间的转移线,完成原始状态图的建立。
2.逐步设态。
先设定一初始状态,在此基础上,根据各种输入情况下电路状态的变化,设立并命名新态(特别要准确定义新态的涵义)。然后,对于每个新态,再连续进行上述过程,直至不必再设新态,完成原始状态图的建立。电路可能出现三种状态转移情况:1.次态是本身,将转移线连回本态。2.次态是已建态,将转移线连至已建态。3.次态是新态,设立并命名新态。
3.由初始至输出设态首先分析出电路产生输出指示的状态转移过程,据此先由初始到输出设立一系列电路状态,单向转移得到不完全的初始状态图。然后,再补充各态中没有考虑的状态转移线,从而完成原始状态图的建立。
电路状态设立过程可能重复,从而产生多余态,多余态不会影响电路功能,可在状态化简时消除。有时不必非要消除。关键是设态时不要发生遗漏和错误。
例,用同步时序电路实现对一串行随机输入序列的101检测。输入X,输出Z。
为训练建立原始状态图的严谨性,导出下述三种情况检测电路的原始状态图。
(1) 对输入序列每三位进行一次判决,若三位代码是101,则对应最后一个1时,输出Z为1,其它情况Z为0。
每逢遇到输入序列为101时,输出Z为1。但检测时用过的代码不可重复使用。
每逢遇到输入序列为101时,输出Z为1。但检测时用过的代码可重复使用。(即前一个101的最后一个1可以作为下一个101的第一个1使用。)
先―――――――――后试验序列 X,0 1 0 1 0 0 1 0 1 0 1 0
(1) Z,0 0 0 0 0 0 0 0 1 0 0 0
(2) Z,0 0 0 1 0 0 0 0 1 0 0 0
(3) Z,0 0 0 1 0 0 0 0 1 0 1 0
(1)解:推导三位一判101检测电路原始状态图。(选用逐步设态法。)
设定初始状态S0(判决起始等待输入)。
当电路在S0状态时,若此时输入X为0,转入新设次态S1,S1态的涵义为:自初态始,电路已输入过一个0。若输入X为1,转入新设次态S2,S2态的涵义为:自初态始,电路已输入过一个1。
3.当电路在S1状态时,若输入X为0,转入新设次态S3,S3态的涵义为:自初态始,电路已输入过00。若输入X为1,转入新设次态S4,S4态的涵义为:自初态始,电路已输入过01。
4.当电路在S2状态时,若输入X为0,转入新设次态S5,S5态的涵义为:自初态始,电路已输入过10。若输入X为1,转入新设次态S6,S6态的涵义为:自初态始,电路已输入过11。
5.根据输入序列每三位判决一次的设计要求,当电路在S3、S4、S5、S6态时,由于电路均已输入二个代码,下一个状态均应回到S0态。
6.输出审定:电路处于S3、S4、S5、S6态时,与此时输入代码一起共三位应可判定输出。分析可得,只有在S6态且输入X为1时,表示电路已输入序列101,输出Z应为1,其它情况Z皆为0。同时,电路在S0、S1、S2时,由于电路输入代码不够三位,不需判定,输出Z应为0。
7.由上可得原始状态图与原始状态表。
现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S1
S2
0
0
S1
S3
S4
0
0
S2
S5
S6
0
0
S3
S0
S0
0
0
S4
S0
S0
0
0
S5
S0
S0
0
1
S6
S0
S0
0
0
三位一判101检测电路原始状态表
(2)解:推导不重码101检测电路原始状态图。(选用一次设态法。)
分析设态。
输入串码X。输出指示Z。输出条件:电路连续输入101则Z为1,被检测代码不可重用。
由于代码不可重用,检测判决必须从判决收到101后新收到一个1或0后从新开始。新开始设为初态S0。在初态时,只有收到一个1才可能进入检测判决,所以S0为收到一个0或连续到多个0。在初态时,收到一个1或连续多个1进入检测判决态,设为S1。为检测101,检测判决必须从S1开始记住收到10和101两种情况,分别设S1和S2态。
分析设态综述如下:
S0:判决收到101后,收到一个0或连续到多个0。初态,没有进入检测判决起始。
S1:判决收到101后收到一个1,或连续收到多个1。检测判决起始。
S2:检测判决起始后累计收到10。
S3:检测判决起始后累计收到101。
连接转移。
当电路处于S0:若X为0,则不进入检测判决起始,次态仍为初态S0,输出Z为0;若X为1,进入检测判决起始,次态为S1,输出Z为0。
当电路处于S1态:若X为0,检测判决起始后累计收到10,次态为S2,输出Z为0;若X为1,连续收到1,次态仍为判决起始态S1,输出Z为0。
当电路处于S2态:若X为0,连续收到0,次态为回到初态S0,输出Z为0;若X为1,累计收到101,次态为S3,输出Z为1。
当电路处于S3态:若X为0,判决后收到0,次态回到初态S0,输出Z为0;若X为1,判决后收到1,次态检测判决起始S1,输出Z为0。
由上得不重码101检测电路原始状图与表。
不重码101检测电路原始状态表现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S0
S1
0
0
S1
S2
S1
0
0
S2
S0
S3
0
1
S3
S0
S1
0
0
(3)解:推导可重码101检测电路原始状态图。(选用由初始至输出设态法)
1.建立不完全初始状态图。
为检测判定累计输入101,设态S3;为检测累计输入101,应记忆累计输入10,设态S2;为检测收到累计输入10,应设态记忆输入1,设态S1(连续收到1,或检测判定收到101后收到1);
为检测判定起始,应设态记忆没有进入检测判定起始的初态,设态S0(连续收到0)。
由上分析可设态如下,并得初始状态图中实线部分。
S0:初态,连续收到0。
S1:连续收到1,或检测判定101后收到1。
S2:累计收到10。
S3:累计收到101。
2.补充转移线。
当电路处于S0态,补充X为0时,为连续收到0,次态仍为本态S0。
当电路处于S1态,补充X为1时,为连续收到1,次态仍为本态S1。
当电路处于S2态,补充X为0时,为连续收到0,次态反回初态S0。
当电路处于S3态,补充X为0时,为累计收到10,次态为S2。补充X为1时,为连续收到1,次态为S0。
图中虚线部分为上述结果的补充,补充后得完整的原始状态图。并可由原始状态图列出原始状态表。
可重码101检测电路原始状态表现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S0
S1
0
0
S1
S2
S1
0
0
S2
S0
S3
0
1
S3
S2
S1
0
0
上述解法中,也可不设S3态,因在S2态时,X为1已可检测101。又因可重码,当X为1时,次态可规于S1态,当X为0时,次态规于S0态。原始状态图便如下图。
这说明上述解法中所设S3态是多余态。两种状态图的逻辑功能相同,但后者在逻辑实现时,所用器件较少,所以原始状态图需化简。多余态的消除有步骤可循,在状态化简部分详介。
101检测(另解)原始状态表如下。
可重码101检测电路原始状态表另解现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S0
S1
0
0
S1
S2
S1
0
0
S2
S0
S1
0
1
例,推导一时序电路原始状态图。时序电路的逻辑功能如下:
电路的的逻辑功能是对一串行随机输入序列中1的个数进行受控检测。X1为控制输入,X2为串行随机输入,Z1、Z2为输出指示。当X1为0时,电路统计X2输入1的个数,此时Z1Z2指示为00。当X1为1时,X2输入不变,恒为0,电路不再做统计工作,给出统计结果并返回原态。若X1为0时,X2输入过二个或二个以上的1,则X1为1时,Z1Z2为10,否则,Z1Z2为01。
解:分析电路逻辑功能:X1为1,电路返回一个初始状态,X1为0,电路应有记忆X2没有输入1,输入了一个1和输入了一个以上1三种情况,因此设SA、SB、SC三个状态:
SA:为初态,表示X2端尚未输入过1。
SB:表示X2端输入了一个1。
SC:表示X2端输入过一个以上的1。
对于每种状态,输入存在三种情况:X1为0时,X2为0和1;X1为1时,X2恒为0;不存在X1、X2同为1情况。下面分二步完成原始状态图。
一.首先连接X1为0时的状态转移线。此时ZZ永为00。
SA:X2=0,电路没有输入1,次态仍为原态;X2=1,电路输入1,次态转为SB态。
SB:X2=0,电路没有输入1,次态仍为原态;X2=1,电路输入1,次态转为SC态。
SC:X2=0,电路没有输入1,次态仍为原态;X2=1,电路输入1,但仍是输入一个以上1的情况,次态仍为SC态。
受控检测原始状态图补充各态在X1为1时的转移连接。
因当X1=1 时,X2恒为0,各态的次态均返回初态SA。但根据所处状态不同,Z1Z2给出不同的统计结果。
当X1=1,X2=0时:
SA态,Z1Z2为01;无输入2个或2个以上1。
SB态,Z1Z2为01;无输入2个或2个以上1。
SC态,Z1Z2为10。输入2个或2个以上1。
受控检测电路原始状态表现态
次态
输出Z1Z2
X1X2
X1X2
X1X2
X1X2
X1X2
X1X2
X1X2
X1X2
00
01
11
10
00
01
11
10
SA
SA
SB
φ
SA
00
00
φ
01
SB
SB
SC
φ
SA
00
00
φ
01
SC
SC
SC
φ
SA
00
00
φ
10
注意:X1X2=11的情况。
Sequential Circuits
4.32 同步时序电路设计(书页163-168)
同步时序电路设计是其分析的逆过程,是根据对电路逻辑功能的要求设计出具体的时序逻辑电路。
同步时序电路是由触发器和组合逻辑构成,其设计就是选择触发器和寻找组合电路,并将二者有机连接构造出满足设计要求的时序逻辑电路的过程。
设计步骤组合逻辑电路设计要求是用真值表表述的,与其对应,时序电路设计要求用状态表(或状态图)表述。一旦得到了状态表,我们便可以用组合电路的设计方法导出输出方程和激励方程并进而画出逻辑图。所以,同步时序电路设计的关键是找状态表。找状态表的过程就是设法把文字描述的设计要求转化为状态表,这是非常重要的第一步。
据设计要求建立原始状态表。由于其可能包括多余状态,故称之为原始状态表。如首先得到状态图,将其转化为状态表。
状态化简。消除原始状态中的多余状态,得到简化状态表。
状态分配。将字符表示的状态指定一个二元代码,得到代码形式状态表。
选择触发器类型。
据简化的代码形式状态表导出触发器的简化激励函数。
根据简化的代码形式状态表导出电路的简化输出函数。
画出逻辑图。
自启动检查。
在实际工作中,完成逻辑设计后,还应利用计算机辅助设计进行逻辑模拟,验证设计的正确性。(略)
建立状态图和状态表
情况简单,可直接建立状态表。
情况复杂,先建立状态图,再转化为状态表。
状态图必须准确地反映文字表述的设计要求,必须仔细认真。不幸的是,这步工作没有严格的步骤和规范的程序可循,只有掌握基本思路,积累经验。
正确建立状态图三个要素:
1.分析出输入变量的个数和情况;
2.分析出电路应给出输出指示的条件;
3.最为关键,分析出电路所应记住历史情况(状态)的个数,及每种历史情况的准确描述。
状态设立方法:
一次设态。
一次正确的分析出电路所应具有的态和态的准确涵义,然后以每个电路状态作为现态,根据各种可能的输入分别判断出每种输入情况下电路的输出和下一时刻转入的状态,画出所有状态之间的转移线,完成原始状态图的建立。
2.逐步设态。
先设定一初始状态,在此基础上,根据各种输入情况下电路状态的变化,设立并命名新态(特别要准确定义新态的涵义)。然后,对于每个新态,再连续进行上述过程,直至不必再设新态,完成原始状态图的建立。电路可能出现三种状态转移情况:1.次态是本身,将转移线连回本态。2.次态是已建态,将转移线连至已建态。3.次态是新态,设立并命名新态。
3.由初始至输出设态首先分析出电路产生输出指示的状态转移过程,据此先由初始到输出设立一系列电路状态,单向转移得到不完全的初始状态图。然后,再补充各态中没有考虑的状态转移线,从而完成原始状态图的建立。
电路状态设立过程可能重复,从而产生多余态,多余态不会影响电路功能,可在状态化简时消除。有时不必非要消除。关键是设态时不要发生遗漏和错误。
例,用同步时序电路实现对一串行随机输入序列的101检测。输入X,输出Z。
为训练建立原始状态图的严谨性,导出下述三种情况检测电路的原始状态图。
(1) 对输入序列每三位进行一次判决,若三位代码是101,则对应最后一个1时,输出Z为1,其它情况Z为0。
每逢遇到输入序列为101时,输出Z为1。但检测时用过的代码不可重复使用。
每逢遇到输入序列为101时,输出Z为1。但检测时用过的代码可重复使用。(即前一个101的最后一个1可以作为下一个101的第一个1使用。)
先―――――――――后试验序列 X,0 1 0 1 0 0 1 0 1 0 1 0
(1) Z,0 0 0 0 0 0 0 0 1 0 0 0
(2) Z,0 0 0 1 0 0 0 0 1 0 0 0
(3) Z,0 0 0 1 0 0 0 0 1 0 1 0
(1)解:推导三位一判101检测电路原始状态图。(选用逐步设态法。)
设定初始状态S0(判决起始等待输入)。
当电路在S0状态时,若此时输入X为0,转入新设次态S1,S1态的涵义为:自初态始,电路已输入过一个0。若输入X为1,转入新设次态S2,S2态的涵义为:自初态始,电路已输入过一个1。
3.当电路在S1状态时,若输入X为0,转入新设次态S3,S3态的涵义为:自初态始,电路已输入过00。若输入X为1,转入新设次态S4,S4态的涵义为:自初态始,电路已输入过01。
4.当电路在S2状态时,若输入X为0,转入新设次态S5,S5态的涵义为:自初态始,电路已输入过10。若输入X为1,转入新设次态S6,S6态的涵义为:自初态始,电路已输入过11。
5.根据输入序列每三位判决一次的设计要求,当电路在S3、S4、S5、S6态时,由于电路均已输入二个代码,下一个状态均应回到S0态。
6.输出审定:电路处于S3、S4、S5、S6态时,与此时输入代码一起共三位应可判定输出。分析可得,只有在S6态且输入X为1时,表示电路已输入序列101,输出Z应为1,其它情况Z皆为0。同时,电路在S0、S1、S2时,由于电路输入代码不够三位,不需判定,输出Z应为0。
7.由上可得原始状态图与原始状态表。
现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S1
S2
0
0
S1
S3
S4
0
0
S2
S5
S6
0
0
S3
S0
S0
0
0
S4
S0
S0
0
0
S5
S0
S0
0
1
S6
S0
S0
0
0
三位一判101检测电路原始状态表
(2)解:推导不重码101检测电路原始状态图。(选用一次设态法。)
分析设态。
输入串码X。输出指示Z。输出条件:电路连续输入101则Z为1,被检测代码不可重用。
由于代码不可重用,检测判决必须从判决收到101后新收到一个1或0后从新开始。新开始设为初态S0。在初态时,只有收到一个1才可能进入检测判决,所以S0为收到一个0或连续到多个0。在初态时,收到一个1或连续多个1进入检测判决态,设为S1。为检测101,检测判决必须从S1开始记住收到10和101两种情况,分别设S1和S2态。
分析设态综述如下:
S0:判决收到101后,收到一个0或连续到多个0。初态,没有进入检测判决起始。
S1:判决收到101后收到一个1,或连续收到多个1。检测判决起始。
S2:检测判决起始后累计收到10。
S3:检测判决起始后累计收到101。
连接转移。
当电路处于S0:若X为0,则不进入检测判决起始,次态仍为初态S0,输出Z为0;若X为1,进入检测判决起始,次态为S1,输出Z为0。
当电路处于S1态:若X为0,检测判决起始后累计收到10,次态为S2,输出Z为0;若X为1,连续收到1,次态仍为判决起始态S1,输出Z为0。
当电路处于S2态:若X为0,连续收到0,次态为回到初态S0,输出Z为0;若X为1,累计收到101,次态为S3,输出Z为1。
当电路处于S3态:若X为0,判决后收到0,次态回到初态S0,输出Z为0;若X为1,判决后收到1,次态检测判决起始S1,输出Z为0。
由上得不重码101检测电路原始状图与表。
不重码101检测电路原始状态表现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S0
S1
0
0
S1
S2
S1
0
0
S2
S0
S3
0
1
S3
S0
S1
0
0
(3)解:推导可重码101检测电路原始状态图。(选用由初始至输出设态法)
1.建立不完全初始状态图。
为检测判定累计输入101,设态S3;为检测累计输入101,应记忆累计输入10,设态S2;为检测收到累计输入10,应设态记忆输入1,设态S1(连续收到1,或检测判定收到101后收到1);
为检测判定起始,应设态记忆没有进入检测判定起始的初态,设态S0(连续收到0)。
由上分析可设态如下,并得初始状态图中实线部分。
S0:初态,连续收到0。
S1:连续收到1,或检测判定101后收到1。
S2:累计收到10。
S3:累计收到101。
2.补充转移线。
当电路处于S0态,补充X为0时,为连续收到0,次态仍为本态S0。
当电路处于S1态,补充X为1时,为连续收到1,次态仍为本态S1。
当电路处于S2态,补充X为0时,为连续收到0,次态反回初态S0。
当电路处于S3态,补充X为0时,为累计收到10,次态为S2。补充X为1时,为连续收到1,次态为S0。
图中虚线部分为上述结果的补充,补充后得完整的原始状态图。并可由原始状态图列出原始状态表。
可重码101检测电路原始状态表现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S0
S1
0
0
S1
S2
S1
0
0
S2
S0
S3
0
1
S3
S2
S1
0
0
上述解法中,也可不设S3态,因在S2态时,X为1已可检测101。又因可重码,当X为1时,次态可规于S1态,当X为0时,次态规于S0态。原始状态图便如下图。
这说明上述解法中所设S3态是多余态。两种状态图的逻辑功能相同,但后者在逻辑实现时,所用器件较少,所以原始状态图需化简。多余态的消除有步骤可循,在状态化简部分详介。
101检测(另解)原始状态表如下。
可重码101检测电路原始状态表另解现在状态
下一个状态
输出Z
x=0
x=1
x=0
x=1
S0
S0
S1
0
0
S1
S2
S1
0
0
S2
S0
S1
0
1
例,推导一时序电路原始状态图。时序电路的逻辑功能如下:
电路的的逻辑功能是对一串行随机输入序列中1的个数进行受控检测。X1为控制输入,X2为串行随机输入,Z1、Z2为输出指示。当X1为0时,电路统计X2输入1的个数,此时Z1Z2指示为00。当X1为1时,X2输入不变,恒为0,电路不再做统计工作,给出统计结果并返回原态。若X1为0时,X2输入过二个或二个以上的1,则X1为1时,Z1Z2为10,否则,Z1Z2为01。
解:分析电路逻辑功能:X1为1,电路返回一个初始状态,X1为0,电路应有记忆X2没有输入1,输入了一个1和输入了一个以上1三种情况,因此设SA、SB、SC三个状态:
SA:为初态,表示X2端尚未输入过1。
SB:表示X2端输入了一个1。
SC:表示X2端输入过一个以上的1。
对于每种状态,输入存在三种情况:X1为0时,X2为0和1;X1为1时,X2恒为0;不存在X1、X2同为1情况。下面分二步完成原始状态图。
一.首先连接X1为0时的状态转移线。此时ZZ永为00。
SA:X2=0,电路没有输入1,次态仍为原态;X2=1,电路输入1,次态转为SB态。
SB:X2=0,电路没有输入1,次态仍为原态;X2=1,电路输入1,次态转为SC态。
SC:X2=0,电路没有输入1,次态仍为原态;X2=1,电路输入1,但仍是输入一个以上1的情况,次态仍为SC态。
受控检测原始状态图补充各态在X1为1时的转移连接。
因当X1=1 时,X2恒为0,各态的次态均返回初态SA。但根据所处状态不同,Z1Z2给出不同的统计结果。
当X1=1,X2=0时:
SA态,Z1Z2为01;无输入2个或2个以上1。
SB态,Z1Z2为01;无输入2个或2个以上1。
SC态,Z1Z2为10。输入2个或2个以上1。
受控检测电路原始状态表现态
次态
输出Z1Z2
X1X2
X1X2
X1X2
X1X2
X1X2
X1X2
X1X2
X1X2
00
01
11
10
00
01
11
10
SA
SA
SB
φ
SA
00
00
φ
01
SB
SB
SC
φ
SA
00
00
φ
01
SC
SC
SC
φ
SA
00
00
φ
10
注意:X1X2=11的情况。