第5章同步时序逻辑电 路 同步时序逻辑电路是时序逻辑电路的一个主要分支,它与其他逻辑电路最大的区别在于电路状态 改变方式是同步进行的。 本章首先介绍同步时序逻辑电路的一些基本概念,然后详细讨论同步时序逻辑电路的设计和分析 方法,并对一些在数字系统尤其是计算机电路中常用的同步时序逻辑电路模块的基本原理进行讨论,最 后给出同步时序逻辑电路的VHDL 描述方法。 5.1 同步时序逻辑电路概述 5.1 同步时序逻辑电路模型及特点 1. 1. 同步时序逻辑电路的模型 图5-1给出了同步时序逻辑电路的结构模型,它的存储元件使用边沿触发的触发器元件,所有触发 器受统一时钟信号CP 的控制,可保证电路所有的触发器能够在同一个时钟边沿同步地发生状态变化。 按照时序机的定义,同步时序逻辑电路由以下几部分 组成。 (1)输入变量有限集合I={x2,…,}, 其中 n 个 输入变量,有2n 种输入组合。 x1,xn (2)输出变量有限集合O={Z1,Z2,…,Zm }。 (3)内部状态变量有限非空集合Q={y1,y2,…,yq }, 其中 q 为状态变量的个数,共有2q 种状态组合。 (4)输出函数集合 Z {x2,…,n nn 图5- 1 同步时序逻辑电路的模型y2,…,y), 其中i=1,2,…, =Z}。 i =fi (x1,xn ,y1, 序逻辑电路为Mealy型电路。当Z(q) 是输入和状态的函数((m) 即I×Q→O)时,该同步时 当 Z 仅是状态的函数(即Q→O)时,该同步时序逻辑电路为Moore型电路。 n+1 nnn (5)次态函数集合 N =x1,xn ,2,…,其中j=2,…,}。 ={(x2,…,1,), 1, yjgjyyyq 同步时序逻辑电路选用触发器作为存储元件,次态函数集合 N 分(q) 成了两部分。 触发器状态方程:yn+1 ( n ),…其中 Y 是触发器的激励函数集合,也是所有激 励变量{Y2,…,}的子集。 = Yn+1 Y, j 1,q, nnn ① j gjyj=2, Y1,Yp 触发器激励函数集合:{=x1,x2,…,yy2,…, q ), 其中k=1,2,…,}。 ② k hk (xn ,1,yp 2. 同步时序逻辑电路的特点 同步时序逻辑电路的模型决定了同步时序逻辑电路具有如下特点。 (1)电路状态的变化受统一的时钟脉冲控制。 (2)电路状态的改变,只发生在时钟的上升沿或下降沿时刻。 (3)每个时钟脉冲的上升沿或下降沿只能使电路状态发生一次变化。 169 3. 同步时序逻辑电路的统一时钟信号 统一的时钟脉冲是同步时序逻辑电路工作的基本步调,由于存在统一的时钟脉冲,同步时序逻辑电 路才能按预定的状态序列有条不紊地工作。时钟信号是周期固定、连续不停的0、1交替序列。图5-2 给出了时钟信号示例。上升沿是指信号0→1 变化的时刻,也可以表示为“↑”;下降沿是指信号1→0 变 化的时刻,也可以表示为“↓”。 在统一时钟脉冲控制下,同步时序逻辑电路所有的触发 器在同一个时钟边沿(上升沿或下降沿,与使用的触发器类 型有关)发生状态的改变,并且每个时钟边沿所有的触发器图5- 2 时钟信号 状态只发生一次变化。这种工作方式使同步时序逻辑电路 的状态变化容易控制,不会受到其他激励信号上的各种毛刺的干扰,提高了电路的可靠性。 在研究同步时序逻辑电路时,通常不把统一时钟信号作为输入信号处理,而是将它当成一种默认的 时间基准,电路状态的改变只能发生在统一时钟信号的边沿时刻。若把某个时钟脉冲边沿到来前电路 所处的状态称为现态,则该时钟脉冲边沿作用后电路的状态称为次态,即前一个脉冲的次态是后一个脉 冲的现态。 5.2 同步时序逻辑电路的描述方法 1. 以下几种同步时序逻辑电路的描述方法虽然都可用于描述同步时序逻辑电路的工作原理,但各自 的用途不同。 1. 用状态图描述 这种方法使用直观的图形方法描述电路的功能,可以用于电路设计初期的电路建模阶段。 2. 用状态表描述 这种方法使用真值表方法描述电路的功能,可以用于电路的简化设计阶段。 3. 用时序图描述 这种方法使用波形描述电路的功能,也可以用于电路设计初期的电路建模阶段。 4. 用函数表达式描述 这种方法使用数学的方法描述电路的功能,可以用于电路的实现阶段。同步时序逻辑电路的函数 表达式有两种描述方法。 1)输出函数与次态函数 nnn 输出函数:Zi=fi(x1,x2,…,xn ,1,2,…,), 其中i=1,2,…,m。 yyyq n+1 nnn 次态函数:y(x2,…,1,2,…,), 其中j=1,2,…, 。 这种描述方法只说明了输出和次态与输入和现态的关系,并未表明采用什么电路实现 。 2)输出函数、激励函数和状态方 程 gjxn , j =x1,yyyq q nnn 输出函数:Zi=x2,…,xn ,1,2,…,), 其中i1,2,…, 。 状态方程:yn+1 =Y, n 其中j=2,… 。 fi(x1,yyy= m (), 1,,(q) j gjyj q nnn hk (x2,…,1,), 1,。 激励函数:Yn+1 =x1,xn ,2,…,其中k=2,…, k yyyq p 这种描述方法不仅说明了输出和次态与输入和现态的关系,还表明了采用什么样的触发器作为存 储元件。 170 5. 用原理图描述 这种方法使用原理图符号描述电路的原理性结构,再利用门电路实现组合逻辑函数,最后利用触发 器实现状态存储电路。 6. 用VHDL 描述 这种方法使用VHDL 描述同步时序逻辑电路,与用VHDL 描述触发器的程序结构基本相同,不同 之处在于,同步时序逻辑电路需要在一个进程的同一个时钟边沿产生所有状态的次态,而触发器只需要 处理一个状态。 5.2 同步时序逻辑电路的设计 电路设计的基本任务是按照要实现的功能描述给出电路实现。 同步时序逻辑电路的设计过程与组合逻辑电路的设计过程基本一致,主要包括两个环节:一是建 立同步时序逻辑电路模型,二是用合适的集成逻辑器件实现电路。 1. 建立同步时序逻辑电路模型 在实际的电路设计中,功能描述是多种多样的,可以是直接的状态图、状态表、函数表达式,也可以 是波形图、表格、文字等描述方法。无论什么样的描述方法,关键是要理解功能描述表达的含义,建立正 确的电路模型,这样才能够设计出符合功能描述的电路。 同步时序逻辑电路模型的建立过程如下。 (1)根据功能描述,确定输入信号、输出信号,建立原始状态图和原始状态表。这个环节实际上是 对次态函数和输出函数的建模,其关键是正确理解功能描述表达的含义,用状态图和状态表全面、正确 地描述电路的状态、输出及状态迁移过程。 (2)将原始状态表化简为最小化状态表。原始状态图、原始状态表的状态个数是在分析阶段根据 功能描述人为设定的,所以原始状态的个数可能存在冗余。由于冗余的状态会增加触发器元件个数,因 此需要通过原始状态表的化简消除冗余状态,使状态表中的状态个数最少。 (3)状态分配,将符号化状态表转换为二进制状态表。原始状态表可能使用符号表示,由于最终需 要用触发器实现,因此要把符号化状态表转换为二进制状态表。这就需要根据状态个数确定使用触发 器的数目,进而给每个状态指定二进制编码。 (4)根据二进制状态表,写出电路的次态函数和输出函数。二进制状态表事实上就是次态函数和 输出函数的真值表,利用真值表可以很容易写出电路次态函数和输出函数的表达式。 2. 用合适的集成逻辑器件实现电路 根据不同的电路规模、电路实现条件,可以选择相应的集成逻辑器件来实现电路。 (1)用触发器和门电路实现同步时序逻辑电路。用触发器作为存储元件时,首先要确定使用触发 器的类型,选定触发器后,触发器的状态方程就确定了,同时触发器的激励端也确定了。这时就需要利 用触发器的状态表和激励表,确定激励函数真值表,将次态函数分解为触发器的状态方程和激励函数表 达式,再结合输出函数表达式画出电路。 (2)用触发器和SPLD 器件实现同步时序逻辑电路。用SPLD 器件的与或门阵列替代门电路实现 时序电路的组合逻辑电路部分,存储元件仍然需要使用触发器,其电路实现过程与用触发器和门电路实 现时序逻辑电路的过程完全相同。在有些SPLD 器件中也集成了一部分触发器电路,这样可以减少使 用分立的触发器元件,其电路实现过程与使用专门的触发器元件实现电路的方法基本相同。这部分内 171 容本章不再专门讨论。 (3)用VHDL 描述同步时序逻辑电路。根据电路的需要,可以采用行为描述法、数据流描述法或 结构描述法对电路功能进行描述。 2.建立原始状态图和原始状态表 5.1 状态图和状态表能够直观、清晰地反映同步时序电路的逻辑功能。所以,同步时序电路设计的第一 步是建立能够描述功能要求的原始状态图和原始状态表。 原始状态图和原始状态表通常是根据问题的描述直接建立起来的,它们是对设计要求的最原始的 抽象,是设计电路的初始依据。如果原始状态图不能正确地反映设计要求,那么依此设计出来的电路将 会是错误的。因此,建立正确的原始状态图和原始状态表是同步时序电路设计中最关键的环节。 同步时序电路有米利(Mealy)型和摩尔(Moore)型两种模型,具体将电路设计成哪种模型,有的由 设计要求规定,有的可由设计者选择。不同模型对应的电路结构不同,设计时,应根据问题中的信号形 式、电路所需器件的多少等进行综合考虑。 状态图和状态表是可以相互转换的,由状态图转换为状态表时,只需将所有状态在状态表的最左列列 出作为现态,将所有输入组合在状态表的第二行列出作为输入,根据状态图的迁移方向(次态)和迁移条件(输 入输出), 在状态表的现态和输入交叉位置填上对应的次态和输出即可,无关的次态和输出填入任意项X。 建立原始状态图没有统一的方法。一般而言,对于不同的电路功能描述,其状态个数有确定和不确 定两种情况,其状态图的建立方法是不一样的。 1. 状态个数确定的情况 通过对功能描述的分析,能够明确确定最少状态个数时,首先分别给每个状态分配一个不同的符号 表示,在状态图上画出所有的状态。然后分析功能描述的含义,在状态图上标出每个状态在所有输入情 况下的状态迁移方向和对应的输出取值。 需要强调的是,对于有 n 个外部输入信号的状态图,从每个状态出发,必须要考虑所有2n 种输入组 合情况下对应的次态和输出,否则状态图将是不完整的。 例5- 1 某模5加1和加2计数器,有一个输入 x 和一个输出Z。输入 x 为加1、加2控制信号,当 x=0时,计数器在时钟脉冲作用下进行加1计数;当x=1时,计数器在时钟脉冲作用下进行加2计数; 当电路计满5个状态后,输出 Z 产生一个1信号作为进位输出;平时 Z 输出为0。试建立该计数器的 Mealy型原始状态图和状态表。 解:根据题意,电路有一个输入x,一个输出Z,在计数脉冲CP 作用下进行同步计数。 由于是模5计数器,所以电路应有5个状态,~-a) 分别对应计数值04。首先画出5个状态如图53(所 图5- 3 例5-1的状态图 (a)5个状态;(b)部分状态图;(c)完整状态图 172 示。从状态0出发,分别考虑x=0和x=1两种情况,可得其状态的次态和输出,如图5-3(b)所示。同 样,从每个状态出发,分别考虑x=0和x=1两种情况,可得完整的状态,如图5-3(c)所示。 将状态图中每个状态在x=0和x=1时的迁移次态和输出情况填入表5-1中,即构成模5加1和 加2计数器的状态表。 表5- 1 例5-1的状态表 现态 次态,输出 x= 0 x= 1 0 1,0 2,0 1 2,0 3,0 2 3,0 4,0 3 4,0 0,1 4 0,1 1,1 由状态图构造状态表时,首先将状态0~4在状态表的最左列列出,将输入 x 的两种取值情况在状 态表的第二行列出;然后在状态表中每一个现态和输入交叉位置填上状态图中对应的次态和输出,即可 构成完整的状态表。 2. 状态个数不确定的情况 通过对功能描述的分析,在不能明确知道最少状态个数时,可以采用以下过程建立原始状态图。由 于状态个数不确定,在原始状态图和状态表中一般用字母或数字表示状态。 (1)设定一个初始状态A,表示电路没有任何输入时的初始状态。 (2)从每一个已有的现态出发,对于所有可能的输入组合,分别考虑每一种输入组合情况下应该产 生的次态和输出,建立现态与次态之间的迁移关系。 如果要迁移的下一个状态在状态图中不存在,则增加一个新状态,同时在这两个状态之间画一个迁 移箭头并标注迁移条件(输入输出); 如果要迁移的下一个状态在状态图中已经存在,则直接在这两个状 态之间画一个迁移箭头并标注迁移条件(输入输出)。 态图 ( 。 3)对每个新产生的状态,重复步骤(2), 直到没有新状态产生,这时就构成了一个完整的状 需要注意的是,建立完整、正确的原始状态图是同步时序电路设计中最关键的一步,当问题描述比 较复杂时,不能为了减少状态个数而建立不完整或错误的状态图,冗余的状态通过后期状态表的化简可 以消除。 例5- 2 某序列检测器有一个输入端和一个输出端。在输入端输入一串随机的二进制代码x,当输 入序列中出现“011”序列时,输出 Z 产生一个1输出,平时 Z 输出0。典型输入、输出序列如下。 输入x:101011100110 输出Z:000001000010 试得到该序列检测器的原始状态图和原始状态表。 解:假定用Mealy型同步时序逻辑电路设计该序列检测器,原始状态图的建立过程如下。 设电路的初始状态为A。在 A 状态下,如果电路输入为0,由于未得到“011”序列,所以输出 Z 为 0。由于输入的0是序列“011中(”) 的第一个信号,所以应该用一个新状态将它记住,在状态图中增加一个 173 新状态 B 记住收到了第一个0,然后在状态 A 和 B 之间建立一个迁移关系,迁移条件为0/0(x/Z)。当 处在初始状态 A 时电路输入为1,输出 Z 为0,由于1不是序列“011的(”) 第一个信号,故不需要记忆,可 令其停留在状态A,继续等待第一个0的出现。该转换关系 如图5-4(a)所示。 当电路处于状态 B 时,若输入 x 为0,它不是“011”序列 的第二个信号,但仍可作为序列中的第一个信号,故可令电 路停留在状态B,输出为0;若输入 x 为1,则意味着收到了 “011”序列的前两位01,需用一个新状态 C 将它记住,故此时 电路由状态 B 迁移到状态C,输出为0。状态图如图5-4(b) 所示。 当电路处于状态 C 时,若输入 x 为0,则收到的连续3位 代码为“010,(”) 不是关心的序列“011,(”) 但此时最后输入的0依 然可以作为序列的第一个信号,故此时应迁移到状态B,输出 0;若输入 x 为1,则表示收到了序列“011,(”) 需用一个新状态图5- 4 例5-2的Mealy型状态图 D 记住,此时迁移到状态D,输出1。状态图如图5-4(c) 所示。 当电路处于状态 D 时,若输入 x 为0,则应迁移到状态B,由于最后输入的三位已经不是“011”,输 出应为0;若输入 x 为1,此时最后输入的三位为“111,(”) 则应输出0,迁移到状态A,等待0的到来。至 此,状态图中没有未考虑的新状态,得到的状态图就是该序列检测器完整的Mealy型状态图,如图5-4(d) 所示。 相应的原始状态表如表5-2所示。 表5- 2 例5-2的Mealy型状态表 现态 次态,输出 x= 0 x= 1 A B,0 A,0 B B,0 C,0 C B,0 D,1 D B,0 A,0 若用Moore型同步时序电路实现“011”序列检测器的逻辑功能,则电路输出完全取决于状态,而与 输入无直接联系。在画状态图时,应将输出标记在代表各状态的圆圈内。 假定电路初始状态为A,并用状态B、C、 D 分别表示收到了输入 x 送来的0、01 、011 。显然,根据题 意,仅当处于状态 D 时电路输出为1,其他状态下输出均为0。 当从初始状态 A 开始,输入端 x 正好依次输入0、1、1时,则状态从 A 转至B、 B 转至C、 C 转至D。考虑到 A 状态下输入为1时,它不是指 定序列中的第一位信号,不必记忆,可令状态停留在A; B 状态下输入 为0时,它不是指定序列的第二位,但可作为指定序列的第一位,故可使 状态停留在B; C 状态下输入0时,它不是指定序列的第三位,但同样可作 为第一位,故使状态转向B; D 状态下输入0时,同样应转向B,而输入为 图5- 5 例5-2的More型状态图1时,则应使状态进入A。完整的Moore型原始状态图如图5-5所示。 174 相应的原始状态表如表5-3所示。 表5- 3 例5-2的More型状态表 现态 次态输出 x= 0 x= 1 Z A B A 0 B B C 0 C B D 0 D B A 1 例5- 3 设计一个用于引爆控制的同步时序电路,该电路有一个输入端 x 和一个输出端Z。平时输入x 始终为0,一旦需要引爆,则从 x 输入连续的4个1信号(不能被0间断),电路收到第4个1后在输出端 Z 产 生一个1信号点火引爆,该电路连同引爆装置一起被炸毁。试建立该电路的Mealy型状态图和状态表。 解:该电路实际上是一个用于特殊场所的“1111”序列检测器。它与一般序列检测器不同的是,收 到4个1后产生引爆信号,同时使电路自毁,故此时不再存在次态问题。 设状态 A 表示电路初始状态,状态 B 表示收到了第一个1输入, 状态 C 表示收到了连续的2个1输入,状态 D 表示收到了连续的3个 1输入。根据题意, A 状态下 x 为1时,输出为0,转向状态B; B 状态下 x 为1时,输出为0, C 状态下 x 为1时, 转向状态 转向状态C;输出为0, D;而 D 状态下 x 为1时,输出为1,次态随意(实际上已不存在次态)。 A 状态下 x 为0时,可令输出为0,停留在状态A,而B、C、 D 这3 个状态下 x 为0时,前面的1可能是误触发或干扰信号,故它们的输 图5- 6 例5-3的Mealy型状态图出Z=0,且均应回到 A 等待可靠的引爆信号。据此,可得到该电路的 Mealy型原始状态图如图5-6所示 。 原始状态表如表5-4所示,表中用 X 表示不确定次态或不确定输出 。 表5- 4 例5-3的Mealy型状态表 现态 次态,输出 x= 0 x= 1 A A,0 B,0 B A,0 C,0 C A,0 D,0 D A,0 ×,1 5.2 状态表化简 2. 从原始状态图的建立过程可以看出,在明确知道状态个数的情况下,每个原始状态都是必不可少 的,这样的状态表不需要化简。在状态个数不明确的情况下,原始状态可能有冗余。在设计具体电路 时,状态数目的多少将直接决定电路中所需触发器数目的多少。为了降低电路的复杂性和电路成本,应 尽可能地使状态表中包含的状态数达到最少,这时就需要进行状态表化简。 175 状态表化简就是采用某种化简技术从原始状态表中消去多余状态,得到一个既能正确地描述给定 的逻辑功能,又能使状态数目达到最少的状态表,通常称这种状态表为最小化状态表。状态表化简的基 本思想就是把那些具有相同含义的状态合并为一个状态,使化简后的状态在状态表中都是必不可少的。 原始状态表可能存在两种情况,一种是状态表中所有的次态和输出都是确定的完全定义状态表,另 一种是不完全定义状态表。这两种状态表的化简方法有所不同,下面分别讨论。 1. 完全定义状态表的化简 完全定义状态表的化简建立在状态等效概念基础之上。完全定义状态表中,如果两个状态是等效 的,则称这两个状态为等效状态对,可以合并为一个状态。如果 n 个状态相互之间都是等效的,则称这 n 个状态为状态等效类,可以合并为一个状态。完全定义状态表的化简过程就是找出能够覆盖原始状 态表所有状态的最大等效类,合并等效类后得到最小化状态表的过程。 1)等效状态对(Si,Sj) 假设状态Si 和Sj 是完全定义状态表中的两个状态,如果对于所有可能的输入序列,分别从Si 和 Sj 出发,得到的次态和输出响应序列完全相同,则状态Si 和Sj 是等效状态对,记作(Si,Sj)。 在状态表中的每一种输入组合情况下,Si 和Sj 等效,应同时满足如下输出和次态条件。 (1)输出相同。 (2)次态属于下列情况之一。 ①次态相同 。 次态相同是指在某一种输入情况下,现态Si 和Sj 的次态均为Sk 。 ②次态交错或为各自的现态。 次态交错是指在某一种输入情况下,现态Si 的次态是Sj ,现态Sj 的次态是Si。 次态是各自的现态是指在某一种输入情况下,现态Si 的次态是Si,现态Sj 的次态是Sj 。 ③次态循环或为等效对。 次态循环是指在某一种输入情况下,现态Si 的次态是Sj ,Sj 的次态是Sk ,Sk 的次态是Si,Si、Sj 和Sk 形成了次态循环。 次态为等效对是指在某一种输入情况下,Si 的次态是Sk ,Sj 的次态是Sl,而Sk 与Sl 是等效状 态对。 以上情况在图5-7中给予了图示说明。 从状态表中找出等效状态对是状态表化简的第一步,当状态表中状态个数比较多时找出所有等效 状态对的工作是比较烦琐的,为了进行有序比较,下面给出了寻找等效状态对的有效工具———隐含表。 2)利用隐含表,找到等效状态对 隐含表的基本结构如图5-8所示。隐含表是一个直角三角形阶梯网格,用以实现状态表中状态对 之间的两两比较,从而决定任意两状态之间的等效关系。隐含表的横向和纵向格数相同,因为每个状态 不用和自己比较,所以格数等于原始状态表中的状态数减1。隐含表横向从第一个状态开始标注,纵向 从第二个状态开始标注。 寻找等效状态对时,首先进行两两比较,在隐含表中每个交叉点标注两个状态是否等效,用“√”表 示等效,用“╳”表示不等效,不确定是否等效则标注其依赖的状态对。 两两比较完成后进行关联比较,对于那些不确定是否等效的状态对,要检查其依赖的状态对是否等 效,如果依赖的状态对也不确定是否等效,则继续检查新的依赖状态对,直到有明确的等效或不等效状 态对出现,或者形成循环。一旦出现一个不等效状态对,则整个状态对序列上的所有状态对都不等效; 如果最后确定的状态对都等效,则整个状态对序列上的所有状态对都等效;如果形成循环,则整个状态 176 图5- 7 次态等效条件 (a)次态相同;(b)次态交错;(c)各自的现态;(d)次态循环;(e)次态为等效对 图5- 8 隐含表的基本结构 对循环上的所有状态对都等效。 3)利用等效状态的传递性,寻找最大等效类 等效状态具有传递性。假设Si 和Sj 等效,Sj 和Sk 等效,那么Si 和Sk 也等效。记作(Si,Sj ), (Sj ,Sk )→(Si,Sk )。 等效类是彼此等效的状态构成的等效状态集合。根据等效状态的传递性,可以从等效对中寻找出 由彼此等效的状态构成的等效类。例如,由(Si,)和(Sj ,Sk )可以推出(Si,Sk ), 因此Si、、Sk 属于 同一等效类,记作{Si,Sj ,Sk }。 SjSj 最大等效类是不被任何别的等效类包含的等效类。这里所指的最大,并不是指包含的状态最多,而 是指它的独立性,即使只有一个状态,只要它不被包含在别的等效类中,也是最大等效类。 需要注意的是,由于等效状态具有传递性,因此任意一种状态最终只能出现在一个最大等效类中, 任何两个最大等效类中不可能出现同一个状态。 4)合并最大等效类,作出最小化状态表 最大等效类是彼此等效的所有状态构成的集合,它们可以合并成一个状态。原始状态表的化简过 程,就是寻找最大等效类,然后将每个最大等效类合并为一个新状态,从而得到最小化状态表的过程。 例5- 4 化简表5-5所示的原始状态表。 177 表5- 5 例5-4的状态表 现态 次态,输出 x= 0 x= 1 A C,0 B,1 B F,0 A,1 C F,0 G,0 D D,0 E,0 E C,0 E,1 F C,0 G,0 G C,1 D,0 解: (1)作隐含表。根据画隐含表的规则,可以得到与给定状态表对应的隐含表框架,如图5-9所示。 由于原始状态表中有A~ G 共7个状态,所以隐含表的横向和纵向各有6个方格。纵向从上到下依次 为B~G,横向从左到右依次为A~F。表中每个方格代表一个状态对,如左上角的方格代表状态对 A 和B,右下角的方格代表状态对 F 和G。 (2)顺序比较。顺序比较时,由于输出逻辑值是确定的0或者1,其是否等效一目了然,因此可以根 据输出条件快速确定哪些状态对不等效,剩余的少数不确定状态对再根据次态等效条件进行比较。这 样一来,可以大大减少两两比较的工作量。例如,在状态表5-5中的x=0列,由于状态 G 的输出与其 他状态的输出均不相同,因此可以快速确定状态 G 和其他所有状态不等效,在隐含表中 G 所在的行全 部标记“╳”;同样,在x=1列,根据输出是否相同很快可以确定状态A、B、 E 与其他状态也不等效,在 隐含表中相应位置直接标记“╳”。由输出条件确定的隐含表如图5-9所示。 剩余的少数状态对只需按照次态等效条件顺序进行两两比较。状态表5-5中,A、 B 是否等效取决 于C、F,因此在A、 B 的交叉点填入状态对CF;同样,A、 E 是否等效取决于B、E,因此在A、 E 的交叉 点填入状态对BE;B、 E 是否等效取决于A、 E 和C、F,因此在B、 E 的交叉点填入状态对AE 和CF 。 后面依次比较C、D、C、 F 和D、F,得到的隐含表如图5-10 所示。其中C、 F 的次态出现了状态交错, 因此C、 F 是等效的,在隐含表的相应方格内填入“√”。 图5- 9 由例5-4输出条件得到的隐含表图5-10 由例5-4次态条件得到的隐含表 经过顺序比较后,还有一些状态对尚未确定是否等效,故应接着进行关联比较。