状态机是一个抽象的逻辑模型,首先举例说明如何将抽象问题具体化。
例 : 串行输入一个二进制bit序列,先输入的为高位,实时监测其表示的二进制数据是否能被3整除。
进一步,我们把它写成简介的状态转换表:
对应绘制状态转移图
有了状态转移图是不是写代码就很明了?在碰到复杂的状态处理时,就可以按照上面方法来处理。
在创建状态机抽象建模时有3个要素需要分析,一是状态的定义,二是状态跳转条件,三是输入与输出。
状态定义是最关键的,状态是控制流程中的节点。状态间具有互斥性,也就是同一时刻状态机仅可能具有一个状态。通常,状态跳转由输入决定。
根据输出的决定因素,状态机可分为两类,
第一类,若输出只和状态有关而与输入无关,则称为Moore状态机
第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机
状态编码方式对状态机也是有影响的,最主要体现在布局布线上。通常采用的是二进制编码,格雷码,独热码。