<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        C語言:CRC校驗

        作者:xuchen   來源:xuchen的blog   點擊數:  更新時間:2014年05月28日   【字體:
        一、CRC碼
        CRC:Cylic Reduancy check譯作漢語就是循環冗余校驗碼。

        二、XOR
        XOR:邏輯運算符異或,不知道用符號怎么寫,總之其運算法則是,不同為1,相同為0。

        三、用XOR代替算術運算上除法的兩個例子。
        1、10110010000/11001
        第一次異或(相除),得到商為1,余數為1111,加入下一位0,進行
        第二次異或,得到商為1,余數為111,加入下一位1,余數為1111,四位與除數5位不能夠異或計算,所以此處商為0,加入下一位0,進行
        第三次異或,得到商為1,余數為111,同理第5位商為0,余數繼續加入被除數的下一位0,進行
        第四次異或,得到商為1,余數為101,加入后一位被除數的0,得到商為0,最終余數為1010,而最終商為1101010。計算流程如下圖所示:

        如若讓被除數10110010000加上余數1010則為10110011010,再除以(異或)11001,則得到余數為0000(此處不再具體計算).
        2、1111000/1001
        經過三次異或(相除)得到商為1110,余數為110,具體例程如下,

        同樣,讓該例的被除數1111000加上余數110后為1111110除以(異或)除數100則得到余數為000.

        四、CRC校驗原理
        由以上兩個例子可以看出,通信過程中加入想要傳送的數據是“被除數”,加上余數后再傳送。而接收一方接收完整數據后,除以除數,如果余數為0,則說明傳送的數據正確,如果不為0則說明傳送的數據有誤。因為對于一個確定的“除數”,則就會有唯一的余數與之對應。這個過程其實就是一個CRC的校驗過程。不過名稱改一下不能叫做被除數 除數什么的?梢砸幎ㄉ鲜龅某龜到凶錾啥囗検交蛏身,用g(x)表示。而余數就叫做CRC校驗碼。由以上知道,對于不同的生成項,則就會有唯一的CRC校驗碼與之對應。而對于要傳送的數據也可以用一個系數僅為0和1取值的多項式一一對應。例如代碼1010111對應的多項式為x^6+x^4+x^2+x+1.而多項式x^5+x^3+x^2+x+1對應的代碼是101111.
        實際上,上述的被除數并不是真正的要傳送的數據,真正要傳送的數據是一個多項式左移CRC校驗碼位數后的代碼。定義CRC校驗碼的位數表示它本身的寬度。
        另外,關于生成項,不難發現其最高位是1,實際上在除法的每次XOR時候都要被消掉,所以一般第一個1不做參考,后面的幾位才是最重要的。這就是為什么生成項的位數比CRC寬度大1的原因。且生成項的最后一位也必須同時為1.一般生成項簡寫時候不寫最高位的1.以下是各種常用的生成項表達式:
        CRC-4:x^4+x+1;-------------------------------->0x03
        CRC-8:x^8+x^5+x^4+1;--------------------------->0x31
        CRC-8:x^8+x^2+x^1+1;--------------------------->0x07
        CRC-8:x^8+x^6+x^4+x^3+x^2+x;------------------->0x5E
        CRC-12:x^12+x^11+x^4+x^3+x+1;------------------>0x80
        CRC-16:x^16+x^15+x^2+1;------------------------>0x80005
        CRC-16:x^16+x^12+x^5+1;------------------------>0x1021
        CRC-32:x^32+x^26+x^23+....+x^2+x+1;------------>0x04C11DB7
        CRC-32:x^32+x^28+x^27+....+x^8+x^6+1;---------->0x1EDC6F41

        五、C語言的實現





        附錄:

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮