差動・グレー    Difference and Gray code

ホーム

 信号が中継される過程で、変復調されたり、歪を受けたりして、信号の極性あるいは位相が変化してしまいます。 この変化は受信側で戻すことは不可能です。 たとえば、2値データを -1volt のパルスと +1volt のパルスで送るとします。 受信側で判定した結果が

・・・・+1 ?1 ?1 +1 ?1 +1 ・・・・・

だとします。 このとき、反転したデータ列

・・・・-1 +1 +1 ?1 +1 ?1 ・・・・・

も実際に送られた可能性があり、どちらが正しいか判断できないということです。 実際、信号がチャンネルを通過する過程で電気的な極性は頻繁に反転されると考えなくてはなりません。 この自由度を解決するには、1 を送るならば一つ前のデータを反転し、0 を送るならば一つ前のデータを反転しないものとし、極性反転に情報を乗せればいいわけです。 では、4値データ、-1.5, -0.5, 0.5, 1.5  volt の場合、極性の自由度をどのようにして避ければいいでしょうか? これに答えるのが差動符号です。 まず、8レベルの場合について差動符号の原理を説明します。 音声や画像が圧縮符号化され、スクランブルされ、誤り訂正符号化されて、送るべきビット列が出てきます。 このビット列を8通りのパルス振幅で送りますから、3ビットづつ区切って、パラレルにします。 3ビットとパルスの高さとの対応を、たとえば次のように定めてみます。 この対応は、3ビットパラレルを10進で読むと、下から 0,1,2,3,4,5,6 となっています。

img1.gif

この対応では、左端のビット は振幅値の極性を表していますから、これについて差動符号をかければよいことがわかります。 送信側では、次のルールでプリコーディングします。

この式は直前のパルスの極性を によって反転または非反転することに相当します。 受信側では、パルスのレベル判定をし、上の対応表から3ビットを得ます。 この先頭ビットは、もし極性反転を起こしていれば0 と1 が入れ替わっています。 これを で表し、

を計算して正確に が得られます。 差動符号およびその復号のブロック図は下のようです。

img2.gif

次にグレー符号について説明します。 受信側でパルスの高さを判定するときの誤りのほとんどは、すぐ隣の振幅値を判定する場合です。 3ビットと8つの振幅値の対応を最初の図のようにすると、-2.5 volt -1.5 volt に誤って判定したときは2ビット誤ります。 さらに、-0.5 volt 0.5 volt に判定すると3ビットすべてが誤りになってしまいます。 もし、どの隣接振幅値への誤りも1ビットに抑えることができれば、ビット列としての誤りは最小ですみます。 これに答えるのが、グレー符号です。 作り方は、以下のように極めてシステマティックです。
まず、左端の2値から出発し、これを負側に平行移動(緑色の矢印)して、正側に鏡面対称で折り返します(オレンジ色の矢印)。 こうすると正側と負側のビット誤りは生じません。 そして正側と負側にそれぞれ極性ビットを加えると4値のグレー符号ができます。 この操作を繰り返すことによって、2のベキ乗の多値シンボルのグレー符号が生成できます。

img3.gif

差動符号とグレー符号を同時に実現するには、上のブ差動符号と復号のブロック図において、ビットパターンとパルス振幅値の変換表をグレー符号と振幅値の変換表に変更すれば済みます。

ディジタル通信の変調方式としてQAMが広く採用されていますが、この場合のシンボル配置は2次元です。 同期検波の出力では位相回転の自由度が残ります。 自由度の残り方はシンボル配置に依存しますが、ここでは方形配置について差動グレー符号の作り方を説明します。 方形配置のQAMでは、同相データと直交データをそれぞれ独立に送ります。 このとき、受信側では、0度、90度、180度、270度の4つの回転は原理的に見分けがつきません。 前述のAM(振幅変調)のケースでは、単に極性反転の自由度だけでしたが、QAMでは4つの回転の自由度が残ります。 差動符号はこの回転の自由度を避けなければなりません。 まずは、簡単な4QAM (4相位相変調)について見てみましょう。 下図左のように、反時計回りに 00, 01, 10, 11 (10進で0,1,2,3)を割り付けると、グレー符号になりません。 しかし、右図のように、00, 01, 11, 10 (10進で0,1,3,2) の順番に割り付ければグレーになります。

img4.gif

差動符号化は、これを0、1、2、3 の順に読み替えます。 すなわち、

00=0
01=1
11=2
10=4

とみなします。 この値を として次のように差動符号を行います。

符号化  

復号   

この結果は、受信信号が90度、180度、270度の回転を受けていても不変です。 復号結果 から元のグレー符号を逆引きします。 この4QAM から出発して、下図のように、多値QAMの差動・グレー符号を作ることができます。 緑色は平行移動、オレンジ色は鏡面対称の折り返しを表しています。 左端の4相差動グレーを第1象限に移動させ、図のように鏡面対称に折り返してゆきます。 そのあとで、各象限の2ビットに元の4相差動グレー(茶色のビット)を付け足します。 同様の操作を続ければ、64QAM や256QAM の差動グレーを簡単に求めることができます。

img5.gif

QAM の差動・グレー符号と復号のブロック図は下のようになります。

img6.gif

グレー符号によって、一つのシンボル誤りは1ビットの誤りに抑えることができますが、もし先頭2ビットに誤りが含まれると差動復号でビット誤りが2倍に拡大することに注意してください。

ついでに、3D-CG (3次元コンピュータグラフィック)や3D-CV (3次元コンピュータビジョン)などで応用されるかもしれないので、3次元のグレー符号を考えてみましょう。 これは2次元の応用で簡単にできそうです。 下図は立方体の8つの頂点にグレー符号を割り付けたものです。 これをもとに、鏡面対称の折り返しを作って3ビットを加えれば、グレー符号の3次元構造が得られます。

img7.gif

なお、上の立方体を適当に回転して眺めると下図のようにも描けます。 これは、0と1を元とするブール代数の3次直積の半順序構造を表すハッセ図 (Hasse diagram) として登場します。