CRC校驗

  奇偶校驗碼(PCC)只能校驗一位錯誤,循環冗餘校驗碼(CRC)的檢錯能力更強,可以檢出多位錯誤

1. CRC校驗原理
    CRC校驗原理看起來比較複雜,其根本思想就是先在要發送的幀後面附加一個數(這個就是用來校驗的校驗碼,但要注意,這裏的數也是二進制序列的,下同),生成一個新幀發送給接收端。當然,這個附加的數不是隨意的,它要使所生成的新幀能與發送端和接收端共同選定的某個特定數整除(注意,這裏不是直接採用二進制除法,而是採用一種稱之爲“模2除法”)。到達接收端後,再把接收到的新幀除以(同樣採用“模2除法”)這個選定的除數。因爲在發送端發送數據幀之前就已通過附加一個數,做了“去餘”處理(也就已經能整除了),所以結果應該是沒有餘數。如果有餘數,則表明該幀在傳輸過程中出現了差錯。
     【說明】“模2除法”與“算術除法”類似,但它既不向上位借位,也不比較除數和被除數的相同位數值的大小,只要以相同位數進行相除即可。模2加法運算爲:1+1=0,0+1=1,0+0=0,無進位,也無借位;模2減法運算爲:1-1=0,0-1=1,1-0=1,0-0=0,也無進位,無借位。相當於二進制中的邏輯異或運算。也就是比較後,兩者對應位相同則結果爲“0”,不同則結果爲“1”。如100101除以1110,結果得到商爲11,餘數爲1,如圖5-9左圖所示。如11×11=101,如圖所示

CRC即循環冗餘校驗碼:是數據通信領域中最常用的一種查錯校驗碼,其特徵是信息字段和校驗字段的長度可以任意選定。循環冗餘檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,並將得到的結果附在幀的後面,接收設備也執行類似的算法,以保證數據傳輸的正確性和完整性。
方法:
循環冗餘檢驗的原理
在數據鏈路層傳送的幀中,廣泛使用了循環冗餘檢驗CRC 的檢錯技術。在發送端,先把數據劃分爲組(即:一幀)。假定每組k 個比特。在每組後面,添加供差錯檢測用的n位冗餘碼一起發送。即:實際發送長度爲:k+n 比特發送前雙方協商n+1位的除數P;
冗餘碼的計算
2的n次方乘M(發送數據),這相當於在 M 後面添加 n 個 0,長度成爲k + n;得到的 (k + n) 位的數除以事先選定好的長度爲(n + 1) 位的除數 P;除法採用的模2減法(無借位減,等價於異或);得出商是 Q 而餘數是 R,餘數 R 比除數 P 少1 位,即 R 是 n 位。
冗餘碼的計算舉例
現在k = 6, M =101001。
設n= 3, 除數P= 1101,
被除數是 2的n次方*M= 101001000。
模 2 運算的結果是:商Q= 110101,餘數R = 001。
把餘數R 作爲冗餘碼添加在數據M 的後面發送出去。
發送的數據是:2的n次方*M+ R
即:101001001,共(k + n) 位。


發佈了66 篇原創文章 · 獲贊 17 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章