有关状态机的文章,事实上已经写过很多了,可是即使如此,真的懂了吗?真的能熟练应用吗?未必吧。这篇博文来源是《FPGA之道》,认真下看去收货颇丰!
借这个主题来梳理下状态机:
状态机简介
状态机是FPGA设计中一种非常重要、非常根基的设计思想,堪称FPGA的灵魂,贯穿FPGA设计的始终。
简单地说,状态机就是一副描绘着状态变迁的状态转移图,它体现着系统对外界事件的反应和行为。
FPGA中的状态机是指有限状态机,简称为FSM,是指状态节点数和输入、输出范围皆有限的状态机。需要说明的是,虽然有限状态机的状态节点和输入、输出皆为有限的,但这并不意味着它仅能进行有限次的处理,这是因为有限状态机可以形成闭环系统,所以可以用有限个状态处理无限的事件,从而到达化有限为无穷的境界。
例如,宇宙中物资的三种最基本的状态:固态,液态和气态,它们之间的状态转移图如下:
从上图可以看出,虽然该状态机仅有三个状态,输入(六个触发条件)、输出(状态本身即为输出)也是有限的,但是它却永远不会结束,因为宇宙中的物理转换永远也不会停止。。。至少可预见的未来不会停止。
状态机的组成六要素:
(1)状态集合:
状态集合是组成状态机的必备要素,该集合里包含了状态机所能达到的所有状态,例如上例中的{固态,液态,气态}。
(2)初态:
初态是状态机的第二必备要素,它是整个状态机开始工作的起点。它的功能类似于一个参考系,它为状态机的其他状态提供参考与标准。
例如上例中,任何一个状态都可以作为初态。
(3)终态
终态是状态机的结束状态,即若状态机达到终态,它的使命也将完成,不再工作。
与初态不同,终态不是状态机的