冗余碼
CRC和海明校驗類似,也是有效信息(k位)+校驗信息(r位),需要滿足N=k+r≤2r-1
生成多項式G(X)
定義:收發雙方約定的一個(r+1)位二進制數,發送方利用G(X)對信息多項式做模2除運算,生成校驗碼。接收方利用G(X)對收到的編碼多項式做模2除運算檢測差錯及錯誤定位。
滿足條件:
- 最高位和最低位必須為1;
- 當被傳送信息(CRC碼)任何一位發生錯誤時,被生成多項式做除后應該使余數不為0;
- 不同位發生錯誤時,模2除運算后余數不同;
- 對不為0余數繼續進行模2除運算應使余數循環。
得到生成多項式
從最高冪位開始降位,有就為1,沒有就是0
例如:
G(x)多項式 | G(x) |
x3+x+1(x0) | 1011 |
x3+x2 | 1100 |
x4+x2+1 | 10101 |
在利用G(X)對信息多項式做模2除運算時,運算原則(運算實際上就是異或運算)
- 部0分余數首位為1時,商為1,減除數;(余數開頭為1,下一位接着除)
- 部分余數首位為0時,商為0,減0(余數開頭為0,這位的商為0,下面減0)
- 當部分余數的位數小於除數的位數時,該余數即為最后余數。(結束運算條件)
通過一道例題來熟悉過程
將4位有效信息1001編成循環校驗碼,選擇生成多項式x3+x1+x0,試寫出編碼過程
1.根據生成多項式,得到G(x)=1011
2.有效信息為4位,k=4,代入公式k+r≤2r-1,得到r≥3
3.首先臨時在有效信息1001后面添加r位0的冗余碼,即1001000,計算1001000/1011,得到余數110
4.將余數替換有效信息后面的冗余碼,變為1001110
余數 | 出錯位 (A7A6A5A4A3A2A1) |
000 | 無 |
001 | 7 |
010 | 6 |
100 | 5 |
011 | 4 |
110 | 3 |
111 | 2 |
101 | 1 |
在傳輸數據時,若對傳輸過去的數據進行模二運算,得到余數不為0,則數據發生變化,我們通過余數對比表,可以得到哪一位發生的變化。
例如,如果我們傳輸數據得到的是1001111,我們除以G(x)
得到余數101,查表格也就是第一位出錯。