問題已開啟 (普通問題)
CRC是什么
提問者: walter520sq  提問時間: 2009-06-02    
 
  我要回答:
 

  請先 登錄注冊 再回答問題

更多 CRC C_C 相關問題
問題答案 ( 5 )

循環(huán)冗余校驗知1fkjK:JFD(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
糾錯編碼中的一種方式什21fK:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
*$#(*K:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

回答者: 壞壞狗     回答時間:2009-06-02 10:16    

11        7        


循環(huán)冗余碼校驗英文名稱為Cyclical Redundancy Check,簡稱CRC。它是利用除法及余數(shù)的原理來作錯誤偵測(Error Detecting)的。實際應用時,發(fā)送裝置計算出CRC值并隨數(shù)據(jù)一同發(fā)送給接收裝置,接收裝置對收到的數(shù)據(jù)重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數(shù)據(jù)通訊出現(xiàn)錯誤。tre43289K:JFD()$本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有


回答者: leey242     回答時間:2009-06-02 10:36    

18        14        


循環(huán)冗余校驗,可以分析傳輸CRC錯誤次數(shù)e43289西708K:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

回答者: haboct     回答時間:2009-06-02 12:56    

9        18        


答:在數(shù)字數(shù)據(jù)通信中,由發(fā)送器發(fā)送的數(shù)據(jù)信號禎(Frame)在經(jīng)由網(wǎng)絡傳到接收器后,由于多種原因可能導致錯誤位(bit   errors)的出現(xiàn),因此必須由接收器采取一定的措施探測出所有的錯誤位,并進而采取一定的措施予以修正。#&)*(&#*($(K:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
        實際采用的錯誤檢測方法主要有兩類:奇偶校驗(Parity)和CRC循環(huán)冗余校驗(Cyclic   Redundancy   Check)。  
    Cyclic Redundancy Check循環(huán)冗余檢驗,是基于數(shù)據(jù)計算一組效驗碼,用于核對數(shù)據(jù)傳輸過程中是否被更改或傳輸錯誤。$#(*$#什2K:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    實際應用時,發(fā)送裝置計算出CRC值并隨數(shù)據(jù)一同發(fā)送給接收裝置,接收裝置對收到的數(shù)據(jù)重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數(shù)據(jù)通訊出現(xiàn)錯誤。
 
根據(jù)應用環(huán)境與習慣的不同,CRC又可分為以下幾種標準:@&%#*(我K:JFD()$本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
1、CRC-12碼;%$#(*$#什21K:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
2、CRC-16碼;mmvckjK:JFD(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
3、CRC-CCITT碼;fd知1fkK:JFD()本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
4、CRC-32碼。urewioK:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    CRC-12碼通常用來傳送6-bit字符串。CRC-16及CRC-CCITT碼則用是來傳送8-bit字符,其中CRC-16為美國采用,而CRC-CCITT為歐洲國家所采用。CRC-32碼大都被采用在一種稱為Point-to-Point的同步傳輸中。
 1fd3s1fd諯:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    下面以最常用的CRC-16為例來說明其生成過程。
    CRC-16碼由兩個字節(jié)構成,在開始時CRC寄存器的每一位都預置為1,然后把CRC寄存器與8-bit的數(shù)據(jù)進行異或,之后對CRC寄存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位后已經(jīng)被移出CRC寄存器)如果為1,則把寄存器與預定義的多項式碼進行異或,否則如果LSB為零,則無需進行異或。重復上述的由高至低的移位8次,第一個8-bit數(shù)據(jù)處理完畢,用此時CRC寄存器的值與下一個8-bit數(shù)據(jù)異或并進行如前一個數(shù)據(jù)似的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。ads13東oK:JFD()$本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
 
 21fdsK:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
 oK:JFD(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
算法原理 s13東K:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    假設數(shù)據(jù)傳輸過程中需要發(fā)送15位的二進制信息g=101001110100001,這串二進制碼可表示為代數(shù)多項式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,對應g(x)中x^k的系數(shù)。將g(x)乘以x^m,既將g后加m個0,然后除以m階多項式h(x),得到的(m-1)階余項r(x)對應的二進制碼r就是CRC編碼。 5a4f8e342是K:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    h(x)可以自由選擇或者使用國際通行標準,一般按照h(x)的階數(shù)m,將CRC算法稱為CRC-m,比如CRC-32、CRC-64等。國際通行標準可以參看http://en.wikipedia.org/wiki/Cyclic_redundancy_check ?1fds3a21K:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
      g(x)和h(x)的除運算,可以通過g和h做xor(異或)運算。比如將11001與10101做xor運算:       
    明白了xor運算法則后,舉一個例子使用CRC-8算法求101001110100001的效驗碼。CRC-8標準的h(x) = x^8 + x^7 + x^6 + x^4 + x^2 + 1,既h是9位的二進制串111010101。 $*@#(_@K:JFD()本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

      342是4343K:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    經(jīng)過迭代運算后,最終得到的r是10001100,這就是CRC效驗碼。
    通過示例,可以發(fā)現(xiàn)一些規(guī)律,依據(jù)這些規(guī)律調整算法: jlurewioK:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
*(我)$#@K:JFD()$本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
1. 每次迭代,根據(jù)gk的首位決定b,b是與gk進行運算的二進制碼。若gk的首位是1,則b=h;若gk的首位是0,則b=0,或者跳過此次迭代,上面的例子中就是碰到0后直接跳到后面的非零位。 *&#%kcvmmvcK:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
               #@3221a3ds襅:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

K:JFD()$本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
2. 每次迭代,gk的首位將會被移出,所以只需考慮第2位后計算即可。這樣就可以舍棄h的首位,將b取h的后m位。比如CRC-8的h是111010101,b只需是11010101。 

      j道h$#$#&)K:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
&%#*(我)$K:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
3.
每次迭代,受到影響的是gk的前m位,所以構建一個m位的寄存器S,此寄存器儲存gk的前m位。每次迭代計算前先將S的首位拋棄,將寄存器左移一位,同時將g的后一位加入寄存器。若使用此種方法,計算步驟如下: 
34321%$#(*$#K:JFD()$#_*(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
      
s不21fds3a2K:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
※藍色表示寄存器S的首位,是需要移出的,b根據(jù)S的首位選擇0或者h。黃色是需要移入寄存器的位。S'是經(jīng)過位移后的S。
21fds3a21fK:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

查表法

    同樣是上面的那個例子,將數(shù)據(jù)按每4位組成1個block,這樣g就被分成6個block。
      3221a3ds也fK:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
 s也f12dK:JFD()本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    下面的表展示了4次迭代計算步驟,灰色背景的位是保存在寄存器中的。 
3ds也f12dK:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
      

K:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    經(jīng)4次迭代,B1被移出寄存器。被移出的部分,不我們關心的,我們關心的是這4次迭代對B2和B3產(chǎn)生了什么影響。注意表中紅色的部分,先作如下定義:
jhfjouierpoeK:JFD()$#_*(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
   B23 = 00111010我)$#@3221K:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
   b1 = 00000000fd知1fK:JFD(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
   b2 = 01010100fds3a21fd3K:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
   b3 = 10101010dsaf12zcvK:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
   b4 = 110101019西70K:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
   b' = b1 xor b2 xor b3 xor b44321%$K:JFD(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

4次迭代對B2和B3來說,實際上就是讓它們與b1,b2,b3,b4做了xor計算,既:
   B23 xor b1 xor b2 xor b3 xor b4*@#(_@s4fadsK:JFD()$#_*(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
可以證明xor運算滿足交換律和結合律,于是: #*(我)$#@3K:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
   B23 xor b1 xor b2 xor b3 xor b4 = B23 xor (b1 xor b2 xor b3 xor b4) = B23 xor b'
b1是由B1的第1位決定的,b2是由B1迭代1次后的第2位決定(既是由B1的第1和第2位決定),同理,b3和b4都是由B1決定。通過B1就可以計算出b'。另外,B1由4位組成,其一共2^4有種可能值。于是我們就可以想到一種更快捷的算法,事先將b'所有可能的值,16個值可以看成一個表;這樣就可以不必進行那4次迭代,而是用B1查表得到b'值,將B1移出,B3移入,與b'計算,然后是下一次迭代。2是434321%$#K:JFD()$#_*(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

      (么$*@#(_@K:JFD()$#_本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
(*$#蔏:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    可看到每次迭代,寄存器中的數(shù)據(jù)以4位為單位移入和移出,關鍵是通過寄存器前4位查表獲得,這樣的算法可以大大提高運算速度。 ads不2K:JFD(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    上面的方法是半字節(jié)查表法,另外還有單字節(jié)和雙字節(jié)查表法,原理都是一樣的——事先計算出2^8或2^16個b'的可能值,迭代中使用寄存器前8位或16位查表獲得b'。$#(*)#$@K:JFD()$本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
21fd3s1fd知K:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
urewiK:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

反向算法

    之前討論的算法可以稱為正向CRC算法,意思是將g左邊的位看作是高位,右邊的位看作低位。G的右邊加m0,然后迭代計算是從高位開始,逐步將低位加入到寄存器中。在實際的數(shù)據(jù)傳送過程中,是一邊接收數(shù)據(jù),一邊計算CRC碼,正向算法將新接收的數(shù)據(jù)看作低位。#@3221a3dK:JFD()$#本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
    逆向算法顧名思義就是將左邊的數(shù)據(jù)看作低位,右邊的數(shù)據(jù)看作高位。這樣的話需要在g的左邊加m0h也要逆向,例如正向CRC-16算法h=0x4c11db8,逆向CRC-16算法h=0xedb88320。b的選擇0還是h,由寄存器中右邊第1位決定,而不是左邊第1位。寄存器仍舊是向左位移,就是說迭代變成從低位到高位。ioK:JFD()$#_*(本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有
34321K:JFD本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有


回答者: wangyuan072     回答時間:2009-06-02 14:05    

20        13        
學習了
Beyond—通信  2010-04-25 15:25 

學習學習
EricXu94  2012-08-24 09:26 



CRC為循環(huán)冗余校驗碼,開站時交換與基站要使用同樣的設置,否則會出問題)#$@&%#*(我K:JFD()$#_*本文來自移動通信網(wǎng)m.gg1fic3.cn,版權所有

回答者: mansfield     回答時間:2009-06-09 12:51    

14        8        

中國通信人才網(wǎng) | 江蘇通信人才網(wǎng) | 山東通信人才網(wǎng) | 武漢通信人才網(wǎng) | 浙江通信人才網(wǎng) | 湖南通信人才網(wǎng)
安徽引途科技有限公司 聘:福建測試/1個月
需求人數(shù):2 人 地點:福建省
西安長河通訊有限責任公司 聘:網(wǎng)絡優(yōu)化工程師
需求人數(shù):4 人 地點:渭南市,商洛市,漢中市,安康市
北京宜通華瑞科技有限公司 聘:專項優(yōu)化中高級(江西急聘)
需求人數(shù):5 人 地點:上饒市,景德鎮(zhèn)市,南昌市,鷹潭市
嘉環(huán)科技股份有限公司 聘:湖南電信原廠優(yōu)化招聘
需求人數(shù):10 人 地點:長沙市,永州市,郴州市,衡陽市
南京華蘇科技有限公司 聘:江西移動日常優(yōu)化測試工程師
需求人數(shù):5 人 地點:上饒市,鷹潭市,吉安市
北京電旗通訊技術股份有限公司 聘:網(wǎng)優(yōu)實習生通信應屆生(云南)
需求人數(shù):1 人 地點:昆明市,思茅市,昭通市
南京欣網(wǎng)通信科技股份有限公司 聘:項目經(jīng)理(昆明)
需求人數(shù):1 人 地點:昆明市
深圳市訊方技術股份有限公司 聘:華為45G高級網(wǎng)優(yōu)工程師
需求人數(shù):5 人 地點:山東省
上海瑞禾通訊技術有限公司 聘:廣州中高級工程師
需求人數(shù):3 人 地點:廣州市
重慶信科通信工程有限公司 聘:江西電信原廠高級后臺
需求人數(shù):2 人 地點:九江市
熱點問題
更多精彩

聯(lián)系我們 - 問通信專家 Powered by MSCBSC 移動通信網(wǎng)  © 2006 -