1 / 24
文档名称:

crc校验原理.doc

格式:doc   大小:133KB   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

crc校验原理.doc

上传人:wzt520728 2019/4/10 文件大小:133 KB

下载得到文件列表

crc校验原理.doc

文档介绍

文档介绍:1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。3、CRC码集选择的原则:若设码字长度为N,信息字段为K位,校验字段为R位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得V(x)=A(x)g(x)=xRm(x)+r(x);其中:   m(x)为K次信息多项式,r(x)为R-1次校验多项式,        g(x)称为生成多项式:g(x)=g0+g1x+g2x2+...+g(R-1)x(R-1)+gRxR发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。4、CRC校验码软件生成方法:   借助于多项式除法,其余数为校验字段。例如:信息字段代码为:1011001;对应m(x)=x6+x4+x3+1      假设生成多项式为:g(x)=x4+x3+1;则对应g(x)的代码为:11001     x4m(x)=x10+x8+x7+x4对应的代码记为:**********;采用多项式除法: 得余数为:1010    (即校验字段为:1010)发送方:发出的传输字段为: **********                         信息字段      校验字段接收方:使用相同的生成码进行校验:接收到的字段/生成码(二进制除法)                 如果能够除尽,则正确,CRC校验源码分析这两天做项目,需要用到CRC校验。以前没搞过这东东,以为挺简单的。结果看看别人提供的汇编源程序,居然看不懂。花了两天时间研究了一下CRC校验,希望我写的这点东西能够帮助和我有同样困惑的朋友节省点时间。  先是在网上下了一堆乱七八遭的资料下来,感觉都是一个模样,全都是从CRC的数学原理开始,一长串的表达式看的我头晕。第一次接触还真难以理解。这些东西不想在这里讲,随便找一下都是一大把。我想根据源代码来分析会比较好懂一些。   费了老大功夫,才搞清楚CRC根据”权”(即多项表达式)的不同而相应的源代码也有稍许不同。以下是各种常用的权。 CRC8=X8+X5+X4+1 ITT=X16+X12+X5+1 CRC16=X16+X15+X5+1           CRC12=X12+X11+X3+X2+1 CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1     ITT为例。其实本质都是一样,搞明白一种,其他的都是小菜。 图1,图2说明了CRC校验中CRC值是如何计算出来的,体现的多项式正是X16+X12+X5+1。SerialData即是需要校验的数据。从把数据移位开始计算,将数据位(从最低的数据位开始)逐位移入反向耦合移位寄存器(这个名词我也不懂,觉得蛮酷的,就这样写了,嘿)。当所有数据位都这样操作后,计算结束。此时,16位移位寄存器中的内容就是CRC码。  图中进行XOR运算的位与多项式的表达相对应。X5代表Bit5,X12代表Bit12,1自然是代表Bit0,X16比较特别,是指移位寄存器移出的数据,即图中的DATAOUT。可以这样理解,与数据位做XOR运算的是上次CRC值的Bit15。根据以上说明,可以依葫芦画瓢的写出以下程序。() typedef   unsignedchar    uchar;typedef   unsignedint     uint; codeucharcrcbuff[]={0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3};uintcrc;                 //CRC码voidmain(void){ uchar*ptr; crc=0;               //CRC 初值 ptr=crcbuff;             // 指向第一个Byte数据 crc=crc16l(ptr,8);            while(1);} uintcrc16l(uchar*ptr,ucharlen)       //ptr为数据指针,len为数据长度{ uchari; while(len--) {     for(i=0x80;i!=0;i>>=1)   {       if((crc&0x8000)!=0){crc<<=1;crc^=0x1021;}       1-1           

最近更新

二零二五挖掘机个人租赁合同 9页

二零二五按揭中二手房买卖协议书 8页

西师大版一年级下册数学第六单元-认识钟表-测.. 8页

二零二五招聘销售人员合同 7页

苏教版五年级上册数学第四单元-小数加法和减法.. 7页

论述LNG低温贮罐在应用中故障问题及解决方法 2页

2023年自考劳动法试题及答案解析 9页

二零二五招商场地租赁合同 8页

2025年思想道德修养与法律基础课学习心得 29页

2025年实训周心得 10页

2023年认证审核员基础知识考试题目及参考答案.. 31页

二零二五拆迁居间合同范例 8页

二零二五担保贷款合同借款及担保合同 7页

二零二五担保合同范例优秀 8页

教科版二年级下册科学知识点期末测试卷-精品(.. 10页

教科版三年级下册科学知识点期末测试卷精品【.. 12页

教科版三年级下册科学知识点期末测试卷精品【.. 12页

2023年青海省下半年安全工程师安全生产抢险救.. 18页

二零二五担保与反担保合同 7页

二零二五抵款房屋买卖协议 9页

2025年实用的婚礼主持词 9页

二零二五抵押房屋买卖合同 9页

二零二五抵押借款合同范例协议 7页

二零二五抵押借款合同范例 8页

论我国农民工工伤保险费率制度的优化 2页

基于新课标视域下初中化学大单元教学的方法研.. 6页

图形金甲客户端使用说明书V2.3.14 5页

儿童血管性疾病诊疗策略 117页

2023年贵州遵义市播州区人民医院招考聘用46人.. 30页

江苏市政道路电力管线工程监理细则 11页