誤り制御について

誤り制御について
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つのパリ
ティをつける。
• 水平パリティ・・・複数の符号をまとめたブロッ
クに1つのパリティキャラクタ(=1つの符号)
をつける。ベーシック手順で用いられる。
• 水平垂直パリティ・・・上の2つを足したもの
水平パリティの場合
• 文字列 ”STAR” を ASCII コード で変換し,
水平方向に偶数パリティビットをつける。
コード化
S
T
A
R
水平パリティ
ビット
01 0 1 0 0 1 1
11 0 1 0 1 0 0
01 0 0 0 0 0 1
11 0 1 0 0 1 0
→”1”が4つ
→”1”が4つ
”1”が3つ
→”1”が2つ
→”1”が4つ
”1”が3つ
偶数にする
垂直パリティの場合
• 文字列 ”STAR” を ASCII コード で変換し,
垂直方向に偶数パリティビットをつける。
コード化
S
T
A
R
1の数
1010011
1010100
1000001
1 0 1 0 0 1 0 垂直パリティビット
0010100
404
302
122
偶数に
する
水平垂直パリティ
• 文字列 ”STAR” を ASCII コード で変換し,
水平垂直・偶数パリティビットをつけて送る。
コード化
S
T
A
R
水平パリティ
0 1 0 1 0 0 1 1 →”1”が4つ
”1”が4つ
1 1 0 1 0 1 0 0 →”1”が3つ
0 1 0 0 0 0 0 1 →”1”が2つ
”1”が4つ
1 1 0 1 0 0 1 0 →”1”が3つ
0 0 0 1 0 1 0 0 →”1”が2つ
垂直パリティ
ビット
2404
302
122
1の数