- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机C语言-状态机原理详解
状态机原理详解
1.什么是状态机
状态机理论最初的发展在数字电路设计领域。状态机特别适合描述那些有发
生有先后顺序,或者有逻辑规律的事情。状态机的本质就是对具有逻辑顺序或时
序规律事件的一种描述方法。状态机通过响应一系列事件而 “运行”。每个事件
都在属于 “当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一
个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必
须是终态。当到达终态,状态机停止。
1.1、有限状态机
(1)常说的状态机是有限状态机FSM。FSM指的是有有限个状态 (一般是一个状态
变量的值),这个机器同时能够从外部接收信号和信息输入,机器在接收到外部
输入的信号后会综合考虑当前自己的状态和用户输入的信息,然后机器做出动
作:跳转到另一个状态。
(2)考虑状态机的关键点:当前状态、外部输入、下一个状态
以我们熟悉的水的三态变化为例,已知当前状态和输入条件,下一状态是确
定的。两个不同的状态,即使输入条件相同,下一状态一般不会相同。
1.2、两种状态机:Moore型和Mealy型
(1)Moore型状态机特点是:输出只与当前状态有关 (与输入信号无关),即可以
把Moore型有限状态的输出看成是当前状态的函数。Moore型状态机相对简单,
考虑状态机的下一个状态时只需要考虑它的当前状态就行了。
(2)Mealy型状态机的特点是:输出不只和当前状态有关,还与输入信号有关。
状态机接收到一个输入信号需要跳转到下一个状态时,状态机综合考虑2个条件
(当前状态、输入值)后才决定跳转到哪个状态。
下面举一个mealy型状态机的例子,学过数字电路的同学可能比较熟悉。
有这样一个序列检测器电路,功能是:检测出串行输入数据 (用Sin表示)
中的4位二进制序列0101(自左至右输入),当检测到该序列时,输出Out 1;没
有检测到该序列时,输出Out 0(注意考虑序列重叠的可能性,如010101,相当
于出现两个0101序列)。
经过分析,首先由于输出不仅和状态有关,而且和输入有关系可以确定采用
Mealy型状态机。该电路在连续收到信号0101时,输出为1,其他情况下输出为
0。在状态图中大圆表示状态,用连接两个大圆的箭头表示转换过程,箭头旁边
的第一个数字表示输入,/后面的数字表示输出。
其次,确定状态机的状态图,该电路必须能记忆所收到的输入数据0、连续
收到前两个数据01...可见至少要是个状态,分别用S1,S2,S3,S4,再加上电路
初始态S0。根据要求可以画出状态图:
序列检测器电路状态机的状态图
观察该图可以看出,当状态机处以S2、S4 的时候,如果输入Sin 1,则电
路会转移到相同的次态S0,如果输入Sin 0,则电路会转移到相同的次态S3,
且两种情况下输出Out都为0。所以,S2、S4为等价状态,可用S2代替S4,于
是得到简化的状态图:
序列检测器电路状态机的化简后状态图
1.3、状态机的主要用途:电路设计、FPGA程序设计、软件设计
(1)电路设计中广泛使用了状态机思想
(2)FPGA程序设计
(3)软件设计 (框架类型的设计,譬如操作系统的GUI系统、消息机制)
1.4、状态机解决了什么问题
传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地
执行。很少有事件能改变标准执行流程;而且这些事件主要涉及异常情况,例如
单片机里面的中断。“命令行实用程序”是这种传统应用程序的典型例子。
另一类应用程序由外部发生的事件来驱动——换言之,事件在应用程序之外
生成,无法由应用程序或程序员来控制。具体需要执行的代码取决于接收到的事
件,或者它相对于其他事件的抵达时间。所以,控制流程既不能是顺序的,也不
能是事先设定好的,因为它要依赖于外部事件。事件驱动的GUI应用程序是这种
应用程序的典型例子,它们由命令和选择 (也就是用户造成的事件)来驱动。获
取更多视频资料欢迎加入397164505朱老师技术群。
文档评论(0)