在數(shù)據(jù)傳輸過程中,很難實現(xiàn)無差錯傳輸。差錯傳輸導(dǎo)致接收方收到的數(shù)據(jù)發(fā)生錯誤。為盡量提高接收數(shù)據(jù)的正確率,在接收數(shù)據(jù)之前需要對數(shù)據(jù)進行差錯檢測。
CRC是一種用于校驗通信鏈路上數(shù)字傳輸準(zhǔn)確性的計算方法。其原理是附加在數(shù)據(jù)序列之后的檢驗碼與數(shù)據(jù)序列的內(nèi)容之間存在著某種特定的關(guān)系,如果數(shù)據(jù)序列中的某一位或某些位發(fā)生錯誤,這種特定關(guān)系就會被破壞,由于CRC檢錯能力極強,且檢測成本較低,成為數(shù)據(jù)通信領(lǐng)域最為普遍的校驗方式。
1 定義
CRC即循環(huán)冗余校驗碼(Cyclic Redundancy Check):是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。
CRC是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進行多項式計算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。
2 基本概念
多項式和二進制數(shù)有直接對應(yīng)關(guān)系:x的最高冪次對應(yīng)二進制數(shù)的最高位,以下各位對應(yīng)多項式的各冪次,有此冪次項對應(yīng)1,無此冪次項對應(yīng)0??梢钥闯觯簒的最高冪次為R,轉(zhuǎn)換成對應(yīng)的二進制數(shù)有R+1位。
多項式包括生成多項式G(x)和信息多項式C(x)。
如生成多項式為G(x)=x^4+x^3+x+1, 可轉(zhuǎn)換為二進制數(shù)碼11011。
而發(fā)送信息位 1111,可轉(zhuǎn)換為數(shù)據(jù)多項式為C(x)=x^3+x^2+x+1。
生成多項式
是接受方和發(fā)送方的一個約定,也就是一個二進制數(shù),在整個傳輸過程中,這個數(shù)始終保持不變。
在發(fā)送方,利用生成多項式對信息多項式做模2除生成校驗碼。在接受方利用生成多項式對收到的編碼多項式做模2除檢測和確定錯誤位置。
應(yīng)滿足以下條件:
a、生成多項式的最高位和最低位必須為1。
b、當(dāng)被傳送信息(CRC碼)任何一位發(fā)生錯誤時,被生成多項式做除后應(yīng)該使余數(shù)不為0。
c、不同位發(fā)生錯誤時,應(yīng)該使余數(shù)不同。
d、對余數(shù)繼續(xù)做除,應(yīng)使余數(shù)循環(huán)。
CRC校驗碼位數(shù)
CRC校驗碼位數(shù) = 生成多項式位數(shù) - 1。注意有些生成多項式的簡記式中將生成多項式的最高位1省略了。
3 基本原理
CRC檢驗原理實際上就是在一個p位二進制數(shù)據(jù)序列之后附加一個r位二進制檢驗碼(序列),從而構(gòu)成一個總長為n=p+r位的二進制序列;附加在數(shù)據(jù)序列之后的這個檢驗碼與數(shù)據(jù)序列的內(nèi)容之間存在著某種特定的關(guān)系。
如果因干擾等原因使數(shù)據(jù)序列中的某一位或某些位發(fā)生錯誤,這種特定關(guān)系就會被破壞。因此,通過檢查這一關(guān)系,就可以實現(xiàn)對數(shù)據(jù)正確性的檢驗。
4 生成步驟
1、將x的最高次冪為R的生成多項式G(x)轉(zhuǎn)換成對應(yīng)的R+1位二進制數(shù)。
2、將信息碼左移R位,相當(dāng)于對應(yīng)的信息多項式C(x)*x的R次方。
3、用生成多項式(二進制數(shù))對信息碼做除,得到R位的余數(shù)。
4、將余數(shù)拼到信息碼左移后空出的位置,得到完整的CRC碼。
5 生成方法
設(shè)需要發(fā)送的信息為M = 1010001101,CRC8=X5+X4+X2+1產(chǎn)生多項式對應(yīng)的代碼為P = 110101,R=5。
在M后加5個0為計算序列:101000110100000,然后對P做模2除法運算,得余數(shù)r(x)對應(yīng)的代碼:01110。故實際需要發(fā)送的數(shù)據(jù)是101000110101110。其中CRC校驗碼就為:01110。
6 電路圖
-
二進制
+關(guān)注
關(guān)注
2文章
807瀏覽量
42329 -
數(shù)據(jù)通信
+關(guān)注
關(guān)注
2文章
470瀏覽量
34470 -
CRC效驗
+關(guān)注
關(guān)注
0文章
30瀏覽量
1259
發(fā)布評論請先 登錄
如何在IAR Embedded Workbench中配置生成對應(yīng)代碼區(qū)域的CRC校驗碼

循環(huán)冗余校驗碼的單片機及CPLD 實現(xiàn)
電話網(wǎng)遠程通信中CRC校驗碼的設(shè)計及實現(xiàn)
循環(huán)冗余校驗碼---CRC碼

基于FPGA的循環(huán)冗余校驗實驗系統(tǒng)

CRC校驗碼算法的研究與實現(xiàn)
CRC基本原理及其兩個重要性質(zhì)的介紹及FPGA實現(xiàn)

crc循環(huán)冗余校驗碼算法

CRC校驗碼并行計算的FPGA實現(xiàn)

評論