Logisim关于Moore型和Mealy型FSM的搭建

Logisim关于Moore型和Mealy型FSM的搭建

Moore型与Mealy型的区别

根据黑书上所讲,Moore型状态机即为输出只取决于系统的状态,而Mealy型状态机输出取决于当前系统的状态和输入。这样的解释可能难以理解,我们可以这样去区分Moore型与Mealy型:
假设现在有输入in、状态S、输出out,

  • 对于Moore型:
    out为关于S而不关于in的一个组合逻辑,即每个S都对应一个out(当然可能多个S的out是一样的,也即out = f(S)),只要当前状态S发生改变,out便随之改变。
  • 对于Mealy型:
    out为关于S和in的一个组合逻辑,即out = f (S,in),这意味着在一个状态S时,若in发生了改变,out也将立刻随之改变。

现在你已经知道了什么是Moore型和Mealy型了,来试试动手搭建他们吧~

搭建Moore型电路

如下图所示,使用一个寄存器来储存当前状态,转移电路通过现态和输入得到次态,输出电路根据当前状态得到输出值out。其实由于转移电路和输出电路都仅仅为一个组合逻辑电路,我们可以简单地用俩个模块分别实现他们。(图中in和out的位数按实际情况处理,此处都记为两位了)如图所示,我们要做的工作便是利用logisim的傻瓜键——一键生成电路来生成这俩个模块。

  • 转移电路

根据我们画出的状态转移图在logisim的Combinational Analysis中调整好table,其中一定要注意高低位,在logisim中如果你使用一个splitter就会发现他是默认高位在下面的(如左图),而在写table时一般会为了便于自己识别状态,会将S1写在S0前面(如中图),而这样一键生成的电路是高位在上面(如右图),这时候直接把splitter连上就会出大问题了。

image-20201021172008282

  • 输出电路

这个电路就非常的简单啦,我们只需要继续用logisim的傻瓜键根据S输出out就可以,同理,注意高低位。

搭建Mealy型电路

与Moore型类似,只是输出电路从仅仅由当前状态决定变成了由当前状态和当前输入in共同决定。其他注意事项与搭建俩个模块的过程均和Moore型差不多。

Moore型与Mealy型的状态转移图

搭建电路是非常简单的,但是仅仅按上述方法去搭还是可能出错滴,因为状态机题最重要的部分应该是如何画出正确的状态转移图。下面我们来看看两者的区别和搭建时应注意的东西。

  • 两者的区别

Mealy型的状态数比Moore型的状态数少1,假设Moore型有状态(A,B,C,D,E),其中当输入in为1时状态D将转移到状态E,而Mealy型仅仅需要4个状态:(A,B,C,D),这是因为Moore型的输出out仅仅与状态有关,若想当状态为E时输出out为1,必须形成E状态。而对于Mealy型,输出out是由状态和输入共同决定的,即如果在状态D时,输入in为1,那么输出电路就可以输出1了,不需要等到状态E形成,因此也不需要状态E,比Moore型少一个状态。

扫描二维码关注公众号,回复: 15076897 查看本文章
  • 注意事项

最后一个状态转移时不一定回到初态,当我们进行字符串匹配时,当匹配到最后一个字符时,接下来如果输入为字符串的首个字母或该输入可以与之前的字符形成字符串的前缀,应该将状态转移至相应的状态而不是初态。如匹配101(当输入的最后3位是101时输出1),输入in序列是10101,假设状态如下表,那么当匹配到第3位时,状态为D,输出1,而下一次的输入0将使状态直接跳过初态,到达状态C。

状态 含义
A 未匹配
B 匹配到了1
C 匹配到了10
D 匹配到了101
  • eg

匹配101(当输入的最后3位是101时输出1):按上面的注意事项细心地画出状态图如下。其中Moore型的输出仅与状态有关,因此把输出标在状态下;Mealy型的输出与状态和输入in有关,因此标在圆弧上in/out,代表的含义是当处于圆弧的起点的状态时输入in,out所应输出的值。如从S2到S1的圆弧上标了1/1,代表当状态为S2时若in为1则输出1。

同步复位与异步复位的实现

在做题时可能会遇上这两种不同的复位要求,若要求异步复位则比较简单,因为logisim中寄存器自带的复位便是异步复位,因此若题目要求异步复位只需要把reset信号连至寄存器自带的Clear脚。而若如果要求同步复位,可使用一个二选一多路选择器,如图所示,当reset为0时,选择器将选择次态信号,若reset为1,将选择0,也即复位。而由于寄存器只在时钟上升沿读入,若此时reset为1,将读入0(复位),这就实现了同步复位。

写在最后

这是本菜鸡第一次写博客,如果哪里写错了希望各位大佬指正orz,以及希望P0能过。

猜你喜欢

转载自blog.csdn.net/qq_45551930/article/details/109223120
今日推荐