版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,1,2.8 CRC檢錯(cuò)碼的軟件實(shí)現(xiàn),CRC校驗(yàn)碼的生成 生成多項(xiàng)式取為CRC-CCITT: G(x)=x16+x12+x5+1 按位計(jì)算算法 本位CRC碼等于上一位CRC碼乘以2后除以多項(xiàng)式,所得的余數(shù)再加上本位值除以多項(xiàng)式所得的余數(shù) 多項(xiàng)式:0 x1021 程序簡(jiǎn)單、費(fèi)時(shí) CRC計(jì)算函數(shù) ptr: 指向發(fā)送緩沖區(qū)的首字節(jié) len: 總字節(jié)數(shù),工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,2,2.8.1 按位計(jì)算CRC的算法,1. 令16位的CRC寄存器初值為0; 2. 取數(shù)據(jù)包的第1個(gè)8位字節(jié)(高字節(jié)); 3. 取當(dāng)前字節(jié)的最高位; 4. 若CRC寄存器的最高位為1,則CRC寄存器的內(nèi)容左移1
2、位,最低位補(bǔ)0,然后與多項(xiàng)式值0 x1021異或,得到新的CRC值; 若CRC寄存器的最高位為0,則CRC寄存器的內(nèi)容左移1位,得到新的CRC值; 5. 若當(dāng)前字節(jié)的當(dāng)前位為1,則CRC寄存器的內(nèi)容與多項(xiàng)式值0 x1021異或,得到新的CRC值; 6. 當(dāng)前字節(jié)左移1位(即:取當(dāng)前字節(jié)的下1位); 7. 重復(fù)步驟4到6,直至當(dāng)前字節(jié)的8位處理完; 8. 取數(shù)據(jù)包的下一字節(jié); 9. 重復(fù)步驟3到8,直至所有字節(jié)被處理完;,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,3,2.8.1 按位計(jì)算CRC,unsigned int cal_crc(unsigned char *ptr, unsigned char len) u
3、nsigned char i; unsigned int crc=0; while(len-!=0) for(i=0 x80; i!=0; i/=2) if(crc,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,4,2.8.1 按位計(jì)算CRC,主程序 #include #define NUM 3 unsigned int cal_crc(unsigned char *ptr, unsigned char len); void main() unsigned char datNUM=0 x00,0 x01,0 x02; unsigned char *p1; unsigned int crc=0; p1=dat; crc
4、=cal_crc(p1,NUM); printf(n The crc is %x ,crc); unsigned int cal_crc(unsigned char *ptr, unsigned char len)略,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,5,2.8.2 按字節(jié)計(jì)算CRC,算法 本字節(jié)CRC碼等于(上一字節(jié)CRC碼的低8位左移8位)加上(上一字節(jié)CRC碼的高8位與本字節(jié)相加后求出CRC碼) 查表 按生成多項(xiàng)式,把8位二進(jìn)制序列數(shù)(0255)的CRC全部計(jì)算出來,存為一個(gè)數(shù)據(jù)表 提高速度、占用內(nèi)存多,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,6,2.8.2 按字節(jié)計(jì)算CRC,算法 1. 令16位的CRC寄存器初值為
5、0; 2. 取數(shù)據(jù)包的第1個(gè)8位字節(jié)(高字節(jié)); 3. CRC的低8位乘以256,暫存為CRC1; 4. CRC寄存器的高8位與當(dāng)前字節(jié)相加,查表求CRC碼,暫存為CRC2; 5. CRC1和CRC2的數(shù)據(jù)相加,存入CRC寄存器; 6. 取數(shù)據(jù)包的下一字節(jié); 7. 重復(fù)步驟3到6,直至所有字節(jié)被處理完。,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,7,2.8.2 按字節(jié)計(jì)算CRC,unsigned int cal_crc (unsigned char *ptr, unsigned char len) unsigned int crc;unsigned char da;unsigned int crc-ta256=0
6、 x0000, 0 x1021, 0 x2042,略; /* CRC余式表 */crc=0; while(len-!=0) da=(unsigned char) (crc/256); /* 暫存CRC的高8位 */ crc=8; /* CRC的低8位乘以 256*/ crc=crc_tada*ptr; /* 高8位和當(dāng)前字節(jié)相加后再查表求CRC ,再加上以前的CRC */ ptr+; return(crc); ,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,8,2.8.2 按字節(jié)計(jì)算CRC,按字節(jié)計(jì)算的CRC余式表: unsigned int crc_ta256= 0 x0000, 0 x1021, 0 x2042,
7、 0 x3063, 0 x4084, 0 x50a5, 0 x60c6, 0 x70e7, 0 x8108, 0 x9129, 0 xa14a, 0 xb16b, 0 xc18c, 0 xd1ad, 0 xe1ce, 0 xf1ef, 0 x1231, 0 x0210, 0 x3273, 0 x2252, 0 x52b5, 0 x4294, 0 x72f7, 0 x62d6, 0 x9339, 0 x8318, 0 xb37b, 0 xa35a, 0 xd3bd, 0 xc39c, 0 xf3ff, 0 xe3de, 0 x2462, 0 x3443, 0 x0420, 0 x1401, 0
8、x64e6, 0 x74c7, 0 x44a4, 0 x5485, 0 xa56a, 0 xb54b, 0 x8528, 0 x9509, 0 xe5ee, 0 xf5cf, 0 xc5ac, 0 xd58d, 0 x3653, 0 x2672, 0 x1611, 0 x0630, 0 x76d7, 0 x66f6, 0 x5695, 0 x46b4, 0 xb75b, 0 xa77a, 0 x9719, 0 x8738, 0 xf7df, 0 xe7fe, 0 xd79d, 0 xc7bc, 0 x48c4, 0 x58e5, 0 x6886, 0 x78a7, 0 x0840, 0 x18
9、61, 0 x2802, 0 x3823, 0 xc9cc, 0 xd9ed, 0 xe98e, 0 xf9af, 0 x8948, 0 x9969, 0 xa90a, 0 xb92b,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,9,2.8.2 按字節(jié)計(jì)算CRC,0 x5af5, 0 x4ad4, 0 x7ab7, 0 x6a96, 0 x1a71, 0 x0a50, 0 x3a33, 0 x2a12, 0 xdbfd, 0 xcbdc, 0 xfbbf, 0 xeb9e, 0 x9b79, 0 x8b58, 0 xbb3b, 0 xab1a, 0 x6ca6, 0 x7c87, 0 x4ce4, 0 x5cc5,
10、 0 x2c22, 0 x3c03, 0 x0c60, 0 x1c41, 0 xedae, 0 xfd8f, 0 xcdec, 0 xddcd, 0 xad2a, 0 xbd0b, 0 x8d68, 0 x9d49, 0 x7e97, 0 x6eb6, 0 x5ed5, 0 x4ef4, 0 x3e13, 0 x2e32, 0 x1e51, 0 x0e70, 0 xff9f, 0 xefbe, 0 xdfdd, 0 xcffc, 0 xbf1b, 0 xaf3a, 0 x9f59, 0 x8f78, 0 x9188, 0 x81a9, 0 xb1ca, 0 xa1eb, 0 xd10c, 0
11、xc12d, 0 xf14e, 0 xe16f, 0 x1080, 0 x00a1, 0 x30c2, 0 x20e3, 0 x5004, 0 x4025, 0 x7046, 0 x6067, 0 x83b9, 0 x9398, 0 xa3fb, 0 xb3da, 0 xc33d, 0 xd31c, 0 xe37f, 0 xf35e, 0 x02b1, 0 x1290, 0 x22f3, 0 x32d2, 0 x4235, 0 x5214, 0 x6277, 0 x7256, 0 xb5ea, 0 xa5cb, 0 x95a8, 0 x8589, 0 xf56e, 0 xe54f, 0 xd5
12、2c, 0 xc50d,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,10,2.8.2 按字節(jié)計(jì)算CRC,0 x34e2, 0 x24c3, 0 x14a0, 0 x0481, 0 x7466, 0 x6447, 0 x5424, 0 x4405, 0 xa7db, 0 xb7fa, 0 x8799, 0 x97b8, 0 xe75f, 0 xf77e, 0 xc71d, 0 xd73c, 0 x26d3, 0 x36f2, 0 x0691, 0 x16b0, 0 x6657, 0 x7676, 0 x4615, 0 x5634, 0 xd94c, 0 xc96d, 0 xf90e, 0 xe92f, 0 x99c8
13、, 0 x89e9, 0 xb98a, 0 xa9ab, 0 x5844, 0 x4865, 0 x7806, 0 x6827, 0 x18c0, 0 x08e1, 0 x3882, 0 x28a3, 0 xcb7d, 0 xdb5c, 0 xeb3f, 0 xfb1e, 0 x8bf9, 0 x9bd8, 0 xabbb, 0 xbb9a, 0 x4a75, 0 x5a54, 0 x6a37, 0 x7a16, 0 x0af1, 0 x1ad0, 0 x2ab3, 0 x3a92, 0 xfd2e, 0 xed0f, 0 xdd6c, 0 xcd4d, 0 xbdaa, 0 xad8b, 0
14、 x9de8, 0 x8dc9, 0 x7c26, 0 x6c07, 0 x5c64, 0 x4c45, 0 x3ca2, 0 x2c83, 0 x1ce0, 0 x0cc1, 0 xef1f, 0 xff3e, 0 xcf5d, 0 xdf7c, 0 xaf9b, 0 xbfba, 0 x8fd9, 0 x9ff8, 0 x6e17, 0 x7e36, 0 x4e55, 0 x5e74, 0 x2e93, 0 x3eb2, 0 x0ed1, 0 x1ef0 ; /* CRC余式表 */,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,11,2.8.3 按半字節(jié)計(jì)算CRC,算法 本半字節(jié)的CRC碼等于(上一CRC碼的低
15、12位左移4位),加上(上一CRC的高4位和本半字節(jié)相加后求出CRC碼) 查表 把4位二進(jìn)制序列數(shù)(015)的CRC全算出,存為一個(gè)數(shù)據(jù)表 在速度和內(nèi)存空間取得均衡,工業(yè)計(jì)算機(jī)網(wǎng)絡(luò)與通信,12,2.8.3 按半字節(jié)計(jì)算CRC,unsigned int cal_crc(unsigned char *ptr, unsigned char len) unsigned int crc=0; unsigned char da;unsigned int crc_ta16=0 x0000,0 x1021,0 x2042,略 while ( len-!=0 ) da=(unsigned char)(crc/256)/16; /* 暫存CRC的高四位 */ crc=4; /* CRC左移4位,相當(dāng)于取CRC的低12位)*/ crc=crc_tada(*ptr/16); /* CRC的高4位和本字節(jié)的高半字節(jié)相加后,查表計(jì)算CRC,然后加上上一次CRC的余數(shù) */ da=(unsigned char)(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)技術(shù)課件教學(xué)課件
- 2024年度設(shè)備供應(yīng)與安裝合同
- 2024年度國際搬家集裝箱租賃合同
- 2024年城市軌道交通系統(tǒng)集成與維護(hù)合同
- 2024光通信技術(shù)研發(fā)與生產(chǎn)合同
- 2024年度區(qū)塊鏈技術(shù)應(yīng)用研發(fā)合同
- 2024年度廢舊物資回收利用合同
- 2024年度三人合伙知識(shí)產(chǎn)權(quán)協(xié)議
- 2024年床上用品批量訂購合同
- 2024年度智能客服系統(tǒng)技術(shù)服務(wù)合同
- WHT 78.4-2022 演出安全 第4部分:舞臺(tái)音響安全-PDF解密
- 《勿忘國恥.強(qiáng)國有我》國家公祭日主題班會(huì)課件
- UML課程設(shè)計(jì)-網(wǎng)上購物系統(tǒng)
- 網(wǎng)絡(luò)食品安全監(jiān)管
- 圍手術(shù)期管理規(guī)范
- 2022版義務(wù)教育(道德與法治)課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 腰肌勞損知識(shí)課件
- 2024年公安機(jī)關(guān)人民警察高級(jí)執(zhí)法資格考試試卷含答案(案例分析題 論述題)
- Unit8WXYZ(課件)牛津自然拼讀Level1
- (高清版)DZT 0341-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 建筑用石料類
- 幼兒園教師教育教學(xué)能力
評(píng)論
0/150
提交評(píng)論