ステートのエンコーディング
FPGA外部へ出力する制御信号をステートマシンで作ることを考える。制御信号はハザードがのらないようにFF出力にする必要があるが、通常はステートレジスタ値を組合せ回路でデコードするので、出力前にFFを設けなければならず1クロックだけ遅れる。
そこでステート値の割り当て(FSMのエンコーディングという)を工夫して、各制御信号をステートレジスタの1ビットに割り当てれば、制御信号がFF出力になるのでそのまま出力できる
ただし、同じ組合せでもそこに至るシーケンスが異なる場合は別々のステートになるので、ステートに余分なビットを付け加える必要がある。
例)SA1とSB1は同じ出力値だったとしても異なるステートを割り当てなければならない
◇
この方法を使うときの注意として、論理合成ツールは回路規模や遅延が小さくなるようにエンコーディングを勝手に変更してしまうので、変更されないように合成制約をかけなければならない。(→FSMのエンコーディング)