状态机


状态机

文章插图
状态机状态机由状态暂存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心 。有限状态机简写为FSM(Finite State Machine),主要分为2大类:
第一类,若输出只和状态有关而与输入无关,则称为Moore状态机
【状态机】第二类,输出不仅和状态有关而且和输入有关係,则称为Mealy状态机
基本介绍中文名:状态机
外文名:Finite State Machine
缩写:FSM
又名:状态转移图
基本信息状态机由状态暂存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作,完成特定操作的控制中心 。状态机分为摩尔(Moore)型状态机和米莉(Mealy)型状态机 。就是状态转移图 。举个最简单的例子 。人有三个状态健康,感冒,康复中 。触发的条件有淋雨(t1),吃药(t2),打针(t3),休息(t4) 。所以状态机就是健康-(t4)->健康;健康-(t1)->感冒;感冒-(t3)->健康;感冒-(t2)->康复中;康复中-(t4)->健康,等等 。就是这样状态在不同的条件下跳转到自己或不同状态的图 。状态机综述关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函式组成 。状态机通过回响一系列事件而“运行” 。每个事件都在属于“当前” 节点的转移函式的控制範围内,其中函式的範围是节点的一个子集 。函式返回“下一个”(也许是同一个)节点 。这些节点中至少有一个必须是终态 。当到达终态,状态机停止 。包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函式(transition function)的计算模型 。当输入符号串,模型随即进入起始状态 。它要改变到新的状态,依赖于转换函式 。在有限状态机中,会有有许多变数,例如,状态 机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有 限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等 。传统应用程式的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行 。很少有事件能改变标準执行流程;而且这些事件主要涉及异常情况 。“命令行实用程式”是这种传统应用程式的典型例子 。另一类应用程式由外部发生的事件来驱动——换言之,事件在应用程式之外生成,无法由应用程式或程式设计师来控制 。具体需要执行的代码取决于接收到的事件,或者它 相对于其他事件的抵达时间 。所以,控制流程既不能是顺序的,也不能是事先设定好的,因为它要依赖于外部事件 。事件驱动的GUI应用程式是这种应用程式的典 型例子,它们由命令和选择(也就是用户造成的事件)来驱动 。Web应用程式由提交的表单和用户请求的网页来驱动,它们也可划归到上述类别 。但是,GUI应用程式对于接收到的事件仍有一定程度的控制,因为这些事件要依赖于向用户显示的视窗和控制项,而视窗和控制项是由程式设计师控制的 。Web套用 程式则不然,因为一旦用户採取不在预料之中的操作(比如使用浏览器的历史记录、手工输入连结以及模拟一次表单提交等等),就很容易打乱设计好的应用程式逻辑 。显然,必须採取不同的技术来处理这些情况 。它能处理任何顺序的事件,并能提供有意义的回响——即使这些事件发生的顺序和预计的不同 。有限状态机正是为了满足这方面的要求而设计的 。有限状态机是一种概念性机器,它能採取某种操作来回响一个外部事件 。具体採取的操作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序 。之所以能 做到这一点,是因为机器能跟蹤一个内部状态,它会在收到事件后进行更新 。为一个事件而回响的行动不仅取决于事件本身,还取决于机器的内部状态 。另外,採取 的行动还会决定并更新机器的状态 。这样一来,任何逻辑都可建模成一系列事件/状态组合 。状态机可归纳为4个要素,即现态、条件、动作、次态 。这样的归纳,主要是出于对状态机的内在因果关係的考虑 。“现态”和“条件”是因,“动作”和“次态”是果 。详解如下:①现态:是指当前所处的状态 。②条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移 。③动作:条件满足后执行的动作 。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态 。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态 。④次态:条件满足后要迁往的新状态 。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了 。两种写法有限状态机FSM思想广泛套用于硬体控制电路设计,也是软体上常用的一种处理方法(软 件上称为FMM--有限讯息机) 。它把複杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点 。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现 。但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理无穷的事务 。有限状态机的工作原理如图1所示,发生事件(event)后,根据当前状态(cur_state) ,决定执行的动作(action),并设定下一个状态号(nxt_state) 。