CRC迴圈冗餘校驗碼
Ⅰ.CRC校驗
CRC(Cyclic Redundancy Check):即迴圈冗餘檢驗碼,是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊欄位和校驗欄位的長度可以任意選定。
Ⅱ.基本原理
在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)*x的R次方,這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。通過C(x)*X的R次方除以生成多項式G(x)得到的餘數就是校驗碼。
(1)傳送端
1.在傳送端先將資料分組,每組K位資料。假定要傳送的資料是M;
2.在資料M後面新增供差錯檢測的N位冗餘碼,然後構成一幀傳送出去,一共傳送(K+N)位。
(2)冗餘碼可以通過下面的方法得出:
1.用二進位制模2運算進行2^n*M(相當於M左移n位)的運算。意思就是在M後面補n個0。現在M就變成了K+N位;
2.用M除以收發雙方事先商定的長度為n+1的除數P;
3.得到的餘數R,這個R就是FCS(幀檢驗序列)。將這個FCS序列加到M上然後發出去。
(3)接收端
1.在接收端把接收到的資料以幀為單位進行CRC校驗 ;
2.把收到的每一個幀都除以同樣的除數P,然後檢查餘數R;
3.如果餘數R為0,如果在傳輸過程中沒有差錯;
4.如果出現誤碼,那麼餘數R為零的概率是非常小的。
Ⅲ.總結
假設M=101001,P=1101,n=3
則(1)傳送端: 由M=(2^n*M)得M = 101001000
再用M除以P 得到R= 001
將餘數R加到M上,就得到了要傳送的幀: M=101001000+R=101001001
(2)在接收端:
接收到的每一幀都要進行差錯檢驗,假設收到101001001,P=1101。
得餘數R=0,所以這個幀沒有出錯。