有限状态机概述
有限状态机(Finite State Machine,FSM)是表示有限个状态以及这些状态之间的转移和动作(输入)之间关系的离散模型。
有限状态机是组合逻辑和寄存器逻辑的特殊组合。组合逻辑部分包括次态逻辑和输出逻辑,分别用于状态译码和产生输出信号;寄存器逻辑部分用于存储状态。
FSM常用于时序逻辑电路设计,根据输出信号产生的机理不同,状态机可以分为两类:
摩尔(Moore)型状态机——输出信号仅与当前状态有关;
米里(Mealy)型状态机——输出信号与当前状态及输入信号有关。
所以区分Moore型和Mealy型,我们检查输入In、状态S输出Out之间的关系,对于Moore型状态机,其输出只与当前状态有关,每个S对应一个Out,输入In改变寄存器中的状态;对于Mealy型状态机,输出Out由In和S共同决定。
搭建Moore型电路
Moore型电路使用一个寄存器储存当前状态,转移电路通过当前状态和当前输入得到次态,输出电路根据当前所处状态得到输出Out,其中转移电路和输出电路都为组合逻辑电路,可以用Combinational Analysis搭建模块电路。
根据状态图在logisim中Combinational Analysis中调整table,使用Splitter的时候要注意高低位的位置,在Splitter中默认高位在下面,所以填充真值表的时候需要注意每个状态的位置。
搭建Mealy型状态机
前文已经分析Mealy型由当前状态和当前输入共同决定,所以在输出电路中略有不同需要加入当前输入信号的逻辑。
构建状态转移图
Mealy型的状态数比Moore型的状态数少1,假如Moore型有状态(A、B、C、D、E),其中当In= 1时状态D转移到E,而Mealy型仅仅需要4个状态:A、B、C、D,这是因为Moore型状态机输出仅与状态有关,若想输出1就必须形成相应的状态,而对于Mealy型,输出是由状态和输入共同决定的,即如果在前一状态时有相应输入即输出为1,不需要等到下一状态形成。
TIP:最后一个状态转移时不一定回到初态,当进行字符匹配时,如果输入可以与之前的字符形成前缀,应当转移到相应的状态而不是初态。
同步复位与异步复位的实现
若题目要求异步复位,直接使用logisim中寄存器自带的复位即可,即只需把reset信号连至寄存器自带的Clear脚。
若要求同步复位,可使用一个二选一多路选择器,当reset = 0时选择器将选择次态信号,若reset = 1,则选择0进行复位操作。
TIPS:
- 状态转移、输出逻辑用真值表生成。
- 寄存器的Q端在时钟信号为0时的值为初态,时钟信号的上升沿更新为次态。
- Moore输出逻辑只与当前状态有关。
- Mealy输出逻辑出了当前状态还必须与输入有关。(当前状态值:时钟上升沿是寄存器现有的值,上升沿是状态转移模块的输出值S)