CRC校驗的設計與實現(xiàn)_第1頁
CRC校驗的設計與實現(xiàn)_第2頁
CRC校驗的設計與實現(xiàn)_第3頁
全文預覽已結(jié)束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 循環(huán)冗余校驗的設計與實現(xiàn)本系統(tǒng)中數(shù)據(jù)通信技術占據(jù)重要地位,是保證數(shù)據(jù)采集準確性的關鍵??蛻舳伺c稱重儀表進行通信時,為減小產(chǎn)量信息在傳輸過程中由于電磁干擾等因素導致的錯誤,需進行數(shù)據(jù)校驗。數(shù)據(jù)校驗方法有很多,比較傳統(tǒng)的有:行列冗余校驗、重復碼校驗、奇偶校驗、循環(huán)冗余校驗等。本系統(tǒng)采用循環(huán)冗余校驗()進行通信過程中的數(shù)據(jù)校驗。是一種檢錯能力很強的循環(huán)碼,利用模2取余的原理對數(shù)據(jù)進行循環(huán)校驗,計算效率高且誤判概率極低,幾乎為零。從性能和開銷上考慮,遠優(yōu)于傳統(tǒng)的算術和校驗及奇偶校驗。1編碼原理校驗通常采用多項式編碼的方式,參與校驗的數(shù)據(jù)信息(以下簡稱“待校驗數(shù)”)可看作一個階的二進制形式的多項式,即

2、。例如,一個6位二進制數(shù)101101可表示為:(為方便下文描述,把該類型的多項式稱為“轉(zhuǎn)換多項式”)。的編碼方式是把待校驗數(shù)轉(zhuǎn)變成二進制數(shù),然后再將轉(zhuǎn)變?yōu)檗D(zhuǎn)換多項式,令(式中的表示對中括號內(nèi)的式子進行取余運算),將余數(shù)做為待校驗數(shù)的校驗碼。校驗碼具體求解步驟如下:假設待校驗數(shù)是位二進制形式的多項式,把轉(zhuǎn)變?yōu)檗D(zhuǎn)換多項式,位數(shù)為。在待校驗數(shù)的末尾附加個零,則待校驗數(shù)的長度變?yōu)槲唬鋵亩M制形式的多項式變成。把和進行取余運算,設余數(shù)為,則,位數(shù)為。則就是經(jīng)過編碼后的校驗碼。把以模2除法的方法求得,然后減去,得到二進制形式的多項式就是包含了CRC校驗碼的待校驗數(shù)。2解碼原理檢驗原理是在一個位待校驗

3、數(shù)后添加個二進制序列,組成一個長度為 位的二進制數(shù)據(jù)。例如,一個位二進制數(shù)據(jù)塊為,位校驗碼為,得到的位二進制校驗碼;附加在位待校驗數(shù)后的位二進制序列與之間存在一種校驗關系。若數(shù)據(jù)傳輸過程中因電磁干擾、環(huán)境因素等原因造成待校驗數(shù)中部分數(shù)據(jù)產(chǎn)生錯誤,那么這種校驗關系就被破壞。所以通過檢查此校驗關系,即可實現(xiàn)對數(shù)據(jù)傳輸準確性的校驗。由編碼過程可得,數(shù)據(jù)接收方接收的位待校驗數(shù)是碼和的組合,去除的最后位數(shù)據(jù),就得到原始待校驗數(shù)。因此,CRC解碼過程是對接收的前位數(shù)據(jù)進行與編碼相同的校驗,數(shù)據(jù)通訊雙方采用相同的多項式,將校驗得到的位校驗碼與的最后位校驗碼進行對比,以兩者是否一致為依據(jù)來檢驗待校驗數(shù)在傳輸過

4、程中是否出錯。若兩者不同,則待校驗數(shù)在傳輸過程中產(chǎn)生錯誤;若兩者相同,則表明待校驗數(shù)在傳輸過程中未出現(xiàn)錯誤。編碼實際上是將位待校驗數(shù)轉(zhuǎn)變成能夠被除盡的位二進制多項式。因此解碼過程亦可通過對進行取余運算實現(xiàn),即:。若余式,則判定數(shù)據(jù)傳輸過程中產(chǎn)生錯誤;反之,則表明數(shù)據(jù)傳輸正常。目前,大多數(shù)解碼電路按照此運算方式進行數(shù)據(jù)數(shù)據(jù)傳輸過程中錯誤的校驗。常用的校驗算法有兩種:查表法,計算法。本系統(tǒng)設計的校驗算法采用第一種方法,具體程序設計如下: ' CRC校驗算法。'crc = (crcTable(crc And &HFF00) / 256) And &HFF) Xor (

5、DataBuf(i) And &HFF) 'Xor(crc And &HFF) * 256) And &HFF00)Private Function CRC16(ByRef DataBuf() As Byte, ByVal LenData As Integer) As Long Dim J, K, L, M, N, O As Long Dim CRC_CHECK As Long Dim i As Integer For i = 0 To GET_DATA_LEN(DATA_REC) - 1 J = (crc And &HFF00) / 256 K = i And &HFF L = DataBuf(i) And &HFF M = J Xor K N = crc_Table(L) O = (crc And &HFF) * 256 CRC_CHECK = M Xor N Next i If CRC16 = CRC_CHECK Then Call DATA_SAVE 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論