一、状态机分类
Mealy状态机:输出取决于输入和当前状态
状态寄存器:由一组触发器组成,用来记忆状态机当前所处的状态,状态的改变只发生在时钟的跳变沿。状态寄存器由一组触发器组成,用来记忆状态机当前所处的状态,状态的改变只发生在时钟的跳变沿。
状态是否改变、如何改变,取决于组合逻辑F的输出,F是当前状态和输入信号的函数。
状态机的输出是由输出组合逻辑G提供的,G也是当前状态和输入信号的函数。
Moore 状态机:输出只取决于当前状态,可以看成Mealy的一种
二、如何写状态机
三段式状态机:
1、状态空间定义:罗列所有状态
独热码:适合写条件复杂但是状态少的状态机,译码逻辑简单,虽然占用较多位数,但是组合电路会简单很多
格雷码:适合写条件不复杂但是状态多的状态机。
2、状态跳转(时序逻辑)(一段)
3、下个状态判断(组合逻辑)(二段)
latch(锁存器):电平触发,组合逻辑中会产生,尽量避免,会产生毛刺。if语句中缺少else,case中多余情况未default。
触发器:电平触发。
4、各个状态下的动作(三段)
三段式可以在组合逻辑后再增加一级寄存器来实现时序逻辑输出:
1、可以有效地滤去组合逻辑输出的毛刺;
2、可以有效地进行时序计算与约束;
3、另外对于总线形式的输出信号来说,容易使总线数据对齐,从而减小总线数据间 的偏移,减小接收端数据采样出错的频率。