不用的分类规则,状态机分类也不同。在实际的应用中,根据有限状态机是否使用输入信号,设计人员经常将其划分为Moore有限状态机和Mealy型有限状态机两种类型。Moore型状态机的输出只与当前的状态有关而与输入无关,而Mealy型状态机的输出不仅与当前状态有关,还与当前的输入有关,它们共同决定Mealy状态机的输出。图2和图3分别表示了Moore,Mealy状态机的结构图。
有限状态机还有很多分类方法,比如根据复位信号的不同可以分为同步复位状态机和异步复位状态机。根据输出是否寄存分为直接输出、寄存输出、根据状态编码输出等类型。
对于Moore型有限状态机,输出信号将在时钟信号的触发沿到的几个门时延后得到输出值,同时在该时钟周期的剩余时间内保持不变,即使输入信号在该时钟周期内发生变化,输出信号的值也不会改变。由于Moore型有限状态机的输出与当前的输入部分无关,因此当前输入产生的任何效果将会延迟到下一个时钟周期。可见,Moore型状态机的最大优点就是可以将输入部分与输出部分隔离开。
对于Mealy型有限状态机,由于它的输出是输入信号的函数,因此如果输入信号发生变化,则输出可以在1个时钟周期的中间发生改变。与Moore型有限状态机相比,它对输入信号的变化相应要早1个时钟周期。但它也会将输入端口的噪声传递给输出信号。
综合以上几点的考虑,该设计采用Moore型有限状态机实现飞行器自毁系统的时序控制。
2.2 毛刺和信号时延处理
Moore型有限状态由于有组合逻辑进程的存在,状态机输出信号会出现毛刺(竞争冒险现象);另一方面,如果状态信号是多位值的,则在电路中对应了多条信号线。由于存在传输延迟,各信号线上的值发生改变的时间则存在先后,从而使得状态迁移时在初始状态和目的状态之间出现临时状态,因此出现毛刺。
参考各方面文献,现在消除输出信号的“毛刺”一般可采用3种方案:一是调整状态编码,使相邻状态间只有1位信号改变,从而消除竞争冒险的发生条件,避免了毛刺的产生。这种方案适用于顺序迁移的状态机;二是在有限状态机的基础上采用时钟同步信号,即把时钟信号引入组合进程。状态机每一个输出信号都经过附加的输出寄存器,并由时钟信号同步,因而保证了输出信号没有毛刺。这种方法存在一些弊端;由于增加了输出寄存器,硬件开销增大,这对于一些寄存器资源较少的芯片是不利的;从状态机的状态位到达输出需要经过两级组合逻辑,这就限制了系统时钟的最高工作频率;由于时钟信号将输出加载到附加的寄存器上,所以在输出端得到信号值的时间比状态的变化延时1个时钟周期;三是直接把状态机的状态码作为输出信号,即采用状态码直接输出型状态机,使状态和输出信号一致,使得输出译码电路被优化掉了,因此不会出现竞争冒险。这种方案,占用芯片资源少,信号与状态变化同步,因此速度快。