未定義のステート

[] [] []


ステート値を割り当てていくと、大抵は未定義の値が生じてしまう(例えば3ビットに値0から5を割り当てると6,7は未定義)。デジタル回路的には未定義値に遷移することはありえないので、合成ツールは未定義値になる場合を無視して論理合成する。ただし、中性子線やα線でFFが反転する場合を気にするなら、ステートが未定義値になった場合の遷移先も定義しておいた方がよい。このとき合成制約をかける必要がある(→FSMのエンコーディング)

(1)     初期状態に戻る (default: state_reg<=IDLE)

とりあえずステートマシンは止めずに無難な状態に遷移する。

(2)     その状態にとどまる (default: state_reg<= state_reg)

デバッグするには発生時の状態を維持するのがよい。

(3)     異常時の状態を定義しておく (default: state_reg<=ERROR)

もし異常になったら外部に知らせるなどの動作をさせるとよい。


[] [] []