crc校驗原理分析

crc校驗原理分析

ID:45565001

大小:87.75 KB

頁數(shù):21頁

時間:2019-11-14

crc校驗原理分析_第1頁
crc校驗原理分析_第2頁
crc校驗原理分析_第3頁
crc校驗原理分析_第4頁
crc校驗原理分析_第5頁
資源描述:

《crc校驗原理分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、CRC校驗校驗原理:K循環(huán)校驗碼(CRC碼):是數(shù)據(jù)通信領(lǐng)域屮最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。2、生成CRC碼的基本原理:任意一個由二進(jìn)制位串組成的代碼都可以和一個系數(shù)僅為’(T和'1,取值的多項式一一對應(yīng)。例如:代碼1010111對應(yīng)的多項式為x6+x4+x2+x+l,而多項式為x5+x3+x2+x+l對應(yīng)的代碼lOllllo3、CRC碼集選擇的原則:若設(shè)碼字長度為N,信息字段為K位,校驗字段為R位(N二K+R),則對于CRC碼集中的任一碼字,存在且僅存在一個R次多項式g(x),使得V(x)=A(x)g(x)=xRm(x)+r(x);其中:m(x

2、)為K次信息多項式,r(x)為R-1次校驗多項式,g(x)稱為生成多項式:g(x)=go+gix+g2x2+...+g(R-i>x(R_1>+gRxR發(fā)送方通過指定的g(x)產(chǎn)生CRC碼字,接收方則通過該g(x)來驗證收到的CRC碼字。4、CRC校驗碼軟件生成方法:借助于多項式除法,其余數(shù)為校驗字段。例如:信息字段代碼為:1011001;對應(yīng)m(x)=x6+x4+x3+l假設(shè)生成多項式為:g(x)=xW+l;則對應(yīng)g(x)的代碼為:11001xm(x)=xIO+xs+x7+x4對應(yīng)的代碼記為:10110010000;發(fā)送方:發(fā)岀的傳輸字段為:10110011010信息字段校驗字段接收方

3、:使用相同的生成碼進(jìn)行校驗:接收到的字段/生成碼(二進(jìn)制除法)如果能夠除盡,則止確,CRC校驗源碼分析這兩天做項目,需要用到CRC校驗。以前沒搞過這東東,以為挺簡單的。結(jié)果看看別人提供的匯編源程序,屆然看不懂。花了兩天時間研究了一下CRC校驗,希槊我寫的這點東西能夠幫助和我有同樣困惑的朋友節(jié)省點時間。先是在網(wǎng)上下了一堆亂七八遭的資料下來,感覺都是一個模樣,全都是從CRC的數(shù)學(xué)原理開始,一長串的表達(dá)式看的我頭暈。第一次接觸還真難以理解。這些東西不想在這里講,隨便找一下都是一大把。我想根據(jù)源代碼來分析會比較好懂一些。費了老大功夫,才搞清楚CRC根據(jù)”權(quán)”(即多項表達(dá)式)的不同而相應(yīng)的源代碼

4、也有稍許不同。以下是各種常用的權(quán)。CRC8=X8+X5+X4+1CROCQTT=X16+X12+X5+1CRC16=X16+X15+X5+1CRC12=X12+X11+X3+X2+1CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1以下的源程序全部以COTT為例。其實本質(zhì)都是一樣,搞明白一種,其他的都是小菜。圖1,圖2說明了CRC校驗中CRC值是如何計算出來的,體現(xiàn)的多項式正是X16+X12+X5+1。SerialData即是需要校驗的數(shù)據(jù)。從把數(shù)據(jù)移位開始計算,將數(shù)據(jù)位(從最低的數(shù)據(jù)位開始)逐位移入反向耦合移位寄存器(這

5、個名詞我也不懂,覺得蠻酷的,就這樣寫了,嘿)。當(dāng)所有數(shù)據(jù)位都這樣操作后,計算結(jié)束。此時,16位移位寄存器中的內(nèi)容就是CRC碼。LSB圖1生成CRC?CC1TT的移位寄存器的作用原理

6、cla~

7、cLk~rcii

8、cik1

9、cik~nnk■—

10、dk~

11、cii~~「d~~i

12、』"-k平bgudohK)h_cpjkjnbgk.dop_dckKfl圧JL圖2用于計算CRC_CC1T1、的移位寄心器的電路配置圖中進(jìn)行XOR運算的位與多項式的表達(dá)相對應(yīng)。X5代表Bit5,X12代表Bit12,1自然是代表BitO,X16比較特別,是指移位寄存器移出的數(shù)據(jù),即圖中的DATAOUT.可以這樣理解,與數(shù)據(jù)

13、位做XOR運算的是上次CRC值的Bit15。根據(jù)以上說明,可以依葫蘆畫瓢的寫出以下程序。(程序都是在keilC7.10下調(diào)試的)typedefunsignedcharuchar;typedefunsignedintuint;codeucharcrcbuff[]={0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3};uintcrc;//CRC碼voidmain(void){uchar*ptr;crc=0;//CRC初值ptr=crcbuff;//指向第一個Byte數(shù)據(jù)crc=crc16l(ptr,8);while(1);uintcrc16l(uchar*pt

14、r,ucharlen)//ptr為數(shù)據(jù)指針,len為數(shù)據(jù)長度{uchari;while(len-){for(i=0x80;i!=0;i>>=1){if((crc&0x8000)!=0){crc<<=1;crcA=0x1021;}1-1elsecrc<<=1:1-2if((*ptr&i)!=0)crcA=0x1021;1-3}ptr++;}return(crc);}執(zhí)行結(jié)果crc=OxdbcO;程序1-1,1-2,1-3可以理解成移位前crc的B

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。