グレイコード
出典: フリー百科事典『ウィキペディア(Wikipedia)』
|
グレイコード(英:Gray code)、交番二進符号(こうばんにしんふごう、英:Reflected Binary Code)、グレイ符号とは、デジタル回路用の数値符号である。アブソリュート・ロータリー・エンコーダー等のセンサー出力に使われる。前後に隣接する符号のハミング距離が常に1となる特徴がある。
交番二進符号の名はベル研究所のフランク・グレイが1947年の特許出願書で使用したのが最初である[1]。1953年に他の人物が提出した特許出願書ではフランク・グレイにちなんでグレイコードと呼ばれている[2][3]ほか、他の呼称も使われている[3]。
[編集] 2進数からグレイコードへ変換する方法
最上位桁から1であれば残り下桁を反転、0であれば残り下桁を変化させない。 例えば、グレイコードが1111であれば、2進数は1010となる。
[編集] 利点
グレイコードは、ある値から隣接した値に変化する際に、常に1ビットしか変化しないという点が利用される。
一般的な2進数では、隣接する値に移行する際に変化するビットの数は1以上である。たとえば3から4に変化する場合、2進数だと011から100に、3ビットの変化が起こる。
絶対的な角度をデジタル値で出力するアブソリュート・ロータリー・エンコーダーのような機器において、機械的な接点などで電気信号のオンオフを行い、このような2進数形式でのデータ出力を行った場合について考えてみよう。この場合、機械の動作やデータ読み出しのタイミングによっては、誤ったデータが得られる可能性がある。たとえば011から100に変化する際に、短時間の間に次のように出力が遷移するかもしれない。
011 → 010 → 000 → 100
各ビットとも、変化に誤りはないのであるが、機械構造の精度上の問題で、完璧に同時に全ビットが変化することは保証できないのである。そのため遷移の途中の段階でデータを読み出すと、010(2)や000(0)といった偽データを取得してしまう可能性がある。
一般的な2進数ではなく、グレイコードを使えば、隣接値への変化の際に、常に1ビットしか変わらないので(3から4の変化であれば010から110)、いかなるタイミングで読み出そうとデータの値は以前の値か次の値であり、偽データが生成されることはない。
[編集] 脚注
- ^ アメリカ合衆国特許第2632058号、F. Gray. Pulse code communication, March 17, 1953 (filed Nov. 1947).
- ^ アメリカ合衆国特許第2733432号、J. Breckman. Encoding Circuit, Jan 31, 1956 (filed Dec. 1953).
- ^ a b アメリカ合衆国特許第2823345号、E. A. Ragland et al. Direction-Sensitive Binary Code Position Control System, Feb. 11, 1958 (filed Oct. 1953).