循環冗余校驗(CRC)


冗余碼

CRC和海明校驗類似,也是有效信息(k位)+校驗信息(r位),需要滿足N=k+r≤2r-1

 

生成多項式G(X)

定義:收發雙方約定的一個(r+1)位二進制數,發送方利用G(X)對信息多項式做模2除運算,生成校驗碼。接收方利用G(X)對收到的編碼多項式做模2除運算檢測差錯及錯誤定位。

 

滿足條件:

  1. 最高位和最低位必須為1;
  2. 當被傳送信息(CRC碼)任何一位發生錯誤時,被生成多項式做除后應該使余數不為0;
  3. 不同位發生錯誤時,模2除運算后余數不同;
  4. 對不為0余數繼續進行模2除運算應使余數循環。

得到生成多項式

從最高冪位開始降位,有就為1,沒有就是0

例如:

G(x)多項式 G(x)
x3+x+1(x0) 1011
x3+x2 1100
x4+x2+1 10101

在利用G(X)對信息多項式做模2除運算時,運算原則(運算實際上就是異或運算)

  1. 部0分余數首位為1時,商為1,減除數;(余數開頭為1,下一位接着除)
  2. 部分余數首位為0時,商為0,減0(余數開頭為0,這位的商為0,下面減0)
  3. 當部分余數的位數小於除數的位數時,該余數即為最后余數。(結束運算條件)

 

 

通過一道例題來熟悉過程

將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,查表格也就是第一位出錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM