CRC是什么--CRC是神馬東東??
導讀:本文主要介紹CRC是什么東東,不知道的童鞋們快來(lái)看看吧,很漲姿勢的哦~~~
本文引用地址:http://dyxdggzs.com/article/272912.htm1.CRC是什么--簡(jiǎn)介
CRC全稱(chēng)Cyclic Redundancy Check,即循環(huán)冗余校驗碼,是數據通信領(lǐng)域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長(cháng)度可以任意選定。CRC是一種數據傳輸檢錯功能,對數據進(jìn)行多項式計算,并將得到的結果附在幀的后面,接收設備也執行類(lèi)似的算法,以保證數據傳輸的正確性和完整性。
2.CRC是什么--基本知識
下面我們介紹幾個(gè)CRC的基礎知識:
1、幀檢驗序列FCS(Frame Check Sequence):為了進(jìn)行差錯檢驗而添加的冗余碼。
2、多項式模2運行:實(shí)際上是按位異或(Exclusive OR)運算,即相同為0,相異為1,也就是不考慮進(jìn)位、借位的二進(jìn)制加減運算。如:10011011 + 11001010 = 01010001。
3、生成多項式(generator polynomial):當進(jìn)行CRC檢驗時(shí),發(fā)送方與接收方需要事先約定一個(gè)除數,即生成多項式,一般記作G(x)。生成多項式的最高位與最低位必須是1。
3.CRC是什么--原理
CRC檢驗原理實(shí)際上就是在一個(gè)p位二進(jìn)制數據序列之后附加一個(gè)r位二進(jìn)制檢驗碼(序列),從而構成一個(gè)總長(cháng)為n=p+r位的二進(jìn)制序列;附加在數據序列之后的這個(gè)檢驗碼與數據序列的內容之間存在著(zhù)某種特定的關(guān)系。如果因干擾等原因使數據序列中的某一位或某些位發(fā)生錯誤,這種特定關(guān)系就會(huì )被破壞。因此,通過(guò)檢查這一關(guān)系,就可以實(shí)現對數據正確性的檢驗。
4.CRC是什么--計算
設信息字段為K位,校驗字段為R位,則碼字長(cháng)度為N(N=K+R)。設雙方事先約定了一個(gè)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個(gè)0,再除以g(x)對應的代碼序列,得到的余數即為r(x)對應的代碼(應為R-1位;若不足,而在高位補0)。
計算示例
設需要發(fā)送的信息為M = 1010001101,產(chǎn)生多項式對應的代碼為P = 110101,R=5。在M后加5個(gè)0,然后對P做模2除法運算,得余數r(x)對應的代碼:01110。故實(shí)際需要發(fā)送的數據是101000110101110。
5.CRC是什么--注意
有時(shí)候有些人會(huì )差生一些錯誤的觀(guān)點(diǎn),下面小編為大家糾正幾處常犯的錯誤觀(guān)點(diǎn):
1、CRC是一種常用的檢錯碼,并不能用于自動(dòng)糾錯。
2、只要經(jīng)過(guò)嚴格的挑選,并使用位數足夠多的除數 P,那么出現檢測不到的差錯的概率就很小很小。
3、僅用循環(huán)冗余檢驗 CRC 差錯檢測技術(shù)只能做到無(wú)差錯接受(只是非常近似的認為是無(wú)差錯的),并不能保證可靠傳輸。
拓展閱讀:
評論