版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工业计算机网络与通信,1,2.8 CRC检错码的软件实现,CRC校验码的生成 生成多项式取为CRC-CCITT: G(x)=x16+x12+x5+1 按位计算算法 本位CRC码等于上一位CRC码乘以2后除以多项式,所得的余数再加上本位值除以多项式所得的余数 多项式:0 x1021 程序简单、费时 CRC计算函数 ptr: 指向发送缓冲区的首字节 len: 总字节数,工业计算机网络与通信,2,2.8.1 按位计算CRC的算法,1. 令16位的CRC寄存器初值为0; 2. 取数据包的第1个8位字节(高字节); 3. 取当前字节的最高位; 4. 若CRC寄存器的最高位为1,则CRC寄存器的内容左移1
2、位,最低位补0,然后与多项式值0 x1021异或,得到新的CRC值; 若CRC寄存器的最高位为0,则CRC寄存器的内容左移1位,得到新的CRC值; 5. 若当前字节的当前位为1,则CRC寄存器的内容与多项式值0 x1021异或,得到新的CRC值; 6. 当前字节左移1位(即:取当前字节的下1位); 7. 重复步骤4到6,直至当前字节的8位处理完; 8. 取数据包的下一字节; 9. 重复步骤3到8,直至所有字节被处理完;,工业计算机网络与通信,3,2.8.1 按位计算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,工业计算机网络与通信,4,2.8.1 按位计算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)略,工业计算机网络与通信,5,2.8.2 按字节计算CRC,算法 本字节CRC码等于(上一字节CRC码的低8位左移8位)加上(上一字节CRC码的高8位与本字节相加后求出CRC码) 查表 按生成多项式,把8位二进制序列数(0255)的CRC全部计算出来,存为一个数据表 提高速度、占用内存多,工业计算机网络与通信,6,2.8.2 按字节计算CRC,算法 1. 令16位的CRC寄存器初值为
5、0; 2. 取数据包的第1个8位字节(高字节); 3. CRC的低8位乘以256,暂存为CRC1; 4. CRC寄存器的高8位与当前字节相加,查表求CRC码,暂存为CRC2; 5. CRC1和CRC2的数据相加,存入CRC寄存器; 6. 取数据包的下一字节; 7. 重复步骤3到6,直至所有字节被处理完。,工业计算机网络与通信,7,2.8.2 按字节计算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位和当前字节相加后再查表求CRC ,再加上以前的CRC */ ptr+; return(crc); ,工业计算机网络与通信,8,2.8.2 按字节计算CRC,按字节计算的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,工业计算机网络与通信,9,2.8.2 按字节计算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,工业计算机网络与通信,10,2.8.2 按字节计算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余式表 */,工业计算机网络与通信,11,2.8.3 按半字节计算CRC,算法 本半字节的CRC码等于(上一CRC码的低
15、12位左移4位),加上(上一CRC的高4位和本半字节相加后求出CRC码) 查表 把4位二进制序列数(015)的CRC全算出,存为一个数据表 在速度和内存空间取得均衡,工业计算机网络与通信,12,2.8.3 按半字节计算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位,相当于取CRC的低12位)*/ crc=crc_tada(*ptr/16); /* CRC的高4位和本字节的高半字节相加后,查表计算CRC,然后加上上一次CRC的余数 */ da=(unsigned char)(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年虚拟现实行业市场潜力与替代品挑战分析报告
- 2026年共享出行自动驾驶报告
- 2026年汽车行业智能座舱交互报告
- 2026年食品科技昆虫蛋白行业创新报告
- 2026年新能源汽车零部件创新技术报告
- 2026年人工智能行业报告:智能语音助手市场现状与未来趋势
- 2026年金融科技行业创新趋势与税收影响报告
- 2026年职业技能培训行业市场占有率研究报告
- 2026年新能源领域创新驱动产业分析报告
- 2026年超深井用高抗挤毁石油管钢行业建设报告及市场投资分析
- 新苏教版六上数学第4单元第3课《比的意义(3)》课件
- 智能体时代AI基础设施发展研究报告2026-中国电信
- 压力容器爆炸应急处置演练方案
- 吉林省前期物业服务合同9篇
- 老年人常见代谢性疾病的防控
- 成都兴城投资集团有限公司成都天府绿道生态农业科技有限公司2026年招聘农业项目管理等岗位考试模拟试题及答案解析
- 地下综合管廊质量通病和防治
- 幽门螺杆菌感染处理 2026 指南解读
- 第14课 丝绸之路的开通与经营西域 课件(任务驱动型教学)
- 长期照护师培训课程大纲
- SAE USCAR-21-2024 中文版(汽车端子压接性能规范 完整标准 + 拉力与剖面测试)
评论
0/150
提交评论