CRC校驗

一、什麼是CRC校驗
       CRC即循環榮譽校驗碼(Cyclic Redundancy Check):是數據通訊領域中最常用的一種差錯校驗碼,其特徵是信息字段和校驗字段的長度可以任意選定。

CRC的基本原理:

       在K位信息碼後拼接R位的校驗碼,整個編碼長度爲N位,因此,這種編碼也叫(N,K)碼。對於一個給定的(N,K)碼,可以證明存在一個最高次冪爲N-K=R的多項式

G(X)。根據G(X)可以生成K位信息的校驗碼,而G(X)叫做這個CRC碼的生成多項式。校驗碼的具體生成過程爲:假設要發送的信息用多項式C(X)表示,將C(X)左移R位(可表示

成C(X)*2R),這樣C(X)的右邊就會空出R位,這就是校驗碼的位置。用C(X)*2R除以生成多項式G(X)得到的餘數就是校驗碼


二、基本原理:

        任意一個由二進制位串組成的代碼都可以和一個係數僅爲”0”和”1”取值的多項式一一對應。例如:代碼111010對應的多項式爲X^5+X^4+X^3+X,多項式X^4+X+1對應的代碼

爲10011。

       若設碼字長度爲N,信息字段爲K位,校驗碼段爲R位(N=K+R),則對於CRC碼集中的任一碼字,存在且僅存在一個R次多項式g(x),使得

                                                                                  V(x)=A(x)g(x)=x……x^Rm(x)+r(x);

其中m(x)爲K次原始的信息多項式,r(x)爲R-1次校驗多項式(即CRC校驗和),g(x)稱爲生成多項式:

                                                                      g(x)=g0+g1*1+g2*2+......g(R-1)*(R-1)+gR*R

發送方通過指定的g(x)產生CRC碼字,接收方通過g(x)來校驗收到的CRC碼字。

三、生成方式
        藉助於多項式除法,其餘數爲校驗字段。

例如:信息字段代碼爲:1011001;對應

                                                                      m(x)=x^6+x^4+x^3+1

假設生成多項式爲:g(x)=x^4+x^3+1;則對應g(x)的代碼爲11001;

                                                               X^4m(x)=x^10+x^8+x^7+x^4
對應的代碼記爲10110010000;

採用多項式除法:得餘數爲1010(即校驗字段爲:1010)

發送方:發出的傳輸字段爲:10110011010信息字段校驗字段

接收方:使用相同的生成碼進行校驗:接收到的字段/生成碼(二進制除法)

如果能夠除盡,則正確。

下面是餘數(1010)的計算步驟:

出發沒有數學上的含義,而是採用計算機的模二除法,即,除數和被除數做異或運算。進行異或運算時除數和被除數最高位對齊,按位異或。

10110010000

^11001

01111010000
1111010000
^11001

0011110000
11110000
^11001

00111000
111000
^11001

001010
       則四位CRC監督碼就位:1010。

四、算法介紹:
        設編碼前的原始信息多項式爲P(x),P(x)的最高冪次加1等於K;生成多項式爲G(x),G(x)的最高冪次等於r;CRC的信息多項式爲T(x).

發送方編碼方式:將P(x)乘以xr(即對應的二進制碼序列左移r位),再乘以G(x),所得餘式即爲R(x)。用公式表示爲T(x)=xrP(x)+R(x)

接收方的解碼方式:將T(x)除以G(x),得到一個數,如果這個餘數爲0,則說明傳輸中無錯誤發生,否則說明傳輸有誤。

舉例說明:設信息編碼爲1100,則生成多項式爲1011,即P(x)=X^3+X+1,計算CRC的過程爲

                                                                         XrP(x)=X^3(X^3+X^2)=X^6+X^5G(x)=X^3+X+1

即R(x)=x.注意到G(x)最高冪次r=3,得出CRC爲010。

發佈了53 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章