crc校验最终个人总结.docxVIP

  • 215
  • 0
  • 约2.69千字
  • 约 4页
  • 2021-07-26 发布于湖北
  • 举报
CRC校验最终个人总结 CRC校验最终个人总结 CRC校验最终个人总结:某二进制信息码(kn)的CRC校验需选 择一个合适的g(x)除数(校验因子)如:CRC-7为X+X+173宽度为7,此校验因子根据设计的需求来选择(如:CRC-32/CRC-16)。注意,在计算CRC前必须将二进制信息码左移7位(kn*2),这里的7来源于所选择的检验因子的宽度。然后,再与除数进行模2运算(从kn的最高位开始和除数进行异或运算)。最后所剩的宽度为7的7位余数就是最终CRC计算结果(当计算到只剩7位余数时就不要再计算了)。之后就可以将经过CRC校验后的信息码+CRC一起发送给对方,对方收到添有CRC的信息码后,将这串代码再和校验因子进行异或运算看结果是否为0。例如:kn0x40g(x)=X+X+1度为7 1:移移7位=100000000000002:异或运算 10000000000000验因子10010000001100100最终CRC计算结果3:传输发送 10000001100100 信息码CRC结果4:接收检验 10000001100100验因子1000100100验因子0 73 扩展阅读:单片机crc校验实验报告 单片机课程总实验 实现CRC校验 一、实验目的 ⒈通过学习CRC原理,验证,检错,掌握其工作原理;⒉编写CRC编码程序; ⒊总结实验过程,编写提交实验报告:方案、编程、调试、结果、分析、结论。二、实验要求 用单片机实现CRC校验码(10比特数据或任意数据长度、生成多项式用G(x)=x5+x4+x2+1),校验码显示在单片机实验系统数码管上。二、实验器材 1、装有KeilC51开发工具的PC机一台 2、TD-PIT/TD-PIT-B实验装置一套 三、实验原理 1.设置CRC寄存器,并给其赋初始值。 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。 3.CRC寄存器向右移一位,最高位补零,移出并检查最低位。 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。6.重复第2至第5步直到所有数据全部处理完成。 7.最终CRC寄存器的内容即为CRC值。常用的CRC循环冗余校验标准多项式如下:CRC(12位)=X12+X11+X3+X2+X+1CRC(16位)=X16+X15+X2+1CRC(CCITT)=X16+X12+X5+1CRC(32位)=X32+X26+X23+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1以CRC(16位)多项式为例,其对应校验二进制位列为11000000000000101本次实验以10比特为例。显示到六位数码管中。 其实验连接图如下图所示。四、实验步骤 1.打开KeilC51开发工具,新建开发工具,并保存至相应路径。2.新建文件,编写代码。 3.按照实验连线图在实验箱上连线。 4.编译运行代码勿误后,打开实验箱,点击调试,运行。 五、实验结果 经过调试程序,在实验箱数码管上显示二进制数001110. 六、实验源代码#includeAbsacc.h #defineC8255_AXBYTE[0x7F00]//8255端口地址定义#defineC8255_BXBYTE[0x7F01]#defineC8255_CXBYTE[0x7F02]#defineC8255_CONXBYTE[0x7F03]//数码管显示编号 unsignedchara[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsignedcharb[]={0x00,0x00,0x00,0x00,0x00,0x00};longMD;longGD; voiddelay(unsignedinttime){unsignedinti;for(i=0;i C8255_B=a[b[i]];//查表输出显示C8255_A=j;delay(0x100);j=(j1)|(j=1;MD=tmp; tmp=GD;//数GD有多少位tmp用于暂存GDfor(count_GD=0;GD!=0;count_GD++)GD=1;GD=tmp; //构造CRC码序列 for(tmp=1;tmp=0;count--) {if(tst0==(tst0MD))//MD与最高位为1当除不尽时最高位为0, //余数比除数少一位 {MD^=GD;//异

文档评论(0)

1亿VIP精品文档

相关文档