CRC校驗(迴圈冗餘校驗碼)

2021-08-02 20:44:50 字數 4187 閱讀 9838

一、概念:

crc即迴圈冗餘校驗碼:是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查(crc)是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。

二、工作原理:

迴圈冗餘校驗碼(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)得到的餘數就是校驗碼。(2r是指2的r次方)

任意乙個由二進位制位串組成的**都可以和乙個係數僅為『0』和『1』取值的多項式一一對應。

例如:**1010111對應的多項式為x6+x4+x2+x+1,而多項式為x5+x3+x2+x+1對應的**101111

其整個編碼如下圖:

三、基本概念

1. 多項式與二進位制之間的關係

多項式和二進位制數有直接對應關係:x的最高冪次對應二進位制數的最高位,以下各位對應多項式的各冪次,有此冪次項對應1,無此冪次項對應0。可以看出:x的最高冪次為r,轉換成對應的二進位制數有r+1位。如果乙個多項式為g(x)=x4+x3+x+1,則可轉換二進位制數碼為11011。 如果二進位制數碼為101111,則轉換成多項式為c(x)=x5+x3+x2+x+1

2. 生成多項式

生成多項式是接受方和傳送方的乙個約定,也就是乙個二進位制數,在整個傳輸過程中,這個數始終保持不變。(這個多項式是傳送方和接收方所共知的,不會在(n,k)碼中體現出來) 在傳送方,利用生成多項式對資訊多項式做模2除生成校驗碼。在接收方利用生成多項式對收到的編碼多項式做模2除檢測和確定錯誤位置。

生成多項式應滿足以下條件

a、生成多項式的最高位和最低位必須為1。

b、當被傳送資訊(crc碼)任何一位發生錯誤時,被生成多項式做除後應該使餘數不為0。

c、不同位發生錯誤時,應該使餘數不同。

d、對餘數繼續做除,應使餘數迴圈。

3. 校驗碼位數

crc校驗碼位數 = 生成多項式位數 - 1。例如:生成多項式為:g(x)=x4+x3+x+1,則crc校驗碼的位數 = 4+1 = 5 。注意有些生成多項式的簡記式中將生成多項式的最高位1省略了。

4. 生成步驟

(1)x的最高次冪為r的生成多項式g(x)轉換成對應的r+1位二進位制數。如:g(x) = x4+x3+x+1,則轉換為二進位制數為11011crc校驗碼位數r = 4.

(2)將資訊碼左移r位,相當於對應的資訊多項式c(x) *2r。如:資訊碼為1010,則對應多項式為c(x) = x3 + x1 + 1;將資訊碼左移r位得到1011 0000,對應的資訊多項式c(x) *2r = x7 + x5 +1

(3)用生成多項式(二進位制數)對資訊碼做除,得到r位的餘數(注意:這裡的二進位製做除法得到的餘數其實是模2除法得到的餘數,並不等於其對應十進位制數做除法得到的餘數。)。如:將上面的左移後的資訊碼1011 0000除以 生成多項式(二進位制數)11011,得到的餘數(1110)就是crc碼。(這個crc碼一定是r位)

(4)將餘數拼到資訊碼左移後空出的位置,得到完整的crc碼。 如:上面的資訊碼為1011 0000,將後r位換成剛得到的crc碼,就得到完整得到crc碼10111110

例1:

假設使用的生成多項式是g(x)=x3+x+1。4位的原始報文為1010,求編碼後的報文。 解:

1、將生成多項式g(x)=x3+x+1轉換成對應的二進位制除數1011。

2、此題生成多項式有4位(r+1)(注意:4位的生成多項式計算所得的校驗碼為3位,r為校驗碼位數),要把原始報文c(x)左移3(r)位變成1010 000

3、用左移3位後的原始報文 除以 生成多項式對應的二進位制數 得到的的餘數:1010 000 %1011 = 011(這個%好像不能在這裡用,意思表達到就行了,正確說法應該是二進位制的模二除法) 所以,最終編碼為1010011

例2:

資訊字段**為:1011001;對應m(x)=x6+x4+x3+1假設生成多項式為:g(x)=x4+x3+1;則對應g(x)的**為:11001x4m(x)=x10+x8+x7+x4對應的**記為:10110010000

採用多項式除法: 得餘數為:1010 (即校驗欄位為:1010)

傳送方:發出的傳輸欄位為:1 0 1 1 0 0 1 1010

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

如果能夠除盡,則正確。

CRC迴圈冗餘校驗碼

1 crc crc迴圈冗餘校驗碼是資料通訊中的一種查錯校驗碼。迴圈冗餘檢查對資料進行多項式計算,將計算結果附加在幀後面,接收資料的裝置執行模2運算,保證資料傳輸的正確性和完整性。2.模2除法 不向上借位,只要除數和被除數的位數相同就可進行計算,不比較它們的大小 模2運算中用到了模2減法,與邏輯異或相...

迴圈冗餘校驗碼CRC

一 基本原理 crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼 序列 從而構成乙個總長為n p r位的二進位制序列 附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因干擾等原因使資料序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因...

CRC迴圈冗餘校驗碼

crc迴圈冗餘校驗碼 crc cyclic redundancy check 迴圈冗餘校驗碼 是常用的校驗碼,在早期的通訊中運用廣泛,因為早期的通訊技術不夠可靠 不可靠性的 是通訊技術決定的,比如電磁波通訊時受雷電等因素的影響 不可靠的通訊就會帶來 確認資訊 的困惑,書上提到紅軍和藍軍通訊聯合進攻山...