導讀:本文主要介紹CRC是什麼東東,不知道的童鞋們快來看看吧,很漲姿勢的哦~~~
本文引用地址:http://www.eepw.com.cn/article/272912.htm1.CRC是什麼--簡介CRC全稱Cyclic Redundancy Check,即循環冗餘校驗碼,是數據通信領域中最常用的一種差錯校驗碼,其特徵是信息欄位和校驗欄位的長度可以任意選定。CRC是一種數據傳輸檢錯功能,對數據進行多項式計算,並將得到的結果附在幀的後面,接收設備也執行類似的算法,以保證數據傳輸的正確性和完整性。
下面我們介紹幾個CRC的基礎知識:
1、幀檢驗序列FCS(Frame Check Sequence):為了進行差錯檢驗而添加的冗餘碼。
2、多項式模2運行:實際上是按位異或(Exclusive OR)運算,即相同為0,相異為1,也就是不考慮進位、借位的二進位加減運算。如:10011011 + 11001010 = 01010001。
3、生成多項式(generator polynomial):當進行CRC檢驗時,發送方與接收方需要事先約定一個除數,即生成多項式,一般記作G(x)。生成多項式的最高位與最低位必須是1。
CRC檢驗原理實際上就是在一個p位二進位數據序列之後附加一個r位二進位檢驗碼(序列),從而構成一個總長為n=p+r位的二進位序列;附加在數據序列之後的這個檢驗碼與數據序列的內容之間存在著某種特定的關係。如果因幹擾等原因使數據序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因此,通過檢查這一關係,就可以實現對數據正確性的檢驗。
設信息欄位為K位,校驗欄位為R位,則碼字長度為N(N=K+R)。設雙方事先約定了一個R次多項式g(x),則CRC碼:
V(x)=A(x)g(x)=xRm(x)+r(x)
其中: m(x)為K次信息多項式, r(x)為R-1次校驗多項式。
這裡r(x)對應的代碼即為冗餘碼,加在原信息欄位後即形成CRC碼。r(x)的計算方法為:在K位信息欄位的後面添加R個0,再除以g(x)對應的代碼序列,得到的餘數即為r(x)對應的代碼(應為R-1位;若不足,而在高位補0)。
計算示例
設需要發送的信息為M = 1010001101,產生多項式對應的代碼為P = 110101,R=5。在M後加5個0,然後對P做模2除法運算,得餘數r(x)對應的代碼:01110。故實際需要發送的數據是101000110101110。
5.CRC是什麼--注意
有時候有些人會差生一些錯誤的觀點,下面小編為大家糾正幾處常犯的錯誤觀點:
1、CRC是一種常用的檢錯碼,並不能用於自動糾錯。
2、只要經過嚴格的挑選,並使用位數足夠多的除數 P,那麼出現檢測不到的差錯的概率就很小很小。
3、僅用循環冗餘檢驗 CRC 差錯檢測技術只能做到無差錯接受(只是非常近似的認為是無差錯的),並不能保證可靠傳輸。
拓展閱讀:
1.解讀CRC的校驗原理
2.CRC標準及計算過程
3.視頻應用中的CRC測試