CRC檢驗原理

介紹1:

一、基本原理

    CRC檢驗原理實際上就是在一個p位二進制數據序列之後附加一個r位二進制檢驗碼(序列),從而構成一個總長爲n=p+r位的二進制序列;附加在數據序列之後的這個檢驗碼與數據序列的內容之間存在着某種特定的關係。如果因干擾等原因使數據序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因此,通過檢查這一關係,就可以實現對數據正確性的檢驗。

二、幾個基本概念

1、幀檢驗序列FCS(Frame Check Sequence):爲了進行差錯檢驗而添加的冗餘碼。

2、多項式模2運行:實際上是按位異或(Exclusive OR)運算,即相同爲0,相異爲1,也就是不考慮進位、借位的二進制加減運算。如:10011011 + 11001010 = 01010001。

3、生成多項式(generator polynomial):當進行CRC檢驗時,發送方與接收方需要事先約定一個除數,即生成多項式,一般記作G(x)。生成多項式的最高位與最低位必須是1。常用的CRC碼的生成多項式有:

CRC8=X8+X5+X4+1

CRC-CCITT=X16+X12+X5+1

CRC16=X16+X15+X5+1

CRC12=X12+X11+X3+X2+1

CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1

每一個生成多項式都可以與一個代碼相對應,如CRC8對應代碼:100110001。

三、CRC檢驗碼的計算

設信息字段爲K位,校驗字段爲R位,則碼字長度爲N(N=K+R)。設雙方事先約定了一個R次多項式g(x),則CRC碼:

V(x)=A(x)g(x)=xRm(x)+r(x)

其中:   m(x)爲K次信息多項式, r(x)爲R-1次校驗多項式。

這裏r(x)對應的代碼即爲冗餘碼,加在原信息字段後即形成CRC碼。

r(x)的計算方法爲:在K位信息字段的後面添加R個0,再除以g(x)對應的代碼序列,得到的餘數即爲r(x)對應的代碼(應爲R-1位;若不足,而在高位補0)。

計算示例

設需要發送的信息爲M = 1010001101,產生多項式對應的代碼爲P = 110101,R=5。在M後加5個0,然後對P做模2除法運算,得餘數r(x)對應的代碼:01110。故實際需要發送的數據是101000110101110。

圖片

 

四、錯誤檢測

    當接收方收到數據後,用收到的數據對P(事先約定的)進行模2除法,若餘數爲0,則認爲數據傳輸無差錯;若餘數不爲0,則認爲數據傳輸出現了錯誤,由於不知道錯誤發生在什麼地方,因而不能進行自動糾正,一般的做法是丟棄接收的數據。

五、幾點說明:

    1、CRC是一種常用的檢錯碼,並不能用於自動糾錯。

2、只要經過嚴格的挑選,並使用位數足夠多的除數 P,那麼出現檢測不到的差錯的概率就很小很小。

3、僅用循環冗餘檢驗 CRC 差錯檢測技術只能做到無差錯接受(只是非常近似的認爲是無差錯的),並不能保證可靠傳輸。

介紹2:

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

2、生成CRC碼的基本原理:任意一個由二進制位串組成的代碼都可以和一個係數僅爲‘0’和‘1’取值的多項式一一對應。例如:代碼1010111對應的多項式爲x6+x4+x2+x+1,而多項式爲x5+x3+x2+x+1對應的代碼101111。

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

V(x)=A(x)g(x)=xRm(x)+r(x);

其中:    m(x)爲K次信息多項式, r(x)爲R-1次校驗多項式,

         g(x)稱爲生成多項式:

g(x)=g0+g1x+ g2x2+...+g(R-1)x(R-1)+gRxR

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

4、CRC校驗碼軟件生成方法:

    藉助於多項式除法,其餘數爲校驗字段。

例如:信息字段代碼爲: 1011001;對應m(x)=x6+x4+x3+1 

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

      x4m(x)=x10+x8+x7+x4 對應的代碼記爲:10110010000

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

發送方:發出的傳輸字段爲: 1 0 1 1 0 0 1 1 0 10

                          信息字段       校驗字段

接收方:使用相同的生成碼進行校驗:接收到的字段/生成碼(二進制除法)如果能夠除盡,則正確,

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