工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> 埋め込み

バイナリ、グレー、およびワンホットエンコーディングの比較

この記事では、FPGAにステートマシンを実装するためにバイナリ、グレー、およびワンホットエンコーディングを使用した結果の実装の比較を示します。これらのエンコーディングは、多くの場合、合成および実装ツールによって評価および適用されるため、ソフトウェアがこれらの決定を行う理由を知ることが重要です。

有限状態マシン(FSM)は、ほぼすべてのデジタルシステムの非常に一般的な部分です。そのため、合成ツールはコードを検査してFSMを検出し、状態のエンコーディングを変更する可能性のある最適化を実行することがよくあります。ソースコードで状態を実装する値を慎重に選択して指定したかどうかは関係ありません。合成ツールは、それらの値を、元のエンコーディングとはビット長が異なる可能性がある他の値に置き換える場合があります。

Verilogでのステートマシンの実装についてブラッシュアップしたい場合は、Verilogでの有限ステートマシンの作成というタイトルの私の記事を読む必要があります。


状態のエンコーディング:グレーvs.バイナリvs.ワンホット

FSM状態で最も一般的な3つのエンコーディングは、バイナリ、グレー、およびワンホットです。

バイナリエンコーディング

バイナリエンコーディングは、状態に値を順番に割り当てるときに直感的に使用できる簡単な方法です。このように、状態をエンコードするために可能な限り少ないビットを使用しています。

ワンホットエンコーディングの例。スティーブアラーによる画像

グレーエンコーディング

グレイコードは、ある値と次の値の間で1ビットだけが変化するシーケンスで構成されます。最小ビット数を使用することに加えて、このエンコーディングは、状態のシーケンスが最適に守られている場合、動的な電力消費を最小限に抑えます。

グレイコードホイール。マリークリスチアーノからの画像

ワンホットエンコーディング

最後に、ワンホットエンコーディングは、各状態を表す1ビットを使用することで構成されます。そのため、任意の時点で、状態は現在の状態を表すビットでは1、他のすべてのビットでは0としてエンコードされます。使用されるビット数と無効な状態の数が多すぎるため、これは最初はあまり効率的ではないように思われるかもしれません。ただし、ワンホットエンコーディングは、状態をデコードする必要がないため、フリップフロップのスティミュラスロジックを単純化するのに非常に優れています。ビットは 状態。

ワンホットエンコーディングの例。スティーブアラーによる画像

状態エンコーディングの詳細については、SteveArarによる記事「有限ステートマシンの状態をVHDLでエンコードする」を参照してください。

どのエンコーディングが最適ですか?

これは難しい質問です。主に、各エンコーディングには長所と短所があるため、多数の要因に依存する最適化問題になります。

さて、これらの主張はすべて知識に基づいた推測であり、最適な状態の割り当てを見つけることは複雑な問題です。このため、私の公式のアドバイスは、コンパイラにあなたに代わって決定させることです。そうは言っても、3つの異なる開発ツールと3つの異なるステートマシンでこれら3つのエンコーディングの結果を比較することにしました。

次の記事では、私の実験の結果について説明します。


埋め込み

  1. 300、400、500シリーズ鋼の比較
  2. 8進数と16進数の数値
  3. バイナリ加算
  4. バイナリ減算
  5. バイナリオーバーフロー
  6. C ++の構造とクラス
  7. シックスシグマとリーン生産方式の比較
  8. どのエンコーディングタイプを使用する必要がありますか? FPGAアプリケーションの例
  9. モールス信号と二重恐喝:今日のマルウェアの状態
  10. EDM および CNC 機械の防火:オプションの比較
  11. ねずみ鋳鉄の特性と等級の説明