一、有限状态机FSM(Finite State Machine)组成元素: 输入、状态、状态转移条件、输出。可以分为两类: Mealy状态机:时序逻辑的输出不仅取决于当前状态,还与输入有关; Moore状态机:时序逻辑的输出只与当前状态有关。描述方式: ① 状态转移图:设计分析时使用,工具自动翻译的代码效率不高,适合规模小的设计;对于大规模设计,HDL更好; ② 状态转移表; ③ HDL描述。设计步骤: ① 逻辑抽象,得到状态转移图:确定输入、输出、状态变量、画状态转移图; ② 状态简化,得到最简的状态转移图:合并等价状态(它们的输入相同,转换到的次态和输出也相同的两个或两个以上的状态); ③ 状态编码:binary、gray、one-hot编码方式; ④ 用HDL描述。二、Coding Style一段式: 只有一个always block,把所有的逻辑(输入、输出、状态)都在一个always block的时序逻辑中实现。这种写法看起来很简洁,但是不利于维护,如果状态复杂一些就很容易出错,不推荐这种方法。 在简单的状态机可以使用。二段式: 有两个always block,把时序逻辑和组合逻辑分隔开来。时序逻辑里进行当前状态和下一状态的切换,组合逻辑实现各个输入、输出以及状态判断。这种写法不仅便于阅读、理解、维护,而且利于综合器优化代码,利于用户添加合适的时序约束条件,利于布局布线器实现设计。在两段式描述中,当前状态的输出用组合逻辑实现,