第2章「符号化と伝送」-04

ネットワークスペシャリスト
nekonisi
nekonisi
2021/12/02の勉強

前回

第2章「符号化と伝送」-03
nekonisi 2021/11/28の勉強 前回 誤り制御 データの伝送を行う際に、ノイズ等で破損する場合がある。 データの再送を促したり、その場でデータを回復するための処理として、誤り制御がある。 誤り制御の方法 誤り制御の方法は大きく...

前回に引き続き誤り制御に関しての学習内容をまとめていく。

CRC

CRC: Cyclic Redundancy Check(巡回冗長検査)
送信するデータに生成多項式を適用して、誤り検出用の冗長データを添付する方式。
方法としては参照リンク参照。ムズかったので、簡単に流れだけ記載する。

符号の求め方

  1. nビットの「符号」を求めるために、左端及び右端のビットが 1 である ( n + 1) ビットのビットパターン (以下,マスクという) を定める。
  2. ビット列の左端から調べ,最初に値が 1 であるビットの位置に対して、排他的論理和を求めていく
  3. すべてが0になったときの、右端のnビットを「符号」とする。

データのチェック

  1. 送信データの右端に「符号」を追加する
  2. 「符号の求め方」の2と同じ手順で、計算をしていく
  3. 右端のビット列が0になれば誤りなし、0にならなければ誤りあり と判断する。
    参照: 基本情報でわかる CRC 「具体例を見て体験すれば仕組みがわかる
nekonisi
nekonisi
あと30回くらい説明よめばわかる気がする。

ハミング符号

情報ビットに対して検査ビットを付加することで、2ビットまでの誤り検出と1ビットまでの自動訂正機能を持つ、誤り制御方式。

自動訂正の仕組みを説明する際に必要なXOR演算の特徴について触れておく。

XORの特性について

XOR演算は、復元が可能である。

value1, 2の値演算の結果がある。

value1 1 0 1 1
value2 0 1 1 0
XOR 1 1 0 1
AND 0 0 1 0

value2が失われた場合

value1 1 0 1 1
value2
XOR 1 1 0 1
AND 0 0 1 0

ANDの結果から、value2を復元することが不可能であるが、
XORの結果からは復元が可能である。

符号化

下記のデータを送信する場合について考えていく

1 0 0 1
  1. 各ビットに3桁のアドレス情報を付与する。
1 0 1 1
100 011 010 001
  1. 「1」となっているビットのアドレスについて、XOR演算を行う
1 0 0
0 0 1
0 1 0
XOR 1 1 1

この、111が「符号」となるので、データ送信時には符号を付与した

1 0 1 1 1 1 1

を送信する。

エラー検知方法

データが送信された場合のエラー検知方法を考えていく

1 0 1 1 1 1 1

アドレス情報を付与すると次のようになる

1 0 1 1 1 1 1
100 011 010 001

1となっている部分について、XOR演算を行う

0 0 1
0 1 0
1 0 0
XOR 1 1 1

この結果を、符号で更にXOR演算を行う

1 1 1
1 1 1
XOR 0 0 0

誤りが存在する場合には、演算結果が000にならない。

誤り訂正方法

次に、誤りがあった場合の訂正方法について説明を行う
※ 青色部分が1から0になっている。

1 0 1 0 1 1 1

エラー検知時と同様にXOR演算を行う

1 0 1 0 1 1 1
100 011 010 001

1のアドレスと、符号でXOR演算を行う

1 0 0
0 1 0
1 1 1
XOR 0 0 1

ここで、XOR演算の結果が「000」ではなく「001」となっている。
この結果を見れば、「送信データに誤りがあること」と「誤りのあるデータのアドレスが001」であることがわかる。

nekonisi
nekonisi

わかるけどわからない。

参考:ハミング符号の大枠を掴もう 誤り検出・訂正基礎講座 第2回

 

以上で「符号化と伝送」については終了。
次回から3章の勉強をしていく。 うーん。なんとなくは理解した気がする。

コメント

タイトルとURLをコピーしました