一般问这个问题,简答的回答就是一个和输入有关,一个和输出无关;两个状态机的状态转移方程是一样的。好处坏处就是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