誤り制御について

誤り制御について
4400075 田原慎一朗
誤り制御とは?
• データ転送の際,データが正しく相手に届くと
は限らない。
• 正しく送信されたか,チェックする必要がある。
• このチェック機能を誤り制御という。
誤り制御の種類
• パリティチェック,ハミングコード,CRCなど,
いくつか方法が見つけられている。
• 自動修正できるものや,連続した誤りを見る
けられるものもある。
• ここでは,最も簡単で,よく使われているパリ
ティチェックの例をあげてみる。
1.パリティチェック
• 伝送するビット列に,ある規則に従ったパリ
ティビットを加えることにより,データを受け
とった人が,そのデータにエラーがないかを
調べることができる。
• 限界はあるが,簡単であるので多用される。
• 2つの種類と3つの方式がある。
2つの種類
• 偶数パリティ・・・伝送するデータのビット列に
ある”1”の数が偶数になるように調整する。
• 奇数パリティ・・・伝送するデータのビット列に
ある”1”の数が奇数になるように調整する。
偶数パリティの場合
• “1000101”という列を送りたい。
伝送したいビット列 → “1”が3つある
↓
10001011
パリティビット
“1”の数を偶数にしたい
↓
“1”をもう一つ足せばいい
偶数パリティの場合
• “1010101”という列を送りたい。
伝送したいビット列 → “1”が4つある
↓
1010101 0
パリティビット
“1”の数は偶数でOK!
↓
“1”を足す必要はない
奇数パリティの場合
• “1000110”という列を送りたい。
伝送したいビット列 → “1”が3つある
↓
1000110 0
パリティビット
“1”の数は奇数でOK!
↓
“1”を足す必要はない
奇数パリティの場合
• “1010101”という列を送りたい。
伝送したいビット列 → “1”が4つある
↓
1010101 1
パリティビット
“1”の数を奇数にしたい
↓
“1”を足せばいい
3つの方式
• 垂直パリティ・・・各符号(文字)に一つのパリ
ティをつける。
• 水平パリティ・・・複数の符号をまとめたブロッ
クに1つのパリティをつける。ベーシック手順
で用いられる。
• 水平垂直パリティ・・・上の2つを足したもの
水平パリティの場合
• 文字列 ”STAR” を ASCII コード で変換し,
水平・奇数パリティビットをつける。
コード化
S
T
A
R
水平パリティ
ビット
11 0 1 0 0 1 1
01 0 1 0 1 0 0
11 0 0 0 0 0 1
01 0 1 0 0 1 0
→”1”が5つ
→”1”が3つ
→”1”が5つ
→”1”が3つ
奇数にする
垂直パリティの場合
• 文字列 ”STAR” を ASCII コード で変換し,
垂直方向に奇数パリティビットをつける。
コード化
S
T
A
R
1010011
1010100
1000001
1010010
垂直パリティビット
1101011
1の数
5131133
奇数に
する
水平垂直パリティ
• 文字列 ”STAR” を ASCII コード で変換し,
水平垂直にパリティビットをつけて送る。
コード化
S
T
A
R
11 0 1 0 0 1 1
01 0 1 0 1 0 0
11 0 0 0 0 0 1
01 0 1 0 0 1 0
11 1 0 1 0 1 1
水平パリティ 5 1 3 1 1 3 3
ビット
1の数
→”1”が5つ
→”1”が3つ
→”1”が3つ
→”1”が3つ
←垂直パリティビット