非法状态--状态机的灾难
对状态机状态的编码有时候并不会用到所有的状态,比如一个有20个状态的状态机,通常会用5个bit来编码,而5bits最大可以有2^5=32个状态,那么其中剩下的32-20=12个状态就是不会用到的非法状态(dead states)。
假设在某个状态机中,我们将值0-19用来设定为正确的状态机状态值,剩余的20-31是不会使用的多余值。如果状态机进入到状态值20-31,那么就会发生这样的错误:状态机永远会呆在这个非法状态而无法跳转到正常状态。为了避免这一情况,我们都需要设定一个良好的复位机制。当然,最好的办法是确保你的状态机永远都不会进入非法状态。
|