无论是摩尔还是米勒型状态机,建模的关键就是两个:state and input(event);
当需要对于一个复杂的事件进行状态机建模时,首先从从这两个着手。总结出外界的什么输入事件(input event)会触发什么状态,该状态内有什么样的输出。
另外对于有时引起困扰的某几个状态是否应该归纳合并为一个状态(idle-->counter counter计数器中还有很多工作要做,每个时钟沿还要计数器递增)。可以有一个很简单实用的方法:在这几个状态中,外界的输出是否有变化。如果这个整个过程中,外界的输入没有任何变化(或者对于外界的变化不做响应),那么可以认为就是应该归纳为一个状态。而如果这个过程中可以响应外界的input event,那么就可以认为是在响应外界输入时,引起了状态的跳变。
当然如果在某些时候,一些状态具有很强的相关性,(比如SDRAM的读或写状态,其中有很多步骤),这时可以把他们列为一类大状态,用子状态机来表达。
用户795961 2016-3-25 08:29
用户403664 2014-10-9 14:40