重构为层次化状态机
在前一章中,我们对BCU进行了多项改进,并为代码开发了一个整体结构。在本章中,我们将重新设计有限状态机,使其成为一个层次化状态机(HFSM)。我们将从HFSM的一般模型开始,然后继续重新编码BCU的状态机。
有限状态机是BCU结构的核心:它定义了设计随着时间如何运作。它就像C代码中的main
函数:是我们开始任何代码分析的地方。使状态机结构良好且易于理解至关重要。
HFSM的一般模型
状态机如同设计中的大多数方面一样,遵循“七条规则”。如果状态机中的状态数量超过大约七个,那么设计、审查和理解都会变得困难得多。解决方案是使用层次结构进行设计和编码,并将任何一层级中的状态数量限制为最多大约七个。
图4-1展示了一个(通用的)层次化状态机的顶层,它由三个状态组成。IDLE
是一个普通状态。S1
和S2
是复合状态,用同心圆表示。
复合状态是子状态机:由另一个状态机调用的状态机。图4-2展示了S1
子状态机的详细情况。