下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
循環(huán)冗余碼校驗(yàn)原理循環(huán)冗余碼校驗(yàn)英文名稱(chēng)為CyclicalRedundancyCheck,簡(jiǎn)稱(chēng)CRC。它是利用除法及余數(shù)的原理來(lái)作錯(cuò)誤偵測(cè)(ErrorDetecting)的。他將要發(fā)送的數(shù)據(jù)比特序列當(dāng)作一個(gè)多項(xiàng)式f(x)的系數(shù),發(fā)送時(shí)用雙方預(yù)先約定的生成多項(xiàng)式G(x)去除,求得一個(gè)余數(shù)多項(xiàng)式,將余數(shù)多項(xiàng)式加到數(shù)據(jù)多項(xiàng)式之后發(fā)送到接收端,接收端同樣用G(x)去除接收到的數(shù)據(jù),進(jìn)行計(jì)算,然后把計(jì)算結(jié)果和實(shí)際接收到的余數(shù)多項(xiàng)式數(shù)據(jù)進(jìn)行比較,相同的話(huà)表示傳輸正確。CRC校驗(yàn)檢錯(cuò)能力強(qiáng),容易實(shí)現(xiàn),是目前應(yīng)用最廣的檢錯(cuò)碼編碼方式之一。在國(guó)際標(biāo)準(zhǔn)中,根據(jù)生成多項(xiàng)式G(x)的不同,CRC又可分為以下幾種標(biāo)準(zhǔn):CRC-12碼:G(x)=X12+Xll+X3+X2+X+lCRC-16碼:G(x)=X16+X15+X2+1CRC-CCITT碼:G(x)=X16+X12+X5+1CRC-32碼:G(x)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+X+1CRC-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ō)明其生成過(guò)程。CRC-16碼由兩個(gè)字節(jié)構(gòu)成,在開(kāi)始時(shí)CRC寄存器的每一位都預(yù)置為1,然后把CRC寄存器與8-bit的數(shù)據(jù)進(jìn)行異或,之后對(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值。下面為CRC的計(jì)算過(guò)程:1.設(shè)置CRC寄存器,并給其賦值FFFF(hex)。2?將數(shù)據(jù)的第一個(gè)8-bit字符與16位CRC寄存器的低8位進(jìn)行異或,并把結(jié)果存入CRC寄存器。CRC寄存器向右移一位,MSB補(bǔ)零,移出并檢查L(zhǎng)SB。如果LSB為0,重復(fù)第三步;若LSB為1,CRC寄存器與多項(xiàng)式碼相異或。重復(fù)第3與第4步直到8次移位全部完成。此時(shí)一個(gè)8-bit數(shù)據(jù)處理完畢。重復(fù)第2至第5步直到所有數(shù)據(jù)全部處理完成。最終CRC寄存器的內(nèi)容即為CRC值。二、循環(huán)冗余碼校驗(yàn)程序的編寫(xiě)明白了CRC校驗(yàn)碼的產(chǎn)生過(guò)程,編寫(xiě)起程序來(lái)就非常容易了。由于VisualBasic的廣泛普及以及其在數(shù)據(jù)通訊中的重要地位,下面就以VB語(yǔ)言來(lái)編寫(xiě)CRC的生成程序,其它語(yǔ)言只需稍做修改即可。編寫(xiě)CRC校驗(yàn)程序有兩種辦法:一種為計(jì)算法,一種為查表法。通常使用查表法,尤其在VB程序中,可以大大降低CPU的運(yùn)算時(shí)間。下面對(duì)兩種方法分別討論。計(jì)算法計(jì)算法就是依據(jù)CRC校驗(yàn)碼的產(chǎn)生原理來(lái)設(shè)計(jì)程序。其優(yōu)點(diǎn)是模塊代碼少,修改靈活,可移植性好。其缺點(diǎn)為計(jì)算量大。為了便于理解,這里假定了三位數(shù)據(jù),而多項(xiàng)式碼為AOOl(hex)。在窗體上放置一命令按鈕Commandl,并添加如下代碼:PrivateSubCommand1_Click()DimCRC()AsByteDimd()AsByte'待傳輸數(shù)據(jù)ReDimd(2)AsByted(0)=123d(1)=112d(2)=135CRC=CRC16(d)'調(diào)用CRC16計(jì)算函數(shù)'CRC(O)為高位'CRC(1)為低位EndSub注意:在數(shù)據(jù)傳輸時(shí)CRC的低位可能在前,而咼位在后。FunctionCRC16(data()AsByte)AsStringDimCRC16LoAsByte,CRC16HiAsByte'CRC寄存器DimCLAsByte,CHAsByte'多項(xiàng)式碼&HA001DimSaveHiAsByte,SaveLoAsByteDimiAsIntegerDimFlagAsIntegerCRC16Lo=&HFFCRC16Hi=&HFFCL=&H1CH=&HA0Fori=0ToUBound(data)CRC16Lo=CRC16LoXordata(i)'每一個(gè)數(shù)據(jù)與CRC寄存器進(jìn)行異或ForFlag=0To7SaveHi=CRC16HiSaveLo=CRC16LoCRC16Hi=CRC16Hi\2'高位右移一位CRC16Lo=CRC16Lo\2'低位右移一位If((SaveHiAnd&H1)=&H1)Then'如果高位字節(jié)最后一位為1CRC16Lo=CRC16LoOr&H80'則低位字節(jié)右移后前面補(bǔ)1EndIf'否則自動(dòng)補(bǔ)0If((SaveLoAnd&H1)=&H1)Then'如果LSB為1,則與多項(xiàng)式碼進(jìn)行異或CRC16Hi=CRC16HiXorCHCRC16Lo=CRC16LoXorCLEndIfNextFlagNextiDimReturnData(1)AsByteReturnData(O)=CRC16Hi'CRC高位ReturnData(l)=CRC16Lo'CRC低位CRC16=Retur
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)分析師招聘面試題集
- 深度解析(2026)《GBT 19183.1-2024電氣和電子設(shè)備機(jī)械結(jié)構(gòu) 戶(hù)外機(jī)殼 第1部分:設(shè)計(jì)導(dǎo)則》
- 葵花油項(xiàng)目可行性研究報(bào)告(立項(xiàng)備案申請(qǐng))
- 特需醫(yī)療:個(gè)性化需求與價(jià)值滿(mǎn)足策略
- 深度解析(2026)《GBT 18992.1-2003冷熱水用交聯(lián)聚乙烯(PE-X)管道系統(tǒng) 第1部分總則》
- 儀器、儀表項(xiàng)目可行性分析報(bào)告范文
- 功率模塊項(xiàng)目可行性分析報(bào)告范文(總投資10000萬(wàn)元)
- 深度解析(2026)《GBT 18571-2001小艇 舷外機(jī)便攜式燃油系統(tǒng)》(2026年)深度解析
- 新媒體數(shù)據(jù)分析報(bào)告常見(jiàn)問(wèn)題解答
- 建筑設(shè)計(jì)師面試考核要點(diǎn)解析
- 貴州大學(xué)開(kāi)題報(bào)告
- JCT640-2010 頂進(jìn)施工法用鋼筋混凝土排水管
- 【社區(qū)智慧養(yǎng)老模式研究國(guó)內(nèi)外文獻(xiàn)綜述4800字】
- 扁平疣的課件
- 教學(xué)查房課件-強(qiáng)直性脊柱炎
- 傳染病報(bào)告卡
- 句法成分課件(共18張)統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 2023版中國(guó)近現(xiàn)代史綱要課件:07第七專(zhuān)題 星星之火可以燎原
- 通知書(shū)產(chǎn)品升級(jí)通知怎么寫(xiě)
- 氣管插管術(shù) 氣管插管術(shù)
- 大學(xué)《實(shí)驗(yàn)診斷學(xué)》實(shí)驗(yàn)八:病例分析培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論