CRC循環冗餘校驗碼

1、CRC

CRC循環冗餘校驗碼是數據通信中的一種查錯校驗碼。

循環冗餘檢查對數據進行多項式計算,將計算結果附加在幀後面,接收數據的設備執行模2運算,保證數據傳輸的正確性和完整性。

2.模2除法

①不向上借位,只要除數和被除數的位數相同就可進行計算,不比較它們的大小;

②模2運算中用到了模2減法,與邏輯異或相似:
1-1=0, 1-0=1, 0-1=1 , 0-0=0,

③例子:
這裏寫圖片描述

3.CRC校驗的步驟

(1)選擇一個生成多項式,作爲對接收的幀進行除法運算時的除數,生成多項式可以寫爲二進制形式;

  • 生成多項式的要求:
    ①最高位和最低位必須爲1;
    ②當CRC碼的任何一位發生錯誤時,新幀除生成多項式後餘數不爲0;
    ③不同位發生錯誤時,餘數應該是不同的;

  • 生成多項式轉化爲二進制形式:
    如x5+x3+x2+1,寫爲二進制:101101

(2)計算CRC校驗碼位數k=生成多項式位數-1,在要發送的數據幀後加k個0,除第一步用生成多項式轉化的二進制數(使用模2除法),得到的餘數即爲CRC校驗碼;

  • 模2除時,餘數的位數必須只比除數少一位,不能省略0

(3)把得到的校驗碼CRC加到原數據幀後,構成一個新數據幀發送到接收端,接收端將新幀除以之前選擇的除數(模2除法),如果沒有餘數,則表明該數據幀在傳輸過程中沒有出錯,否則出錯;

4.CRC校驗例子:

假設CRC生成多項式G(X)=X5+X4+X+1,要發送的二進制數據幀爲100101110,求CRC校驗碼:

①把生成多項式轉換爲二進制數:110011;

②由生成多項式的位數爲6可知,CRC校驗碼的位數爲5,所以在數據幀後加5個0,變爲10010111000000,將這個數使用模2除法除以生成多項式110011,得到餘數即CRC校驗碼11010;
這裏寫圖片描述
③用得到的CRC校驗碼替換掉數據幀中的5個0,形成新的幀10010111011010,將這個新幀發送給接收端;

④接收端收到新幀後,用新幀除以上面的多項式110011(模2除法),如果餘數爲0,該數據幀在傳輸過程中沒有出錯,否則出錯;(經驗證餘數爲0)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章