新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CRC標準簡介及計算過程

        CRC標準簡介及計算過程

        作者: 時間:2012-05-16 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/149045.htm

          根據應用環境與習慣的不同,又可分為以下幾種

          ①-12碼;

          ②-16碼;

          ③CRC-CCITT碼;

          ④CRC-32碼。

          CRC-12碼通常用來傳送6-bit字符串。

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

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

          生成

          下面以最常用的CRC-16為例來說明其生成

          CRC-16碼由兩個字節構成,在開始時CRC寄存器的每一位都預置為1,然后把CRC寄存器與8-bit的數據進行異或(異或:二進制運算 相同為0,不同為1;0^0=0;0^1=1;1^0=1;1^1=0),

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

          

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

          2.將數據的第一個8-bit字符與16位CRC寄存器的低8位進行異或,并把結果存入CRC寄存器。

          3.CRC寄存器向右移一位,MSB補零,移出并檢查LSB。

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

          5.重復第3與第4步直到8次移位全部完成。此時一個8-bit數據處理完畢。

          6.重復第2至第5步直到所有數據全部處理完成。

          7.最終CRC寄存器的內容即為CRC值。

          常用的CRC循環冗余校驗多項式如下:

          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位)多項式為例,其對應校驗二進制位列為1 1000 0000 0000 0101。

          注意:這兒列出的標準校驗多項式都含有(X+1)的多項式因子;各多項式的系數均為二進制數,所涉及的四則運算仍遵循對二取模的運算規則。

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



        關鍵詞: 過程 計算 簡介 標準 CRC

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泊头市| 贡觉县| 大同县| 益阳市| 保康县| 成安县| 金乡县| 日喀则市| 远安县| 都兰县| 绥芬河市| 开江县| 平利县| 井陉县| 武安市| 河间市| 澎湖县| 积石山| 福贡县| 宝兴县| 永顺县| 休宁县| 图木舒克市| 淮南市| 报价| 遵义县| 青神县| 新巴尔虎左旗| 自贡市| 塘沽区| 丰都县| 锡林郭勒盟| 西吉县| 平陆县| 鲁甸县| 巴林右旗| 汉寿县| 越西县| 雅江县| 清涧县| 抚宁县|