CRC校驗原理

2021-09-01 14:53:30 字數 2551 閱讀 1055

用到多項式和二進位制數之間的轉換

然後用到的主要運算是模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

資訊字段       校驗字段

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

crc(cyclic redundancy check)迴圈冗餘校驗碼

是常用的校驗碼,在早期的通訊中運用廣泛,因為早期的通訊技術不夠可靠(不可靠性的**是通訊技術決定的,比如電磁波通訊時受雷電等因素的影響),不可靠的通訊就會帶來『確認資訊』的困惑,書上提到紅軍和藍軍通訊聯合進攻山下的敵軍的例子,第一天紅軍發了條資訊要藍軍第二天一起進攻,藍軍收到之後,發一條確認資訊,但是藍軍擔心的是『確認資訊』如果也不可靠而沒有成功到達紅軍那裡,那自己不是很危險?於是紅軍再發一條『對確認的確認資訊』,但同樣的問題還是不能解決,紅軍仍然不敢貿然行動。

對通訊的可靠性檢查就需要『校驗』,校驗是從資料本身進行檢查,它依靠某種數學上約定的形式進行檢查,校驗的結果是可靠或不可靠,如果可靠就對資料進行處理,如果不可靠,就丟棄重發或者進行修復。

crc碼是由兩部分組成,前部分是資訊碼,就是需要校驗的資訊,後部分是校驗碼,如果crc碼共長n個bit,資訊碼長k個bit,就稱為(n,k)碼。它的編碼規則是:

1、首先將原資訊碼(kbit)左移r位(k+r=n)

2、運用乙個生成多項式g(x)(也可看成二進位制數)用模2除上面的式子,得到的餘數就是校驗碼。

非常簡單,要說明的:模2除就是在除的過程中用模2加,模2加實際上就是我們熟悉的異或運算,就是加法不考慮進製,公式是:

0+0=1+1=0,1+0=0+1=1

即『異』則真,『非異』則假。

由此得到定理:a+b+b=a 也就是『模2減』和『模2加』真值表完全相同。

有了加減法就可以用來定義模2除法,於是就可以用生成多項式g(x)生成crc校驗碼。

例如: g(x)=x4+x3+x2+1,(7,3)碼,資訊碼110產生的crc碼就是:

對於g(x)=x4+x3+x2+1的解釋:(都是從右往左數)x4就是第五位是1,因為沒有x1所以第2位就是0。

11101 | 110,0000(設a=11101 ,b=1100000)

取b的前5位11000跟a異或得到101

101加上b沒有取到的00得到10100

然後跟a異或得到01001

也就是餘數1001

10111101 | 110,0000

111 01

1 0100

1 1101

1001

餘數是1001,所以crc碼是110,1001

標準的crc碼是,crc-ccitt和crc-16,它們的生成多項式是:

crc-ccitt=x^16+x^12+x^5+1

crc-16=x^16+x^15+x^2+1

先舉個例子:

已知資訊位為1100,生成多項式g(x) = x3+x+1,求crc碼。

m(x) = 1100 m(x)*x3 = 1100000 g(x) = 1011

m(x)*x3 / g(x) = 1110 + 010 /1011 r(x) = 010

crc碼為: m(x)*x 3+r(x)=1100000+010 =1100010

其原理是:crc碼一般在k位資訊位之後拼接r位校驗位生成。編碼步驟如下:

(1)將待編碼的k位資訊表示成多項式 m(x)。

(2)將 m(x)左移 r 位,得到 m(x)*xr 。

(3)用r+1位的生成多項式g(x)去除m(x)*xr 得到餘數r(x)。

(4)將m(x)*xr 與r(x)作模2加,得到crc碼。

「模2除」中間過程的減法為「模2減」,即異或運算。

CRC校驗原理

crc校驗原理 1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特 徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc碼的基本原理 任意乙個由二進位制位串組成的 都可以和乙個系 數僅為 0 和 1 取值的多項式一一對應。例如 1010111對應的多項 式為x6 x4 x2 ...

CRC校驗原理

以下內容摘自筆者即將出版的最新著作 深入理解計算機網路 一書。本書將於12月底出版上市,敬請留意!本書原始目錄參見此文 5.3.2 迴圈冗餘校驗檢錯方案 上節介紹的奇偶校驗碼 pcc 只能校驗一位錯誤,本節所要介紹的迴圈冗餘校驗碼 crc 的檢錯能力更強,可以檢出多位錯誤。1.crc校驗原理 crc...

CRC校驗原理

基本概念 crc即迴圈校驗碼是資料通訊中最常用的一種差錯校驗碼。資訊欄位的長度和校驗碼的長度是任意的。基本原理 在k位資訊碼的後面加上r位校驗碼,整個長度是n位,n k r。給定乙個 n,r 碼,可以證明存在乙個最高次冪為r的多項式g x 根據g x 可以生成k位資訊的校驗碼,而g x 叫做這個cr...