9.2 有限状态机的描述方式
在本节中,我们将详细讲述一个有限状态机的程序设计步骤及方法。我们简述为“两个定义+三个进程”的设计描述模式。
1.定义状态机的状态及信号变量
定义状态机的状态
设计者首先应该定义状态变量的枚举型,一般在结构体中定义,也可在程序包中定义。
下面是一个例子。
【例9-1】
定义状态变量
设计者还需要定义两个状态机信号变量:当前状态和下状态。
下面是一个例子。
【例9-2】
2.描述状态机的三个进程
一般可以采用三个进程来完成状态机描述:状态寄存器的时序进程,下状态产生逻辑的组合逻辑进程,输出的组合逻辑进程。
描述状态寄存器的进程
下面是一个例子。
【例9-3】
注意:状态机设计中一定要有复位信号,否则状态机可能处在随机状态,无法开始正常工作。当然,以上是异步复位方式,设计者也可以采用同步复位方式,如例9-4所示。
【例9-4】
描述下状态转移逻辑的进程
下状态转移逻辑描述形式比较固定,一般采用CASE语句内嵌套IF语句来描述,基本结构如下例9-5所示。
【例9-5】
注意:在CASE语句之前,一定要加上在其他状态下的处理,以免系统进入不需要的状态(非法状态)而无法回到正常的状态循环。
描述输出逻辑的进程
输出逻辑进程一般描述如下例9-6所示。
【例9-6】
注意:如果是Mealy型状态机就需要其他输入信号,这些信号和当前状态共同决定输出信号。如果是Moore型状态机,则输出只和当前状态有关。
有的设计者采用两个进程来描述状态机,即将输出逻辑进程和下状态转移逻辑合并起来,采用一个进程来描述。通常状况下,建议状态机还是采用两个不同的进程来描述输出逻辑和下状态转移逻辑,特别是Moore型状态机,而Mealy型状态机常采用输出逻辑进程和下状态转移逻辑合并起来描述,这样可提高程序的可读性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。