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