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

来源:互联网 发布:java中的final关键字 编辑:程序博客网 时间:2024/06/09 22:02

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

 

例:串行输入一个二进制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 0S0S1S0S1S0S2S2S2S1


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


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


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

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

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

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

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

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

 

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

 

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

 

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 魅族手机屏幕锁密码忘了怎么办 手机没设置魅族账号密码忘了怎么办 魅族手机格式化密码忘了怎么办 魅族手机忘记密码了怎么解锁怎么办 手机设置的应用加密忘记密码怎么办 手机上设置应用加密忘记密码怎么办 魅蓝flyme密码忘了怎么办图片 魅族手机经常自动账号锁屏怎么办 魅族锁定后又不知道密码怎么办 魅族手机锁屏锁定了怎么办 魅族手机已锁定怎么办密码忘了 京东抢到了小米8不发货怎么办 第一次网上预约没有就诊卡号怎么办 京东定金交了未发货怎么办 买了没有预售许可证的房子怎么办 买了没有预售证的房子怎么办 苹果手机发烫容易变3g网怎么办 魅族手机有指纹和密码怎么办刷机 魅族手机指纹解锁密码忘了怎么办 魅蓝5s运存占用太多怎么办 魅蓝e2手机照片被删了怎么办 魅蓝e2不小心删除了照片怎么办 魅蓝3s返回键失灵怎么办 糖猫电话手表屏碎了怎么办 魅蓝手机没下安装包强制更新怎么办 老婆赌博输了30多万现在怎么办啊 红米nt2手机通话声音小怎么办? 微信退出后重新登录忘记密码怎么办 微退出后再登录忘记密码了怎么办 忘记微信密码又退出微信怎么办 无线网自家密码忘了也连不上怎么办 无线网密码忘了连接不上怎么办 魅蓝手机插口半夜坏了怎么办 魅族手机换屏后出现跳屏怎么办 小米手机微信小程序转发不出怎么办 苹果手机ad码和密码忘了怎么办 魅族手机摔掉无法开机怎么办 魅族音量+电源键直接开机了怎么办 魅蓝2数字锁机了怎么办 苹果5s蓝屏开不了机怎么办 红米pro更新开发版发热卡怎么办