本文主要是介绍FSM 有限状态机 (Finite State Machine),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
状态机(FSM)
根据状态数目是否有限可以将时序状态机分为有限状态机(Finite Status Machine,FSM)和无限状态机。
FSM: Mealy & Moore
Mealy: 时序逻辑电路的输出不但取决于当前状态还取决于输入。
Moore: 时序逻辑电路的输出只取决于当前状态。
在实际的设计中,其实大部分状态机都属于Mealy状态机
状态图或者状态转移表以表格的形式表示在当前状态和输入的各种组合下状态机的下一状态和输出。
状态转移图(Status transition graph,STG)是一种有向图,
算法状态机(ASM),类似于软件流程图,是时序状态机功能的一种抽象。
三段状态机的写法
1, 两个时序逻辑,一个组合逻辑
2, current_state next_state 时序逻辑
3, 当前状态对应的逻辑输出 时序逻辑
4, 当前输入对应的状态转移 组合逻辑
优点:书写清晰,组合与时序分离设计,易于综合,且在一定程度上避免了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组。
三段式从输入到输出会比一段式和二段式延迟一个时钟周期
多了一段时序逻辑 时序逻辑会delay一个周期
独热码: 0001 0010 0100 1000
Gray Code:00 01 11 10
同时,在设计状态机时,应该尽量使用独热码状态编码方案,不用二进制状态编码方案。独热码状态编码方案是表示每个状态由1位触发器来表示,而二进制状态编码方案是用LgN/Lg2位触发器来表示N个状态。由于二进制状态编码的稳定度较低,独热码状态编码方案对于触发器资源丰富的FPGA芯片十分适用。
另外,格雷码由于跳变减少,可减少功耗,多用于低功耗设计中。
这篇关于FSM 有限状态机 (Finite State Machine)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!