コードコンバーターとは:バイナリからグレイコードおよびグレイコードからバイナリへの変換

問題を排除するために楽器を試してください





コンピューターでは、バイナリをグレーに、グレーをバイナリに変換する必要があります。これの変換は、バイナリからグレーへの変換とグレーからバイナリへの変換という2つのルールを使用して実行できます。最初の変換では、グレイコードのMSBは常にバイナリコードのMSBと同等です。グレイコードの出力の追加ビットは、EX-OR論理ゲートの概念を使用して、現在のインデックスと以前のインデックスのバイナリコードに取得できます。ここで、MSBは最上位ビットに他なりません。最初の変換では、バイナリコードのMSBは常に特定のバイナリコードのMSBと同等です。バイナリコードの出力の追加ビットは、EX-ORを使用して取得できます 論理ゲート その現在のインデックスでグレイコードを検証することによる概念。現在のグレイコードビットがゼロの場合は、その後、以前のバイナリコードをコピーし、以前のバイナリコードビットの逆をコピーします。この記事では、バイナリからグレイコードへのコンバーターとグレイからバイナリーへのコードコンバーターを含むコードコンバーターの概要について説明します。

バイナリコードとは何ですか?

デジタルコンピュータでは、2進数システムに基づいて使用されるコードはバイナリコードと呼ばれます。 0と1で表されるONとOFFのような2つの可能な状態があります。デジタルシステムは10桁を使用し、桁のすべての位置は10の累乗を表します。バイナリシステムでは、桁のすべての位置は2の累乗を表します。




バイナリコード信号には、実行する文字、数字、および操作を示す一連の電気パルスが含まれています。クロックデバイスは、通常のパルスを送信するために使用され、トランジスタなどのコンポーネントは、オン/オフをオンにしてフローし、そうでない場合は信号をブロックします。バイナリコードでは、0〜9の範囲のすべての10進数は、4バイナリビット/桁のセットで表すことができます。足し算、引き算、掛け算、割り算などの基本的な4つの算術演算はすべて、2進数の基本的なブール代数関数の組み合わせに減らすことができます。

グレイコードとは何ですか?

グレイコードまたはRBC(反映されたバイナリコード)、または巡回コードは、一連の2進数システムです。この反映されたバイナリコードを呼び出す主な理由は、最初のN / 2値が最後のN / 2値と比較して逆の順序になっているためです。この種のコードでは、2つの連続する値が1ビットの2進数で変更されます。これらのコードは、主にハードウェアによって生成される一般的な一連の2進数で使用されます。



2進数は、単一の数値から連続した数値への移行が完了すると、エラーを引き起こす可能性があります。このタイプのコードは、基本的に、数値間の変更が行われた後、1ビットを変更するだけでこの問題を解決します。

この種のコードは非常に軽量であり、ポジション全体に記載されている桁の値に依存しません。この種のコードは、単一の値からその連続する値への変更が単一のビットの変更のみを保持するため、循環変数コードとも呼ばれます。


これは単位距離コードで最も一般的ですが、算術関数には適していません。グレイコードのアプリケーションには、エラー訂正のためのアナログ-デジタルコンバーターおよびデジタル通信が含まれます。第一に、グレイコードは理解しにくいですが、非常に認識しやすくなります。

バイナリからグレイコードへのコンバーター

バイナリコードは、0と1などの2つの値を使用したデータの非常に単純な表現であり、主にコンピューターの世界で使用されます。バイナリコードは、高い(1)値または低い(0)値、あるいは値の変更である可能性があります。グレイコードまたは反映されたバイナリコードは、通常1と0で示されるオンとオフのインジケータで配置されたバイナリコードの性質を推定します。これらのコードは、バイナリでの明確さとエラー修正を確認するために使用されます コミュニケーション

バイナリからグレイコードへの変換は、 論理回路 。グレイコードは、ビットの位置に特定の重みが割り当てられていないため、重みのないコードです。 nビットコードは、2行に続く軸にn-1ビットコードを再現することで実現できます。n-1、および軸の上に0の最上位ビットを配置し、軸の下に1の最上位ビットを配置します。ステップバイステップのグレイコード生成を以下に示します。

バイナリからグレイコードへの変換論理回路

バイナリからグレイコードへの変換論理回路

この方法では、Ex-ORゲートを使用してバイナリビット間で実行します。次の最良の例は、バイナリからグレーへの変換を知るのに非常に役立ちます。この変換方法では、グレイコード番号のプライマリビットまたはMSBビットが2進数に類似しているため、現在の2進数のMSBビットを削除します。

特定の2進数に対応するグレイコード桁を生成するためのストレートグレイコードビットを取得するには、2進数の1次桁またはMSB桁を2桁目に追加し、グレイコードの1次ビットの横にある積を書き留めます。次のバイナリビットを3番目のビットに追加し、2の横の積を書き留めます。ndグレイコードのビット。同様に、最後のバイナリビットまでこの手順に従い、以下に応じて結果を書き留めます。 EX-OR論理演算 対応するグレイコード化された2進数を生成します。

バイナリからグレイコードへのコンバーターの例

バイナリコードの数字がbo、b1、b2、b3であると仮定しますが、特定のグレイコードは次の概念に基づいて実現できます。

コード変換の例

コード変換の例

上記の操作から、最終的にg3 = b3、g2 = b3 XOR b2、g1 = b2 XOR b1、g0 = b1 XORb0のようなグレー値を取得できます。

変換例

変換例

たとえば、バイナリ値b3、b2、b1、b0 = 1101を取得し、上記の概念に基づいてグレイコードg3、g2、g1、g0を見つけます。

g3 = b3 = 1

g2 = b3 XOR b2 = 1 XOR 1 = 0

g1 = b2 XOR b1 = 1 XOR 0 = 1

g0 = b1 XOR b0 = 0 XOR 1 = 1

バイナリ1101の値の最終的なグレイコードは1011です。

バイナリからグレイコードへのコンバーターテーブル

10進数

バイナリコード

グレイコード

0

00000000
10001

0001

0010

0011

3

00110010

4

0100

0110

50101

0111

6

01100101
70111

0100

8

10001100

9

1001

1101

101010

1111

十一

1011

1110

12

11001010

13

1101

1011

141110

1001

151111

1000

バイナリからグレイコードへの変換用のVHDLコード 以下に示します。

LIBRARY ieee
ieee.std_logic_1164.ALLを使用します
エンティティbin2grayは
port(bin:in std_logic_vector(3 downto 0)–バイナリ入力
G:out std_logic_vector(3 downto 0)–グレイコード出力

bin2grayを終了します
bin2grayのアーキテクチャgate_levelは
ベギン
–XORゲート。
G(3)<= bin(3)
G(2)<= bin(3) xor bin(2)
G(1)<= bin(2) xor bin(1)
G(0)<= bin(1) xor bin(0)
終わり

利点

ザ・ バイナリコードの利点 以下のものが含まれます。

  • バイナリコードを使用する主な利点は、電子デバイスを介して単純に示されることです。
  • バイナリデータも非常に簡単に保存できます。
  • 電子的および機械的に意味付けおよび制御するのは非常に簡単です。
  • シンボルの表現間の不一致を増やすことができるため、エラーの可能性を減らすことができます。

ザ・ バイナリコードの欠点 以下のものが含まれます。

  • 必要なシンボルの数を増やして、特定の数の全体的な位置値システムを示すことができます。
  • 人間は、長さが長く、デフォルトで10進数を使用しているため、非常に効果的に読み取ることができません。
  • 論理数を表すために多くの数字を使用します

アプリケーション

バイナリコードのアプリケーションは次のとおりです。

  • バイナリコードは、文字列からビット文字列など、さまざまなデータエンコーディング技術の計算だけでなく、電気通信でも使用されます。これらのメソッドで使用される幅は固定されています。それ以外の場合は可変幅の文字列です。
  • コンピュータ言語は主に2桁の数字システムに依存しているため、これはプログラミングだけでなくコンピュータ言語でも使用されます。

グレーからバイナリコードへのコンバータ

このグレーからバイナリへの変換方法も、グレーのビットとバイナリビットの間でEX-OR論理ゲートの動作概念を使用します。ステップバイステップの手順を使用した次の例は、グレイコードからバイナリコードへの変換の概念を理解するのに役立つ場合があります。

グレイコードを2進数に変更するには、グレイコード番号のMSB桁を削除します。これは、グレイコードの1次桁またはMSBが2進数に類似しているためです。

次のストレートバイナリビットを取得するために、バイナリのプライマリビットまたはMSBビットからグレイコードの次のビットへのXOR演算を使用します。

グレーからバイナリコードへの変換論理回路

グレーからバイナリコードへの変換論理回路

同様に、3番目のストレートバイナリビットを取得するには、バイナリの2番目のビットまたはMSBビットとグレイコードの3番目のMSDビットの間でXOR演算を使用します。

グレイからバイナリコードへのコンバーターの例

と仮定しましょう グレイコード 数字g3、g2、g1、g0に対して、特定のバイナリコードの数字はbo、b1、b2、b3であり、次の概念に基づいて実現できます。

変換例

変換例

上記の操作から、最終的にb3 = g3、b2 = b3 XOR g2、b1 = b2 XOR g1、b0 = b1 XORg0のようなバイナリ値を取得できます。

コード変換の例

コード変換の例

たとえば、グレー値g3、g2、g1、g0 = 0011を取得し、上記の概念に基づいてバイナリコードb3、b2、b1、b0を見つけます。

b3 = g3 = 0

b2 = b3 XOR g2 = 0 XOR 0 = 0

b1 = b2 XOR g1 = 0 XOR 1 = 1

b0 = b1 XOR g0 = 1 XOR 1 = 0

灰色の0011の値の最終的なバイナリコードは0010です。

グレーからバイナリコードへのコンバータテーブル

10進数 グレイコード

バイナリコード

0

00000000

1

0001

0001

0010

0010

3

00110011

4

0110

0100

50111

0101

6

01010110
70100

0111

8

11001000
91101

1001

10

11111010
十一1110

1011

12

10101100
131011

1101

14

10011110
151000

1111

利点

ザ・ グレイコードの利点 以下のものが含まれます。

  • 論理回路を減らすことができます
  • クロックドメインの交差に使用されます
  • 信号をアナログからデジタルに変更する際のエラーを最小限に抑えるために使用されます
  • 遺伝的アルゴリズム内で使用されると、ハミング壁の発生を減らすことができます。

短所

グレイコードの欠点は次のとおりです。

  • 算術関数には適していません
  • いくつかの正確なアプリケーションに適用可能

アプリケーション

グレイコードの用途は次のとおりです。

  • アナログ-デジタルコンバーターで使用されます
  • エラー修正のためのデジタル通信
  • 信号をアナログからデジタルに変更する際のエラーを減らします。
  • 数学パズル
  • ブール回路の最小化
  • 2つのクロックドメイン間の通信に使用されます
  • 遺伝的アルゴリズム
  • 位置エンコーダ

グレイコードからバイナリ変換用のVHDLコード 以下に示します。

LIBRARY ieee
ieee.std_logic_1164.ALLを使用します
エンティティgray2binは
port(G:in std_logic_vector(3 downto 0)–グレイコード入力
bin:out std_logic_vector(3 downto 0)–バイナリ出力

終了gray2bin
アーキテクチャgate_levelのgray2binは
ベギン
–XORゲート。
午前(3)<= G(3)
午前(2)<= G(3) xor G(2)
午前(1)<= G(3) xor G(2) xor G(1)
午前(0)<= G(3) xor G(2) xor G(1) xor G(0)
終わり

3ビットバイナリからグレイコードへのコンバータ

「b2」ビットがMSB(最上位ビット)であり、「b0」ビットがバイナリのLSB(最下位ビット)である場合は常に、b0、b1、b2のような3ビットの2進数の2進数を想定します。グレイコードの数字はg0、g1、g2です。ここで、「g2」の数字はMSB(最上位ビット)ですが、数字の「g0」はグレイコードのLSB(最下位ビット)です。

バイナリコード– b2、b1、b0

グレイコード– g2、g1、g0

000

000
001

001

010

011
011

010

100

110
101

111

110

101

111

100

したがって、ブール式は、k-mapを使用してバイナリからグレイコードへのコンバーターについて解くことができ、g2 = b2、g1 =b1⊕b2&g0 =b0⊕b1を得ることができます。同様に、nビットの2進数(bnb(n-1)…b2b1 b0)をグレイコード(gng(n-1)…g2g1 g0)に変更できます。

LSBの場合(最下位ビット)

g0 =b0⊕b1

g1 =b1⊕b2

g2 =b1⊕b2

g(n-1)= b(n-1)⊕bn、gn = bn。

たとえば、111010の2進数をグレイコードに変換します。

したがって、上記のアルゴリズムに基づいて、

g0 =b0⊕b1=>0⊕1= 1

g1 =b1⊕b2=1⊕0= 1

g2 =b2⊕b3=0⊕1= 1

g3 =b3⊕b4=1⊕1= 0

g4 =b4⊕b5=1⊕1= 0

g5 = b5 = 1 = 1

したがって、バイナリからグレイコードへの変換は–100111になります。

IC7486を使用したバイナリからグレイコードへのコンバータ

バイナリからグレーへの変換およびグレーからバイナリへの変換は、IC7486を使用して実行できます。これを作成するために必要なコンポーネントは、ブレッドボード、接続ワイヤ、LED、抵抗器、XOR(IC7486)、押しボタンスイッチ、および電源用のバッテリーです。

IC7486のパッケージには、主に4つのXOR論理ゲートが含まれており、ピン7と14がすべての論理ゲートに電源を供給します。単一のXORゲートのo / psは、同様のグランド端子を共有するまで、同じまたは他のチップ内の他の論理ゲートの入力に接続されます。

したがって、これはすべてバイナリからグレイコードへのコンバーターとグレイからバイナリコードへのコンバーターに関するものです。上記の情報から、最終的に次のように結論付けることができます。 これらのコンバーター のさまざまな操作を実行する上で重要な役割を果たします デジタルエレクトロニクス さまざまな番号システム間の通信と同様に。上で説明したコードコンバーターの例は、これらの計算を行う方法の概念を理解するのに役立つ場合があります。ここにあなたへの質問があります、グレイコードのアプリケーションは何ですか?