1.什麼是crc校驗?
crc即迴圈冗餘校驗碼(cyclic redundancy check):是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查(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)得到的餘數就是校驗碼。
下面為crc校驗的流程圖
相關概念
1.對應關係
多項式和二進位制數有直接對應關係:x的最高冪次對應二進位制數的最高位,以下各位對應多項式的各冪次,有此冪次項對應1,無此冪次項對應0。可以看出:x的最高冪次為r,轉換成對應的二進位制數有r+1位。
多項式包括生成多項式g(x)和資訊多項式c(x)。
如生成多項式為g(x)=x4+x3+x+1, 可轉換為二進位制數碼11011。
而傳送資訊位 101111,可轉換為資料多項式為c(x)=x5+x3+x2+x+1。
2.生成多項式
是接受方和傳送方的乙個約定,也就是乙個二進位制數,在整個傳輸過程中,這個數始終保持不變。
在傳送方,利用生成多項式對資訊多項式做模2除生成校驗碼。在接收方利用生成多項式對收到的編碼多項式做模2除檢測和確定錯誤位置。
3.應滿足以下條件:
a、生成多項式的最高位和最低位必須為1。
b、當被傳送資訊(crc碼)任何一位發生錯誤時,被生成多項式做除後應該使餘數不為0。
c、不同位發生錯誤時,應該使餘數不同。
d、對餘數繼續做除,應使餘數迴圈。
4.校驗碼位數
crc校驗碼位數 = 生成多項式位數 - 1。注意有些生成多項式的簡記式中將生成多項式的最高位1省略了。
生成步驟
1、將x的最高次冪為r的生成多項式g(x)轉換成對應的r+1位二進位制數。
2、將資訊碼左移r位,相當於對應的資訊多項式c(x)*2r。
3、用生成多項式(二進位制數)對資訊碼做除,得到r位的餘數(注意:這裡的二進位製做除法得到的餘數其實是模2除法得到的餘數,並不等於其對應十進位制數做除法得到的餘數。)。
4、將餘數拼到信。。。
碼左移後空出的位置,得到完整的crc碼。
例子:假設使用的生成多項式是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位後的原始報文進行模2除(高位對齊),相當於按位異或:
1010000
1011
0001000
0001011
0000011
得到的餘位011,所以最終編碼為:1010 011
資料校驗 CRC校驗
工作原理 crc即迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資...
CRC校驗原理
crc校驗原理 1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特 徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc碼的基本原理 任意乙個由二進位制位串組成的 都可以和乙個系 數僅為 0 和 1 取值的多項式一一對應。例如 1010111對應的多項 式為x6 x4 x2 ...
CRC校驗程式設計
程式的宗旨 通過編寫crc的校驗程式,加深對crc原理的理解,同時學會將書本上的原理運用於實際,動手實踐才能學得更快。注 本文關於crc原理那部分內容,來自網路蒐集。1.需求分析 編寫乙個crc校驗的模擬程式,該程式實現的功能如下 輸入 一串二進位制位元串 輸出 crc校驗碼 2.crc校驗原理分析...