<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CRC標(biāo)準(zhǔn)及計(jì)算過(guò)程

          CRC標(biāo)準(zhǔn)及計(jì)算過(guò)程

          作者: 時(shí)間:2010-08-23 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/151633.htm

            根據(jù)應(yīng)用環(huán)境與習(xí)慣的不同,又可分為以下幾種

           ?、?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/CRC">CRC-12碼;

           ?、?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/CRC">CRC-16碼;

            ③CRC-CCITT碼;

           ?、蹸RC-32碼。

            CRC-12碼通常用來(lái)傳送6-bit字符串。

            CRC-16及CRC-CCITT碼則是用來(lái)傳送8-bit字符串,其中CRC-16為美國(guó)采用,而CRC-CCITT為歐洲國(guó)家所采用。

            CRC-32碼大都被采用在一種稱(chēng)為Point-to-Point的同步傳輸中。

            生成

            下面以最常用的CRC-16為例來(lái)說(shuō)明其生成

            CRC-16碼由兩個(gè)字節(jié)構(gòu)成,在開(kāi)始時(shí)CRC寄存器的每一位都預(yù)置為1,然后把CRC寄存器與8-bit的數(shù)據(jù)進(jìn)行異或(異或:二進(jìn)制運(yùn)算 相同為0,不同為1;0^0=0;0^1=1;1^0=1;1^1=0),

            之后對(duì)CRC寄存器從高到低進(jìn)行移位,在最高位(MSB)的位置補(bǔ)零,而最低位(LSB,移位后已經(jīng)被移出CRC寄存器)如果為1,則把寄存器與預(yù)定義的多項(xiàng)式碼進(jìn)行異或,否則如果LSB為零,則無(wú)需進(jìn)行異或。重復(fù)上述的由高至低的移位8次,第一個(gè)8-bit數(shù)據(jù)處理完畢,用此時(shí)CRC寄存器的值與下一個(gè)8-bit數(shù)據(jù)異或并進(jìn)行如前一個(gè)數(shù)據(jù)似的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。

            

            1.設(shè)置CRC寄存器,并給其賦值FFFF(hex)。

            2.將數(shù)據(jù)的第一個(gè)8-bit字符與16位CRC寄存器的低8位進(jìn)行異或,并把結(jié)果存入CRC寄存器。

            3.CRC寄存器向右移一位,MSB補(bǔ)零,移出并檢查L(zhǎng)SB。

            4.如果LSB為0,重復(fù)第三步;若LSB為1,CRC寄存器與多項(xiàng)式碼相異或。

            5.重復(fù)第3與第4步直到8次移位全部完成。此時(shí)一個(gè)8-bit數(shù)據(jù)處理完畢。

            6.重復(fù)第2至第5步直到所有數(shù)據(jù)全部處理完成。

            7.最終CRC寄存器的內(nèi)容即為CRC值。

            常用的CRC循環(huán)冗余校驗(yàn)多項(xiàng)式如下:

            CRC(12位) =X12+X11+X3+X2+X+1

            CRC(16位) = X16+X15+X2+1

            CRC(CCITT) = X16+X12 +X5+1

            CRC(32位) = X32+X26+X23+X16+X12+X11+X10+ X8+X7+X5+X4+X2+X+1

            以CRC(16位)多項(xiàng)式為例,其對(duì)應(yīng)校驗(yàn)二進(jìn)制位列為1 1000 0000 0000 0101。

            注意:這兒列出的標(biāo)準(zhǔn)校驗(yàn)多項(xiàng)式都含有(X+1)的多項(xiàng)式因子;各多項(xiàng)式的系數(shù)均為二進(jìn)制數(shù),所涉及的四則運(yùn)算仍遵循對(duì)二取模的運(yùn)算規(guī)則。

            (注:對(duì)二取模的四則運(yùn)算指參與運(yùn)算的兩個(gè)二進(jìn)制數(shù)各位之間凡涉及加減運(yùn)算時(shí)均進(jìn)行XOR異或運(yùn)算,即:1 XOR 1=0,0 XOR 0=0,1 XOR 0=1,0 XOR 1=1,即相同為0,不同為1)



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();