状态机(一):抽象的控制流程模型

状态机是一种抽象的逻辑模型。我们先从一个问题入手谈谈状态机的抽象过程。

 

例:串行输入一个二进制bit序列,先输入的为高位,实时检测其表示的二进制数是否能被三整除。

 

我们可以用一个表格来分析一下这个问题:

        现在状态    

              输入1后的下一个状态            

          输入0后的下一个状态          

状态s0

数据a,能被3整除

2*a+1,被3除余1

2*a,被3整除

状态s1

数据a,被3除余1

2*a+1,被3整除

2*a,被3除余2

状态s2

数据a,被3除余2

2*a+1,被3除余2

2*a,被3除余1


进一步,我们把它写成简介的状态转换表:

 input 1input 0
S0S1S0
S1S0S2
S2S2S1


对应的,绘制状态转换图: 


有了这样一个状态转换图,该问题也就迎刃而解。


状态机抽象建模,有三个要素需要分析,一是状态的定义,二是状态跳转条件,三是输入与输出。

状态的定义是最为关键的,状态是控制流程中的节点,问题的复杂度决定了状态的多少。状态间具有互斥性,既同一时刻,状态机仅可能具有一个状态。

状态跳转往往由输入决定,这反映状态机响应外部事件。当然,也会有自动跳转的不稳定太,描述时序上的自动控制。

根据输出的决定因素,状态机可分为两类,

第一类,若输出只和状态有关而与输入无关,则称为Moore状态机

第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机

 

上例中,输出指示序列数据是否能被3整除,仅由状态决定,因此是Moore机。

 

从上例中,我们可以看出,使用状态机模型抽象问题,首先需要用状态的语言描述问题,定义出有限个不同的状态,这是抽象解决问题最关键的一步;其次,需要分析出状态的转换关系,既状态跳转条件;最后,将输出与状态及输入关联起来。

 

在数字逻辑中,状态机模型应用的最为广泛,从简单的跑马灯,到复杂的CPU,核心部分都是状态机电路。数字电路实现状态机由组合电路和时序电路两部分构成。一般来讲,时序电路里的寄存器结构锁存状态信息,组合电路实现状态转换的逻辑判定。


版权声明:本文为lishuo1028原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。