アダルト・ヴァイオリン May the force be with you..

2006年2月6日

グレイコードとバイナリコード

Filed under: 組込みシステム — @ 9:58 AM

sfl2vlの状態遷移マシンの状態番号は宣言順にバイナリコードでアサインしている。
これは、教科書的にはNGである。スイッチング理論やディジタル回路の教科書では状態割り当てによって回路規模が大きく変わる「特殊ケース」が説明されることが多い。これらを受けて、バイナリコードアサインはあんまりだという人が時々いる。

実際問題として、大きな回路を作成するときに、教科書のような特殊ケースはまず発生することがなく、状態アサインの最適化の効果はほとんどゴミのようなものである。

これが、sfl2vlであえてバイナリアサインを保っていた理由なのだが、もう少し毛色の変わったアサインをしたい向きもあるだろうから、グレイコードアサインが出来るようにオプションを追加した。

sfl2vl filename.sfl -gray

と後ろに-grayをオプションとして付加することで、状態アサインはグレイコードになる。もちろん、状態変数の最適化なんてものは一切していないので、バイナリであろうとグレイであろうと出てくる回路は大差ないのである(そもそも、ALTERAのツールではどちらもFSM最適化によって無視され勝手に割り振りを付け直される)。
それでも、グレイコードにすることで、宣言順に順次状態が遷移する場合には多少回路的な負担が少なくなる合成系もあるだろう。

Powered by WordPress