Q:本期我们介绍米里(Mealy)状态机和摩尔(Moore)状态机,以及状态机的描述基本方法和编码方式。
A:基于上一期的状态机示意图,组合逻辑电路模块通常又分成C1和C2两个部分,组合逻辑模块C1有两个输入端,分别为当前输入x(t)和现态s(t),其输出为次态s(t+1)。组合逻辑模块C2也有两个输入,分别是当前输入x(t)和现态s(t),输出为z(t)。
输出z(t)不但取决于当前输入x(t),还取决于现态s(t),这类状态机称之为Mealy状态机;
如果输出z(t)仅取决于现态s(t),我们称这种状态机为摩尔(Moore)状态机。
常见的状态机描述方法:
(1)单过程描述:一个 always 模块,用时序逻辑电路同时描述状态转移和状态输出。
(2)双过程描述:第一个 always 模块用时序逻辑电路描述状态转移;第二个always 模块用组合逻辑电路计算次态以及更新输出。
(3)三过程描述:第一个 always 模块用时序逻辑电路描述状态转移;第二个always 模块用组合逻辑电路计算次态;第三个 always 模块用时序逻辑电路在时钟沿到达时更新输出。
常用的状态机编码有二进制编码、Gray(格雷)编码、One-hot(独热)编码。