【FPGA开发】--Moore 型和 Mealy型状态机

【FPGA开发】–Moore 型和 Mealy型状态机

摘要:关于Moore 型和 Mealy型状态机的详细说明,读者可以自行查阅书籍或者上网查找,本文不做详细描述。本文主要通过一个序列检测器的状态机来说明Moore 型和 Mealy型状态机基本设计方法,并对两种状态机进行简单对比说明。

NO.1状态机的基本知识点

1、状态机的分类

①根据状态机的状态数是否为有限个:

有限状态机(FSM)、无限状态机(ISM)

②根据输出与现态以及输入的关系:

Moore型状态机、Mealy型状态机   

Moore型状态机输出仅取决于状态; 

Mealy型状态机输出取决于输入和状态。

2、状态机的状态编码

在这里插入图片描述

编码原则:

Binary-code和Gray-code适用于触发器资源较少,组合电路资源丰富的情况(CPLD);对于FPGA等触发器资源丰富的器件,使用one-hot-code较合适,这样不但充分利用FPGA丰富的触发器资源,还因为只需比较1bit,速度快,组合电路简单。

3、状态机的描述方法

★单进程(一段式)FSM描述方法

将整个状态机的三个模块合并起来,写到一个进程里面,在该进程中同时描述状态的寄存和次态逻辑和输出逻辑;

★两进程(二段式)FSM描述方法

用2个进程来描述状态机,其中当前状态寄存逻辑用一个同步时序进程描述,输出逻辑和次态逻辑合并起来用一个组合逻辑进程来描述;

★三进程(三段式)FSM描述方法

将状态机的3个模块用3个进程来描述,一个同步时序进程描述当前状态寄存逻辑,一个组合逻辑进程描述次态逻辑,一个进程来描述输出逻辑;

注意:

①三段式状态机并非指只有三个always块,当电路复杂时可以有多个always块;

②三段式状态机的输出逻辑可以用组合逻辑,也可以用时序逻辑。当使用组合逻辑时,判断条件是current_state,此时输出可能有毛刺,为了滤除毛刺,要用触发器进行同步,所以会使得输出有一个时钟的延时;当用时序逻辑时,为了不延时一个时钟周期,判断条件是next_state,此时输出是同步电路,没有毛刺;

③三段式状态机中描述次态逻辑的部分是组合逻辑,判断条件是current_state。

NO.2Moore型状态机设计之“1010”序列检测器

1、状态转换图

在这里插入图片描述

2、关键代码

在这里插入图片描述

3、仿真验证

在这里插入图片描述

在这里插入图片描述

NO.3Mealy型状态机设计之“1010”序列检测器

1、状态转换图

在这里插入图片描述

2、关键代码

在这里插入图片描述

3、仿真验证
在这里插入图片描述

在这里插入图片描述

NO.4对比分析

1、Moore型的输出与时钟是同步的,因为它仅是状态的函数,从而只有当状态改变时输出才可能改变。这就保了Moore型输出波形更加“洁净”。

2、Mealy型输出会随着输入的变化而变化,这既是它的缺点也是它的优点,设计者可通过输入信号对状态机的输出信号实施控制。

3、Mealy型状态机比Moore状态机所需要的状态个数少,这就意味着所需要的触发器个数少,电路更简单,成本更低廉。

4、就本文所的“1010”序列检测器而言,Moore的输出比Mealy的输出会有一个时钟的时延。

参考原文:《【FPGA开发】–Moore 型和 Mealy型状态机》

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltqshs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值