迴圈冗餘碼校驗英文名稱為cyclical redundancy check,簡稱crc。它是利用除法及餘數的原理來作錯誤偵測(error detecting)的。實際應用時,傳送裝置計算出crc值並隨資料一同傳送給接收裝置,接收裝置對收到的資料重新計算crc並與收到的crc相比較,若兩個crc值不同,則說明資料通訊出現錯誤。
根據應用環境與習慣的不同,crc又可分為以下幾種標準:
①crc-12碼;
②crc-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的資料進行異或,之後對crc暫存器從高到低進行移位,在最高位(msb)的位置補零,而最低位(lsb,移位後已經被移出crc暫存器)如果為1,則把暫存器與預定義的多項式碼進行異或,否則如果lsb為零,則無需進行異或。重複上述的由高至低的移位8次,第乙個8-bit資料處理完畢,用此時crc暫存器的值與下乙個8-bit資料異或並進行如前乙個資料似的8次移位。所有的字元處理完成後crc暫存器內的值即為最終的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即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。二 工作原理 迴圈冗餘校...
CRC迴圈冗餘校驗碼
1 crc crc迴圈冗餘校驗碼是資料通訊中的一種查錯校驗碼。迴圈冗餘檢查對資料進行多項式計算,將計算結果附加在幀後面,接收資料的裝置執行模2運算,保證資料傳輸的正確性和完整性。2.模2除法 不向上借位,只要除數和被除數的位數相同就可進行計算,不比較它們的大小 模2運算中用到了模2減法,與邏輯異或相...
迴圈冗餘校驗碼CRC
一 基本原理 crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼 序列 從而構成乙個總長為n p r位的二進位制序列 附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因干擾等原因使資料序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因...