ステートのエンコーディング

[] [] []


FPGA外部へ出力する制御信号をステートマシンで作ることを考える。制御信号はハザードがのらないようにFF出力にする必要があるが、通常はステートレジスタ値を組合せ回路でデコードするので、出力前にFFを設けなければならず1クロックだけ遅れる。

そこでステート値の割り当て(FSMのエンコーディングという)を工夫して、各制御信号をステートレジスタの1ビットに割り当てれば、制御信号がFF出力になるのでそのまま出力できる

ただし、同じ組合せでもそこに至るシーケンスが異なる場合は別々のステートになるので、ステートに余分なビットを付け加える必要がある。

例)SA1SB1は同じ出力値だったとしても異なるステートを割り当てなければならない

この方法を使うときの注意として、論理合成ツールは回路規模や遅延が小さくなるようにエンコーディングを勝手に変更してしまうので、変更されないように合成制約をかけなければならない。(→FSMのエンコーディング)


[] [] []