状态机(state machine)

一、状态机分类

Mealy状态机:输出取决于输入和当前状态

状态寄存器:由一组触发器组成,用来记忆状态机当前所处的状态,状态的改变只发生在时钟的跳变沿。状态寄存器由一组触发器组成,用来记忆状态机当前所处的状态,状态的改变只发生在时钟的跳变沿。

状态是否改变、如何改变,取决于组合逻辑F的输出,F是当前状态和输入信号的函数。

状态机的输出是由输出组合逻辑G提供的,G也是当前状态和输入信号的函数。

Moore 状态机:输出只取决于当前状态,可以看成Mealy的一种

二、如何写状态机

三段式状态机:

1、状态空间定义:罗列所有状态

独热码:适合写条件复杂但是状态少的状态机,译码逻辑简单,虽然占用较多位数,但是组合电路会简单很多

格雷码:适合写条件不复杂但是状态多的状态机。

2、状态跳转(时序逻辑)(一段)

3、下个状态判断(组合逻辑)(二段)

latch(锁存器):电平触发,组合逻辑中会产生,尽量避免,会产生毛刺。if语句中缺少else,case中多余情况未default。

触发器:电平触发。

4、各个状态下的动作(三段)

三段式可以在组合逻辑后再增加一级寄存器来实现时序逻辑输出:

1、可以有效地滤去组合逻辑输出的毛刺;

2、可以有效地进行时序计算与约束;

3、另外对于总线形式的输出信号来说,容易使总线数据对齐,从而减小总线数据间 的偏移,减小接收端数据采样出错的频率。

经验分享 程序员 微信小程序 职场和发展