Verilog 状态机的设计 -学习笔记

Verilog 状态机的设计。
包括三个部分:
1,下一个状态机的逻辑电路
2,存储状态机的当前实现逻辑电路
3,输入组合逻辑电路。
根据状态机的输出信号是否与电路的输入有关分为 Mealy 型状态机和 Moore 型状态
机。电

状态机的描述通常有三种方法,称为一段式状态机,二段式状态机和三段式状态机。
状态机的描述通常包含以下四部分

1)利用参数定义语句 parameter 描述状态机各个状态名称,即状态编码。状态编码
通常有很多方法包含自然二进制编码,One-hot 编码,格雷编码码等;
2)用时序的 always 块描述状态触发器实现状态存储;
3)使用敏感表和 case 语句(也采用 if-else 等价语句)描述状态转换逻辑;
4)描述状态机的输出逻辑。
下面根据状态机的三种方法,来比较各种方法的优劣
一段式状态机是应该避免使用的,该写法仅仅适用于非常简单的状态机设计,不符合组合逻辑与时序逻辑分开的原则,整个结构代码也不清晰,不利用维护和修。
两段式状态机采用两个 always 模块实现状态机的功能,其中一个 always 采用同步时序逻辑描述状态转移,另一个 always 采用组合逻辑来判断状态条件转移。两段式状态机是推荐的状态机设计方法。
三段式状态机在第一个 always 模块采用同步时序逻辑方式描述状态转移,第二个always 模块采用组合逻辑方式描述状态转移规律,第三个 always 描述电路的输出。通常让输出信号经过寄存器缓存之后再输出,消除电路毛刺。这种状态机也是比较推崇的,主要是由于维护方便,组合逻辑与时序逻辑完全独立。

你可能感兴趣的:(Verilog)