第2章 伝送とプロトコル

ARQ : Automatic Repeat request
FEC : Forward Error Correction
2.4 誤り制御
(error controlとerror detection)
2.4.1 誤り制御の種類
(1)誤り検出符号による分類
誤り制御方式 誤り検出符号による分類
垂直パリティチェック方式
自動再送
水平パリティチェック方式
要求方式
水平垂直パリティチェック方式
RQ)
群計数チェック方式
CRC方式
チェックサム方式
ハミング符号方式
前方誤り
サイクリック符号方式
訂正方式
BCH符号方式
(FEC)
閾値復号方式
ビタビ復号方式
適用データ
コンピュータデータなど(A
音声,画像,FAXなど
(2)チェック単位による分類
パリティチェック方式
キャラクタチェック方式
定マーク符号チェック方式
ハミング符号チェック方式
水平垂直チェック方式
ブロックチェック方式
群計数チェック方式
CRC(サイクリック符号)方式
2.4.2 自動再送要求方式
ARQ: Automatic Repeat request
① 送信側で誤り検出符号(error detecting code)を付加し,これを受信側で
チェックして,誤りが検出されなければ肯定応答(ACK)を返却し,検出すれ
ば否定応答(NAK)を返却する。
② 否定応答が帰ってきたら,送信側はデータを再送する。
③ 帰還訂正方式または後方訂正符号方式(BEC : Backward Error
Correction)とも呼ばれる。
2.4.3 前方誤り訂正方式
FEC: Forward Error Correction
① 受信側で復号し,自己訂正する方法
② 無帰還訂正方式とも呼ばれる。
③ 送信側で付加される冗長ビットを誤り訂正符号(error correcting code)とい
い,以下のような種類がある。
・ ブロック符号(block code)
・ 畳込み符号(convolutional code)
2.4.4 各種方式
(1)キャラクタチェック方式
パリティチェックチェック方式
b1 b2 b3 b4 b5 b6 b7 parity
1 0 1 0 1 0 1
0
0 0 1 0 1 0 1
1
0 0 1 0 1 1 1
0
伝送符号中の1のビットの個
数が偶数または奇数になるよ
うに冗長ビットを付ける。
(偶数パリティ,奇数パリティ)上例は偶数パリティチェックである。
定マーク符号チェック方式
各符号中の1の数が常に一定
になるように冗長ビットを付
加する。
b1 b2 b3 b4 b5 b6 b7 b8
1 0 1 0 1 1 0 0
0 1 0 0 1 1 1 0
0 0 0 0 1 1 1 1
ハミング符号チェック方式
b0 b1 b2 b3 b4 b5 b6
各情報ビットに数ビットの情
報ビットを付加し,一定の演
算によりチェックを行う。
検
査
ビ
ッ
ト
黄
色
部
分
が
ハミング符号チェックの例
①検査行列と生成行列
ハミング符号は,ある整数 m に対して,生成される符号長 : n =2m-1,
元のデータのビット長: k = n - m で構成される。 今,m=3を考えると符
号長 7 ビット,元のデータ 4 ビットとなる。すなわち,検査行列は3行7列
のマトリックスとなる。例えば以下のように設定する。
1 0 1 1 1 0 0 
H  1 1 0 1 0 1 0
0 1 1 1 0 0 1
生成行列は,検査行列の4列分を転置し,前に4列分の単位行列を付
加したもの,すなわち
1 0 0 0 1 1 0
0 1 0 0 0 1 1 

G
0 0 1 0 1 0 1 


0
0
0
1
1
1
1


転置
②符号化と検査
符号化では生成行列を乗じるが,加算の替わりに排他的論理和を行う。
1
0
1 0 1 1 
0

0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
1
1
1
1
0
1
0
1
 1 0 1 1 1 0 0
1

1
受信情報が 1 1 1 1 1 0 0 ,すなわち2ビット目が誤っていたとする。
T
1 0 1 1 1 0 0
1 1 1 1 1 0 0 1 1 0 1 0 1 0  0 1 1
0 1 1 1 0 0 1
となる。結果の転置ベクトルが検査行列の2番目と同じなので,
2ビット目が誤りとなる。2ビット目を逆転することで正しいデータを得ること
ができる。
(2)ブロックチェック方式
①水平垂直パリティチェック方式
水平方向と垂直方向でパリティチェックを行う。
誤り箇所は,異なった箇所の交差するビット位置となる。
水平垂直パリティチェック
b1 b2 b3 b4 b5 b6 b7 parity
h1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
h2
0
0
1
0
1
0
1
1
0
0
1
0
1
0
1
1
1
h3
0
0
1
0
1
1
1
0
0
0
1
0
1
1
1
0
0
h4
1
0
1
0
1
0
1
0
1
0
1
1
1
0
1
0
1
h5
0
0
1
0
1
0
1
1
0
0
1
0
1
0
1
1
1
h6
0
0
1
0
1
1
1
0
0
0
1
0
1
1
1
0
0
h7
0
0
1
0
1
0
1
1
0
0
1
0
1
0
1
1
1
parity
0
0
1
0
1
0
1
1
0
0
1
0
1
0
1
1
0
0
1
1
1
0
1
0
②群計数チェック方式
伝送符号のブロックごとに,水平方向の1の数を加算し,
その結果を伝送ブロックの後に付加する。
3個の1
6個の1
0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0
③CRC(サイクリックチェック)方式(その1)
伝送ブロックごとに数ビットから十数ビットの冗長ビットを付加して
誤り検出の精度を上げる方式。
送信情報のビット列がa1a2・・・an(ai=0または1)とすると,情報多項式はP(X)は,
P (X)=a1+a2X+a3X 2+・・・+anX n-1
となる。たとえば,101101というビット列は,
1+X 2+X 3+X 5
と表すことができる。
CRC(サイクリックチェック)方式(その2)
情報多項式
: P (X)=a1+a2X+a3X 2+・・・+anX n-1
101101の多項式: 1+X 2+X 3+X 5
このビット列をサイクリックコード化するには,
以下のような生成多項式と呼ばれる k 次の多項式を用いる。
(多項式の次数は,チェックビットの数に相当する)
G (X )= 1+g1X+g3X 3+・・・+gk-1X k-1+X k
P (X)に生成多項式の最高次数 X k を乗じ,
G (X )で除した余りをR (X ),商をQ (X )とすると,
X k P (X )=Q (X )・G (X )+R (X )
と表すことができる。
CRC(サイクリックチェック)方式(その3)
情報多項式
101101の多項式
生成多項式
G (X )で除した商
G (X )で除した余り
計算式
:
:
:
:
:
:
P (X)=a1+a2X+a3X 2+・・・+anX n-1
1+X 2+X 3+X 5
G (X )= 1+g1X+g3X 3+・・・+gk-1X k-1+X k
Q (X )
R (X )
X k P (X )=Q (X )・G (X )+R (X )
このときの余りのR (X )は,
R (X )=c1+c2X+c3X 3+・・・+ckX k-1
とすることができ,これらのc1,c2,・・・,ck をチェックビットとする。
(G (X )の最高次数-1であることに注意)。
CRC(サイクリックチェック)方式(その4)
情報多項式
101101の多項式
生成多項式
G (X )で除した商
G (X )で除した余り
計算式
:
:
:
:
:
:
P (X)=a1+a2X+a3X 2+・・・+anX n-1
1+X 2+X 3+X 5
G (X )= 1+g1X+g3X 3+・・・+gk-1X k-1+X k
Q (X )
R (X ) =c1+c2X+c3X 3+・・・+ckX k-1
X k P (X )=Q (X )・G (X )+R (X )
チェックビットを付加したサイクリックコードF (X)は,
F (X )=X k P (X )+R (X )=Q (X )・G (X )
となり,明らかにG (X )で割り切れることが分かる。
(正負の符号が逆転しているように見えるがモジュロ 2 で計算するので構わない)
送信側でチェックビットを付加し,受信側でG (X )で割り切れるかどうかを
判定することで誤り検出が可能となる。
なお,以上の各ビットはモジュロ 2 で計算するものとする。
[補足]モジュロ2の加算と減算
以下のように、モジュロ2の場合、結果は同じとなる
加
0
0
1
1
算
+
+
+
+
0
1
0
1 =10
=
=
=
=
0
1
1
0
減
0
0
1
1
算
-
-
-
-
0
= 0
1 = 10 - 1 = 1
0
= 1
1
= 0
CRC方式の例(その1)
送信情報を11001101,生成多項式をG (X )= X 4+X+1とすると
情報生成多項式P(X )は,P (X )=X 7+X 6+X 3+X 2+1
生成多項式の最高次数X4を乗じると
P (X )×X 4=(X 7+X 6+X 3+X 2+1)×X 4=X 11+X 10+X 7+X 6+ X 4
となる。これをモジュロ2によりG (X )で除して余りを求めると,
X 7 +X 6 +X 4 +X 3
+X +1
X 4+X+1 X 11+X 10
+X 7+X 6
+X 4
X 11
+X 8 +X 7
X 10+X 8
+X 6
+X 4
X 10
+X 7 +X 6
X 8 +X 7
+X 4
X8
+X 5+X 4
X7
+X 5
X7
+X 4+X 3
X 5+X 4+X 3
X5
+X 2 +X
X 4+X 3+X 2 +X
R(X ) = X 3+X 2+1
X4
+X+1
すなわち
X 3+X 2
+1
チェックビットは 1101
CRC方式の例(その2)
チェックビットは1101(ビット数4ビット)
送信情報を4ビットずつ区切ると,
1100(10進数の12),1101(10進数の13)
チェックビットは1101(10進数の13)であるので,
これらを加えると,
12+13+13=38
となる。
生成多項式10011を10進数で表すと19であるから,
38を19で除した余りは 0, すなわち割り切れる。