mealy machine和moore machine

一般问这个问题,简答的回答就是一个和输入有关,一个和输出无关;两个状态机的状态转移方程是一样的。好处坏处就是mealy machine 会有glitch问题,而moore machine没有这问题。

1. 为什么会这样?

两个machine的状态公式都是一样的,但是mealy machine的输出因为和input和state都有关系,所以输出会是在clock edge event上。和moore machine的关系是mealy的输出一个clk period before 与moore的输出。

但如果是moore machine,输出只会和state有关系,即状态稳定之后,才会有输出。

Recall: Moore outputs do not depend on the input.
- ZMoore can only change when the state changes (synchronous).
- ZMealy can change asynchronously because it can change with X.

ref http://www.ece.ucsb.edu/courses/ECE152/152A_Su08Rodoplu/JohnsonLectures/L9.pdf

2. 状态机的画法

通过这两张图,也是可以看出output在状态机中输出的位置。

ref: http://www.mil.ufl.edu/3701/classes/joel/16%20Lecture.pdf

3. 关于状态转移的扩展

如果是比较清楚FSM的思想,就比较容易扩展应用到很多的部分。比较典型的做serial sequence detection,或者Module 5,或者说frequency division。

当然也有比较tricky的,例如生成任意波形序列来做测试,这里就可以用rom来保存配置数据,然后用fsm来周期性读取结果。这个思想有点像是用ROM来做正弦波形发生器。

4. Verilog design

ref: https://inst.eecs.berkeley.edu/~cs150/fa05/Lectures/07-SeqLogicIIIx2.pdf 

原文地址:https://www.cnblogs.com/chenrui/p/2812283.html