当前位置:文档之家› CRC8校验分析(修正版)

CRC8校验分析(修正版)

CRC8校验分析(修正版)
CRC8校验分析(修正版)

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。(网上流行的这一篇文章,前后两种算法得出来的CRC校验码并不一样,经过多次比对,发现查表法算出来的是正确的.一般性算法却不对,最后总结出来的是每一字节的被除数要反过来读取,算完后余数[即CRC码]也要反过来读取才对,不知何故,如果你懂,请发博文告诉大家.)

CRC校验可以简单地描述为:例如我们要发送一些数据(信息字段),为了避免一些干扰以及在接收端的对读取的数据进行判断是否接受的是真实的数据,这时我们就要加上校验数据(即CRC校验码),来判断接收的数据是否正确。在发送端,根据要传送的k位二进制码序列,以一定的规则(CRC校验有不同的规则。这个规则,在差错控制理论中称为“生成多项式”。)产生一个校验用的r位校验码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共

k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则(即与发送时生成CRC校验码相同的规则)进行检验,校验采用计算机的模二除法,即除数和被除数(即生成多项式)做异或运算,进行异或运算时除数和被除数最高位对齐,进行按位异或运算,若最终的数据能被除尽,则传输正确;否则,传输错误。

CRC8即最终生成的CRC校验码为1字节,其生成多项式,生成多项式为g(x)=x8+x5+x4+1,相当于g(x)=1·x8+0·x7+0·x6+1·x5+1·x4+0·x3+0·x2+0·x1+1·x0,即对应的二进制数为100110001。

CRC8校验算法:

1.CRC8校验的一般性算法:

例如:信息字段代码为: 0X01 0X02 ————对应m(x)=x8+x

(00000001) (00000010)

反过来读取,即为10000000 01000000

生成多项式为:g(x)=x8+x5+x4+1 ————对应g(x)的二进制代码为:100110001

现在我们将要对2字节数据0x0102生成CRC8校验码,并最终将生成的1字节CRC校验码跟在0x0102的后面,即0x01 02 ##,(##即8为CRC码),最终生成的3字节数据就是经CRC8校验生成的数据。

先计算x8m(x)=x16+x9,对应的2进制数为:10000000 01000000 00000000 。可以看到这样运算所得到的结果其实就是将信息字段代码的数左移8位。因为最终要将生成的8位CRC8校验码附在信息字段的后面,所以要将信息字段的数左移8位。最后用x8m(x)得到的二进制数对生成多项式g(x)进行模二运算,最终的余数(其二进制数的位数一定比生成多项式g(x)的位数小)就是所要的CRC8校验码。

10000000 01000000 00000000

^10011000 1

---------------------------

11000 11000000 00000000

^10011 0001

---------------------------

1011 11010000 00000000

^1001 10001

---------------------------

10 01011000 00000000

^10 0110001

---------------------------

111010 00000000

^100110 001

---------------------------

11100 00100000

^10011 0001

---------------------------

1111 00110000

^1001 10001

---------------------------

110 10111000

^100 110001

---------------------------

10 01111100

^10 0110001

---------------------------

00011110

对x8m(x)做模二运算取余得00011110,再反过来读取,即为01111000(0x78),这个8位的二进制数就是CRC8校验码。所以,经CRC8校验后研发送的数据就是0x010278。

2.CRC8校验在DS18B20中的应用:

以上分析的是常规的CRC8校验方法。在DS18B20中,有两处用到CRC。一是DS18B20的8字节的序列号,最后一字节是前面七个字节的CRC码,这是为了保证序列号的唯一性与正确性;另一个是在DS18B20内部9字节的高速温度存储器,其第9字节是前面8个字节的CRC 校验码,这是为了温度数据传输的正确性。而在DS18B20中生成CRC码所用到的方法不同于常规生成算法,它采用的是逆序CRC信息单元编码算法,该CRC的生成是由DS18B20中的多项式寄存器通过其中所包含的移位寄存器以及异或门对输入该多项式寄存器的每一位二进制数做一定的运算所得到的CRC码(可以查看Maxim官网上DS18B20的应用笔记Note27,专门介绍DS18B20CRC详细生成过程)。在此列举两种DS18B20CRC校验的C程序。

A.按位运算方法

[cpp]view plaincopyprint?

1. /********************************************************/

2. /*DS18B20的CRC8校验程序*/

3. /********************************************************/

4. u char calcrc_1byte(uchar abyte)

5. {

6. uchar i,crc_1byte;

7. crc_1byte=0; //设定crc_1byte初值为0

8. for(i = 0; i < 8; i++)

9. {

10. if(((crc_1byte^abyte)&0x01))

11. {

12. crc_1byte^=0x18;

13. crc_1byte>>=1;

14. crc_1byte|=0x80;

15. }

16. else

17. crc_1byte>>=1;

18. abyte>>=1;

19. }

20. return crc_1byte;

21. }

22. uchar calcrc_bytes(uchar *p,uchar len)

23. {

24. uchar crc=0;

25. while(len--) //len为总共要校验的字节数

26. {

27. crc=calcrc_1byte(crc^*p++);

28. }

29. return crc; //若最终返回的crc为0,则数据传输正确

30. }

0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16,

0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a,

0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8,

0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7,

0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35,

};

unsigned char CRC8_Table(unsigned char *p, char counter)

{

unsigned char crc8 = 0;

for( ; counter > 0; counter--)

{

crc8 = CRC8Table[crc8^*p]; //查表得到CRC码

p++;

}

return crc8;

}

DS18B20的两种校验CRC码的方法本质上都是一样的。查表法是对0x00~0xff这256个数依次生成与每一个数对应的CRC码所组合成的表,每次算一字节数据的CRC码不用经过calcrc_1byte(uchar abyte)这个函数对每个数据的最低位进行判断是1还是0,而直接通过查表的方式直接提取出 crc8^*p的CRC码,其运行效率相对按位运算方法更高,但是查表法所列的表却很占空间。

查表法算0X0102: crc8 = 0,先算0X01, crc8 ^0X01=0X01,查表,第0X01项,即为0X5E,

crc8=0X5E,crc8^0X02=0X5C,查表,第0X5C(92)项,正好是0X78.

CRC校验解读

三种常用的CRC16校验算法的C51程序的优化2009-10-10 09:34:17| 分类:技术知识| 标签:|字号大 CRC校验又称为循环冗余校验,是数据通讯中常用的一种校验算法。它可以有效的判别出数据在传输过程中是否发生了错误,从而保障了传输的数据可靠性。 CRC校验有多种方式,如:CRC8、CRC16、CRC32等等。在实际使用中,我们经常使用CRC16校验。CRC16校验也有多种,如:1005多项式、1021多项式(CRC-ITU)等。在这里我们不讨论CRC算法是怎样产生的,而是重点落在几种算法的C51程序的优化上。 计算CRC校验时,最常用的计算方式有三种:查表、计算、查表+计算。一般来说,查表法最快,但是需要较大的空间存放表格;计算法最慢,但是代码最简洁、占用空间最小;而在既要求速度,空间又比较紧张时常用查表+计算法。 下面我们分别就这三种方法进行讨论和比较。这里以使用广泛的51单片机为例,分别用查表、计算、查表+计算三种方法计算1021多项式(CRC-ITU)校验。原始程序都是在网上或杂志上经常能见到的,相信大家也比较熟悉了,甚至就是正在使用或已经使用过的程序。 编译平台采用Keil C51 7.0,使用小内存模式,编译器默认的优化方式。 常用的查表法程序如下,这是网上经常能够看到的程序范例。因为篇幅关系,省略了大部分表格的内容。 code unsigned int Crc1021Table[256] = { 0x0000, 0x1021, 0x2042, 0x3063,... 0x1ef0 }; unsigned int crc0(unsigned char *pData, unsigned char nLength) { unsigned int CRC16 = 0;

生产过程检验控制程序

生产过程检验控制程序 1 目的 规定和明确过程检验和试验控制的方法和依据,确保生产过程中的产品质量满足规定要求。 2范围 适用于工厂所有生产过程中产品的检验和试验活动以及相关部门和工作人员。 3 职责 3.1 质检部门 归口本程序,对生产过程检验和试验进行监督、检查、指导,组织对不合格品分析,提出改善建议和/或制定改进措施,监督、跟踪结果。阵列法 3.2 技术部门 制定过程的有关作业指导书,指导员工规范操作,参与不合格的分析和过程质量之改进工作。 3.3 生产部门 执行过程检验和试验控制程序的要求,参与对不合格的分析,提出改善建议和/或制定改进措施,有效主动实施改进措施。 4 工作流程与要求 4.1 过程检验和试验的策划 4.1.1人员安排和培训 质检部负责人应安排合适人员进行进料检验和试验,必要时应对相关人员予以培训、考核。 4.1.2检验和试验时间/频次的确定 所有的定单在开始生产时,质检员对生产的前1-2个产品都要进行首件检验和试验。 首件检验和试验通过后,依下列规定进行巡检和试验: ——装配工序 质检员人员对各工序随机进行巡回检查,每次抽取(5-20PCS)进行外观、

结构、功能、颜色等检查; ——特殊情况 如果是新产品刚投产或工艺不稳定或新员工上岗之前,检验和试验频次应高于上述一般要求。 4.2 检验和试验 4.2.1 首件检验和试验 当每个质检员开始生产或中途转换生产岗序后,质检员按照《生产过程巡查检验规范》和样板进行检验确认。 当首件产品确认不合格时,质检员应立即通知生产现场管理人员,同时按生产过程控制的有关程序处理,不合格品按《不合格品控制程序》处理。 4.2.2 巡检和试验 质检员按照《生产过程巡查检验规范》等文件对生产线进行检验和试验。 检验和试验完毕,检验员将检验和试验的具体内容填写于相应之《生产过程质量巡查记录表》中,并对检验和试验结果进行合格与不合格判定,交主管审核。 4.2.3 生产线全检 生产部门根据产品工艺安排QC检验工位,对所生产的产品进行全检,检查结果记录在《生产过程质量巡查记录表》内,当生产发生异常时,作业员及时通知生产现场的主管,按照生产过程控制的有关文件处理。 4.3 不合格品的处置 按照《不合格品控制程序》实施。 4.4 过程产品的交付 作业员将检查合格的过程产品流入下一工序。 材料的摆放和搬运应遵循产品防护控制管理规定。 5 表格记录 《生产过程质量巡查记录表》 《不合格品返工/返修通知单》

计算法简单实现crc校验

计算法简单实现crc校验 计算法简单实现crc校验 前一段时间做协议转换器的时间用到CRC-16校验,查了不少资料发现都不理想。查表法要建表太麻烦,而计算法觉得那些例子太罗嗦。最后只好自己写了,最后发现原来挺简单嘛:)两个子程序搞定。这里用的多项式为:CRC-16=X16+X12+X5+X0=2 +2 +2+2 =0x11021 因最高位一定为“1”,故略去计算只采用0x1021即可 CRC_Byte:计算单字节的CRC值 CRC_Data:计算一帧数据的CRC值 CRC_HighCRC_Low:存放单字节CRC值 CRC16_HighCRC16_Low:存放帧数据CRC值; ------------------------------------------------------------- ;Functi on:CRConebyte ;Input:CRCByte ;Output:CRC_HighCRC_Low ; ------------------------------------------------------------- CRC_Byte: clrfCRC_Low clrfCRC_High movlw09H movwfv_Loop1 movfCRCByte,w movwfCRC_High CRC: decfszv_Loop1;8次循环,每一位相应计算 gotoCRC10 gotoCRCend CRC10 bcfSTATUS,C rlfCRC_Low rlfCRC_High btfssSTATUS,C   ;gotoCRC;为0不需计算movlw10H;若多项式改变,这里作相应变化xorwfCRC_High,f movlw21H;若多项式改变,这里作相应变化 xorwfCRC_Low,f gotoCRC CRCend: nop nop return ; ------------------------------------------------------------- ;CRCone byteend ; ------------------------------------------------------------- ; ------------------------------------------------------------- ;Functi on:CRCdate ;Input:BufStart(A,B,C)(一帧数据的起始地址)v_Count(要做CRC的字节数);Output:CRC16_HighCRC16_Low(结果); ------------------------------------------------------------- CRC_Data: clrfCRC16_High clrfCRC16_Low CRC_Data10 movfINDF,w

crc校验码计算例题

crc校验码计算例题 1、若信息码字为11100011,生成多项式G(X)=X5+X4+X+1,则计算出的CRC 校验码为?x的最高次幂5则信息码(被除数)补五个0为:1110001100000 除数为110011 ------------10110110 --------------------- 110011/1110001100000 -------110011 ------------------ ---------101111 ---------110011 ------------------ ----------111000 ----------110011 ------------------ ------------101100 ------------110011 ------------------------ -------------111110 -------------110011 ------------------------- ---------------11010 2、信息码为101110101,生成多项式X4+X2+1,求冗余位??? 算法同上被除数补四个0 为:1011101010000 除数为:10101 答案:1100 7E 00 05 60 31 32 33 计算CRC16结果应该是:5B3E 方法如下: CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0),之后对CRC寄存器从

生产过程和过程检验控制程序

1.目的

本程序通过对影响产品质量的人、机器、物料、方法、环境等因素进行适当有效的控制,以确保生产过程中的产品品质,满足安全玻璃产品质量要求。 2.范围 适用于生产过程各工序及过程检验的控制。 3.职责 3.1 生产部主管需对本程序所属过程的正确有效的运行负责; 3.2 工序组长需对各工序产品质量控制负责,根据上级安排组织生产,完成生产任务; 3.3 质检部对产品检验的有效控制负责; 3.4经营部负责提供合格原材料; 4.运作程序 4.1过程策划 产品在投产前,生产部必须对生产过程所涉及的人员、物料、机器设备、制作工艺、环境等环节进行准备,以确保能具备产品投产的先决条件。 4.2过程控制 4.2.1业务员依据客户订单和合同评审结果负责准备生产所需图纸,填写《生产制作单》发 给生产部; 4.2.2生产部门根据《生产制作单》安排生产加工,生产部主管将生产任务以《生产制作单》 的形式下达各工序班组,必要时生产部主管需事先对操作人员解说产品相关特性及质 量要求。 4.2.3操作人员按照《设备(工艺)操作规程》进行操作; 4.2.4生产部各作业组需按客户相关要求、作业指导书等规定的技术要求精心生产,以确保产 品质量; 4.2.5各工序需按实际生产情况认真填写《生产流程卡》,产品加工完成后《生产流程卡》由 生产部主管统一收回,并将产量统计在《生产日报表》上报送行政部,以便于行政部及时了解客户订单完成情况; 4.2.6对生产过程中的人员培训和鉴定按《培训控制程序》进行; 4.2.7生产过程中不合格品的控制按《不合格品控制程序》进行; 4.3 过程检验 4.3.1首件检验

产品过程检验工作程序 - 制度大全

产品过程检验工作程序-制度大全 产品过程检验工作程序之相关制度和职责,产品过程检验程序⒈目的:对产品零件加工和成品装配的各工序的质量进行规定的检验和试验,防止不合格产品的流失,保证产品加工过程中符合标准要求。⒈范围:适用于指导产品零件加工,和... 产品过程检验程序 ⒈目的: 对产品零件加工和成品装配的各工序的质量进行规定的检验和试验,防止不合格产品的流失,保证产品加工过程中符合标准要求。 ⒈范围: 适用于指导产品零件加工,和成品装配过程中的工序检验工作。 ⒈职责: 3.1检验组是工序检验的归口管理部门,负责工序检验的组织实施工作。 3.2技术部负责工序检验的技术标准等有关文件的编制工作。 3.3生产部及有关产品加工车间负责工序的首检、自检等检验工作的管理。 ⒈工作程序: 4.1.1过程检验的策划: 技术部根据产品工艺流程图及产品质量特性等技术文件的要求,制定产品的工序检验流程,设立适当的工序检验点、站、网络,合理配置资源,生产部检验组按检验规程实施工序检验,以保证产品的工序加工质量。 4.1.2生产车间要按作业指导书和工序检验要求组织有关人员进行首检、自检、完工检。工段长应确保工序产品质量,防止不合格品流入下工序。 4.2过程检验 4.2.1首检: 操作人员对上班加工的首件或首次产品,以及更换型号、工装、刀具后加工的首件产品,都要进行首检。首检按"作业指导书"的检验要求执行。操作者首检合格后交专职检验员进行确认。确认前,检验员首先核对仪表、标准件,确认无误后方可进行。首检一般查3--5件,有异常时加倍抽样。首检产品质量正常可继续加工,如发现问题则立即通知操作者进行机床、工装调整。出现异常现象时,向有关领导反馈,等候处理,首检记录由操作者负责在《工序质量检查记录表》上填写,检验员在"认可栏"签字确认。 4.2.2巡检: 加工中,检验员按照检验规程要求的频次进行巡检,巡检间隔时间不大于二小时,对重点的工序或机床应当适当的增加巡检次数,巡检抽样一般为3--5件,异常时加倍抽样。巡检中发现异常波动,应立即通知操作者进行分析调整;如发现严重质量问题,按程序规定向有关部门及时反馈,等候处理。对巡检情况检验员要在《工序质量检验记录表》中做好记录。 4.2.3工序间的下转验收: 工段或车间之间的转序检验,按下转产品的各项质量特性和技术条件由检验员进行抽检,抽检合格后和工段长共同在《工序流转单》中签字后方可后移交到下一道工序。 4.2.4装前检: 为确保成品质量,对加工完毕的零件质量中的容易引起用户投诉的质量特性,在成品装配前

过程检验和试验程序

过程检验和试验程序 1目的 规定了过程检验和试验的职责、控制要求、控制程序及拒检依据。目的在于保证过程检验和试验的质量,以便及早发现不合格品,减少人力、物力、财力损失。 2 适用范围 适用于本企业军品、民品生产中的过程检验和试验。 3 职责 过程检验和试验工作由检验部门归口管理并负责组织实施。 4 程序 4.1 控制要求 4.1.1 检验人员必须熟悉和掌握本工序的技术要求,严格按控制计划、作业指导书或相关检验文件进行检验。 4.1.2 严格执行首件三检制,零件首件检验合格后方可继续加工。 4.1.3 负责巡回检验的人员应按规定的路线、项目、程序、标准进行监督检查,并作好原始记录。 4.1.4 凡设置检验工序的必须对本道工序的产品按规定的检测项目进行检验和试验(工序检验记录按工艺规程规定执行),并按零缺陷接收准则判断合格后才能转入下道工序。因生产急需来不及检验的产品按《紧急放行例外放行控制程序》之规定办理。

4.1.5 检验用的量具、检测仪器、试验设备等必须使用方法正确,测试数据可靠,在有效期内并附有合格标志。 4.1.6 检验人员除了进行首检、巡检、工序检验外,还应对生产现场进行监督。 4.1.7 检验员按控制计划要求对关键/重要特性采用控制图进行控制。 4.1.8 产品在特种工艺工序加工的过程中,检验人员应经常在生产现场监督检查工艺的执行情况,并作好相应的原始记录。 4.1.9 如产品超差、生产又急需,检验员应及时通知有关技术人员到现场处理,由生产单位按《不合格品管理程序》办理审批手续。 4.2 控制程序 4.2.1 生产工人对自己加工的产品必须进行自检,并把不合格品做出明显标识后,提交检验。 4.2.2 初期试制产品交验人应向检验人员提供所需的图纸技术资料及必要的质量证明文件。 4.2.3 完工的产品,检验人员先检查所用计量器具是否准确、有效,再按技术文件,有关规定进行质量符合性检验,并及时做出合格与不合格的结论。不合格产品按《不合格品管理程序》办理。 4.2.4 拒检依据 4.2.4.1 产品存在明显的质量问题或漏工序或未加工完毕的拒检; 4.2.4.2 已判为不合格品,未经有关部门处理又重复交检的拒

CRC算法及Verilog实现

CRC算法原理及其Verilog实现 1CRC简介 CRC校验是一种在数据通信系统和其它串行传输系统中广泛使用的错误检测手段。通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。本文将以CRC-32为例,说明CRC编码的实现方式以及如何用verilog语言对CRC编码进行描述。 2二.模2运算 在说明CRC编码方式之前,首先介绍一下模2运算法则,在CRC运算过程中会使用到模2除法运算。模2运算是一种二进制运算法则,与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种运算。模2运算用“+”表示加法运算,用“-”、“×”或“.”、“/”分别表示减法、乘法和除法运算。与普通四则运算法则不同的是,模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。同时,模2乘法在累加中间结果时采用的是模2加法运算;模2除法求商过程中余数减除数采用的是模2减法运算。因此,两个二进制数进行模2加减法运算时,相当于两个二进制数进行按位异或运算,每一位的结果只与两个数的当前位有关。模2除法在确定商时,与普通二进制除法也略有区别。普通二进制除法中,当余数小于除数时,当前位的商为0,当余数大于等于除数时,当前位的商为1。模2除法在确定当前位的商时,只关心余数的首位,首位为1则商为1,首位为0则商为0。 1.模2加法的定义: 0+0=0,0+1=1,1+0=1,1+1=0。 举例如下: 1010+0110=1100。 2.模2减法的定义:

0-0=0,0-1=1,1-0=1,1-1=0。 举例如下: 1010-0110=1100。 3.模2乘法的定义: 0×0=0,0×1=0,1×0=0,1×1=1。 举例如下: 1011×101=100111 列竖式计算: 1011 × 101 —————— 1011 0000 1011 —————— 100111 其中横线之间的累加过程,采用的是2进制加法,不进位。 4.模2除法: 0/1=0,1/1=1。 举例如下: 1011/101=10,余数为100。 列竖式计算: 10 ———— 101 )1011 101 ———— 001 101

过程检验控制程序--正文

过程检验控制程序 1 目的 为使各过程(进料、制程、出货)检验活动作业有据可循,确保过程产品的质量符合规定要求,防止不合格品流入下工序和顾客手中。 2适用范围 适用于公司内部整个过程检验活动。 3术语和定义 3.1 过程检验:包括公司的进料检验、制程检验、成品检验和出货检验。 3.2 首件检验:每班上班后加工的第一件产品,当出现影响过程因素(5M1E) 发生变化时,需重新完成首件检验工作。首件检验由作业员独立完成,制程班组长 进行查核和确认有效性。 3.3 自主检验:作业员按《制程检验作业标准书》和控制计划中规定的频次进 行的检验活动。 3.4 巡回检验:由质控部检验人员负责对制程加工的产品按规定的频次实施的 检验活动。 3.5 转序检验:对于产品在一个班组加工完成后需转至下个班组或托外加工时 所实施的检验活动。 3.6 出货检验:产品包装后发运前实施的检验活动。 4职责 本程序由质控部制订,经相关权责人员核准后,各单位照案执行。 5 相关文件 5.1 《不合格品控制程序》 5.2 《控制计划》 5.3 《进料检验作业标准》 5.4 《制程检验作业标准》 5.5 《成品检验作业标准》 5.6 《出货检验作业标准》 第 1 页共4 页

6 流程说明 第 2 页共4 页

第 3 页共4 页

过程检验控制程序8 附件 无 6 记录表单 记录一进料检验抽样计划表 记录二出货检验抽样计划表 记录三进料检验记录表 记录四进料检验履历表 记录五首件/自主检验记录表 记录六巡检记录表 记录七、成品检验记录表 记录八、出货检验记录表 第 4 页共4 页

CRC校验算法学习

CRC校验算法学习(这个算法看了很多遍了,都是囫囵吞枣,这次将资料拷贝到这里,好好学习一下) (2008-2-23 23:18)CRC校验采用多项式编码方法。 被处理的数据块可以看作是一个二进制多项式,例如,10110101可以看作是2^7+2^5+2^4+2^2+2^0,多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模,加减时不进,错位,和逻辑异或运算一致。 采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。CRC的处理方法是:发送方以g(x)去除t(x),得到余数作为CRC 校验码。校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。 CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。所以CRC的生成多项式的阶数越高,那么误判的概率就越小。 CCITT建议:2048 kbit/s的PCM基群设备采用CRC-4方案,使用的CRC校验采用16位CRC校验。在IBM的同步数据链路控制规程SDLC的帧校验序列FCS中,使用CRC-16。g(x)的位数越高,检错能力就越强。由于CRC-32的可靠性,把CRC-32用于重要数据传输十分合适,所以在通信、计算机等领域运用十分广泛。在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SIO)内,都采用了CRC校验码进行差错控制;以太网卡芯片、MPEG解码芯片中,也采用CRC-32进行差错控制。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>> (转自https://www.doczj.com/doc/5b17223336.html,/forum/viewthread.php?tid=5470&sid=3rrqV omR) CRC校验码的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。 在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC. CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。 CRC的本质是模-2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC 的除数用生成多项式来表示。最常用的CRC码的生成多项式有CRC16,CRC32. 以CRC16为例,16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(既乘以2^16)后,再除以一个多项式,最后所得到的余数既是CRC码,如下式所示,其中K(X)表示n位的二进制序列数,G(X)为多项式,Q(X)为整数,R(X)是余数(既CRC码)。K(X)>>16=G(x)Q(x)+R(x) 求CRC码所采用模2加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。生成CRC码的多项式如下,其中CRC-16和CRC-CCITT产生16位的CRC码,而CRC-32则产生的是32位的CRC码 接收方将接收到的二进制序列数(包括信息码和CRC码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误,关于其原理这里不再多述。用软件计算CRC 码时,接收方可以将接收到的信息码求CRC码,比较结果和接收到的CRC码是否相同。 CCITT推荐的高级数据链路控制规程HDLC的帧校验序列FCS中,使用CCITT-16即CRC16,其生成多项式为G(x)=x16+x12+x5+1, CRC-32的生成多项式为G(x)=x32+x26+x23+x22+x16+x11+x10+x16+x8+x7+x5+x4+x2+x+1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

OQC检验流程及检验标准

检验项目及检验方法 裸机检验 一.检验条件 1.距离:肉眼与被测物距离30CM 2.角度:被测面与光源成45度,被测物转动15度范围内 3.照明:40W,距离检测者1M 4.工具:静电环、静电手套、SIM卡、T卡、耳机、电池 二.检验项目 1.表面壳件缺陷:汽泡、退色、掉漆、水纹、划伤、凹痕、缺损、毛边、毛刺 2.印刷缺陷:漏印,字体重叠、水纹、印刷不全、不正、多余痕迹、断线 3.镜片(LENS)、LCD缺陷:表面异物、杂点、指印、划伤、气泡、凹痕 4.装配缺陷:壳件组装间隙=>0.3mm,大小LENS边缘缝隙=>0.3mm,按键与C壳 间隙=>0.2mm,转轴(滑轨)不顺畅、有异音,电池及卡座触点变形、翘曲,电池扣推动异常 5.开机检验:插入SIM卡按下开机键5秒钟内开机 6.LCD检验:背光、色彩均匀,显示完整(缺线、字斜、亮点、花屏、白屏、闪 屏、蓝屏) 7.按键检验:按键功能、错乱、无功能、重按,按键弹性差,按键标识清晰度, 按键音有无和杂音 8.铃音检验:铃音的宏亮、悦耳、保真、连续 9.振动检验:正常起振,振动幅度应符合手感要求,没有异常音

10.接听和受话检验:拨打“112”,接听回答音时不应有失真、回音、杂音、电流 声等异音;插入耳机接听应正常,吹MIC,耳机应有回音 11.多媒体检验:插入T卡,进入拍照功能,测试是否花屏、缺陷、死机;进入MP3 播放器,测试是否读取清单、正常播放、死机、播放功能键正常;进入MP4播放器,测试是否读取清单、正常播放、死机、播放功能键正常;查看文件管理是否正常,T卡读写无误 12.关机检验:按开机键5秒内是否正常关机 13.电流检验:稳压电源调到3.7V与插入SIM卡的手机连接,测试开机、待机、拨 打112的发射电流是否正常(按各机型不同标准) 14.充电检验:装好电池,插入充电器,测试充电是否正常,充电显示是否正常 15.时钟检验:对手机进行时钟设置,关机拔电池2分钟后开机,时钟应运行正常 16.版本、内容检验:检查手机软件版本是否为最新可用版本,恢复出厂,检查手 机内存MP3、MP4是否为出厂内容,所有记录是否清除 17.标码检验:检查是否漏标、破标、标签粘贴不牢、污渍、标识不可辨认、标识 内容错误 三.检验方法和数量 抽检时以托盘为单位(注:10台一盘,分2排,每排5台),每排抽检一台,即每20 台抽5台(抽检率20%),如5台中抽到2台不合格此批同机型全部返工,2台以 下此盘全部返工. 如有侵权请联系告知删除,感谢你们的配合!

CRC校验PLC算法

CRC校验函数 cBuffer:计算CRC校验码的数组。 iBufLen:该数组的长度。 unsigned int CRC_Verify(unsigned char *cBuffer, unsigned int iBufLen) { unsigned int i, j; //#define wPolynom 0xA001 unsigned int wCrc = 0xffff; unsigned int wPolynom = 0xA001; /*---------------------------------------------------------------------------------*/ for (i = 0; i < iBufLen; i++) { wCrc ^= cBuffer[i]; for (j = 0; j < 8; j++) { if (wCrc &0x0001) { wCrc = (wCrc >> 1) ^ wPolynom; } else { wCrc = wCrc >> 1; } } } return wCrc; } 如何用PLC写上述的CRC校验函数,笔者整理了一个CRC校验计算的子程序。 CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1(0xffff),然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB),移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码(16#A001)进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit 数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。 下面为CRC的计算过程: 1.设置CRC寄存器,并给其赋值FFFF(hex)。 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。 3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 6.重复第2至第5步直到所有数据全部处理完成。 7.最终CRC寄存器的内容即为CRC值。 输入参数: 待校验数据区指针,第一个字节为数据长度

车间模具加工过程检验管理程序

车间模具加工过程检验 分发编号 程序 1. 目的 根据控制计划要求在适宜的阶段对模具加工的质量特性进行监视和测量,以验证模具加工要求得到满足。 2. 适用范围 本程序适用于装备车间生产模具加工过程及模具出库的检验。 3 ?职责 3.1技术组: 3.1.1负责提供模具加工检验规范和加工过程所需的工艺卡及图纸和加工程序;负责 制订,修改模具加工工艺规范; 3.1.2 负责过程质量,技术跟踪,落实执行过程的自检及专检、巡检工作并对发现 的不合格品进行处置; 3.2员工 负责按要求执行工艺文件,做好自检以及专检,对不合格品及时隔离并反馈问题至相关负责技术员。以及对完工的零件进行报检。 3.3质检员 负责实施过程检验(巡检和专检及生产者发现不合格品的确认)和完工检验工作,并依据验收技术文件对其合格与否作出判定。负责产品检验放行人员的授权。 4. 模具加工流程

5. 工作流程及说明 5.1产品检验工作流程(见下页)

5.2产品检验工作流程标准 序号流程块工作标准 1加工前确认 毛坯 模具毛坯检验标准 员工毛坯检查确认表 质量部 车间员工 质量部 质量部 模具加工检验表 不合格品登记表 检验报告单 质量部模具合格卡

6. 奖惩方案 6.1工艺卡不按要求进行编制,一次考核50元。 6.2员工不按要求进行自检,完工报检,一次检查出来通报批评,第二次考核 20元,第三次考核50元,若多次重复发生,进行停岗培训1周。

项进行追究考核,考核金额分解到把关人员上 7. 记录表 7.1毛坯接收检验表 毛坯接收检验表

模具加工检验表 车间:班组:加工日期: 8. 修改记录

CRC_校验码的计算方法

CRC 校验码的计算方法 CRC从原理到实现=============== 作者:Spark Huang(hcpp@https://www.doczj.com/doc/5b17223336.html,) 日期:2004/12/8 摘要:CRC(Cyclic Redundancy Check)被广泛用于数据通信过程中的差错检测,具有很强的检错能力。本文详细介绍了CRC的基本原理,并且按照解释通行的查表算法的由来的思路介绍了各种具体的实现方法。 1.差错检测 数据通信中,接收端需要检测在传输过程中是否发生差错,常用的技术有奇偶校验(Parity Check),校验和(Checksum)和CRC(Cyclic Redundancy Check)。它们都是发送端对消息按照某种算法计算出校验码,然后将校验码和消息一起发送到接收端。接收端对接收到的消息按照相同算法得出校验码,再与接收到的校验码比较,以判断接收到消息是否正确。 奇偶校验只需要1位校验码,其计算方法也很简单。以奇检验为例,发送端只需要对所有消息位进行异或运算,得出的值如果是0,则校验码为1,否则为0。接收端可以对消息进行相同计算,然后比较校验码。也可以对消息连同校验码一起计算,若值是0则有差错,否则校验通过。 通常说奇偶校验可以检测出1位差错,实际上它可以检测出任何奇数位差错。 校验和的思想也很简单,将传输的消息当成8位(或16/32位)整数的序列,将这些整数加起来而得出校验码,该校验码也叫校验和。校验和被用在IP协议中,按照16位整数运算,而且其MSB(Most Significant Bit)的进位被加到结果中。 显然,奇偶校验和校验和都有明显的不足。奇偶校验不能检测出偶数位差错。对于校验和,如果整数序列中有两个整数出错,一个增加了一定的值,另一个减小了相同的值,这种差错就检测不出来。 2.CRC算法的基本原理------------------- CRC算法的是以GF(2)(2元素伽罗瓦域)多项式算术为数学基础的,听起来很恐怖,但实际上它 的主要特点和运算规则是很好理解的。 GF(2)多项式中只有一个变量x,其系数也只有0和1,如: 1*x^7 + 0*x^6 + 1*x^5 + 0*x^4 + 0*x^3 + 1*x^2 +1*x^1 + 1*x^0

CCITT CRC-16计算原理与实现

CCITT CRC-16计算原理与实现 CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。实际上,除数据通信外,CRC在其它很多领域也是大有用武之地的。例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。 差错控制理论是在代数理论基础上建立起来的。这里我们着眼于介绍CRC的算法与实现,对原理只能捎带说明一下。若需要进一步了解线性码、分组码、循环码、纠错编码等方面的原理,可以阅读有关资料。 利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制理论中称为“生成多项式”。 1 代数学的一般性算法 在代数编码理论中,将一个码组表示为一个多项式,码组中各码元当作多项式的系数。例如 1100101 表示为 1·x6+1·x5+0·x4+0·x3+1·x2+0·x+1,即 x6+x5+x2+1。 设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k;生成多项式为G(x),G(x)的最高幂次等于r;CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。 发送方编码方法:将P(x)乘以xr(即对应的二进制码序列左移r位),再除以 G(x),所得余式即为R(x)。用公式表示为 T(x)=xrP(x)+R(x) 接收方解码方法:将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有误。 举例来说,设信息码为1100,生成多项式为1011,即P(x)=x3+x2,G(x)=x3+x+1,计算CRC的过程为 xrP(x) x3(x3+x2) x6+x5 x -------

过程检验作业指导书

过程检验作业指导书 1.目的 为了加强产品生产现场品质的管控,有效的控制和降低潜在的质量风险,确保生产过程中产品品质处于受控状态。 2.适用范围 适用本公司所有产品的从领料生产到包装完成各工序的检验。 3.检验依据 产品图纸、检验指导书、样品、装配工艺等产品资料文件。 4.检验程序 4.1.物料入场检验 1.1人员及职责 装配线设置物料专员,负责从仓库领取当天装配水炮所用物料,分配不同物料给不同工位装配人员。 1.2具体工作内容 所需的物料。 规格型号、外观、一致性、性能等,检验无误后,开始组装。 2.部件组装检验 2.1自检 装配人员每装配完成第一个部件后,进行自检合格后在装配剩余部分,整批装配完成后逐个进行自我检验,全部无误后,才能流到下一工序。 如果组装的部件有一部分部件组成,则装配人员需要对上一工序的部

件进行检验,合格后方能使用。 2.2互检 装配人员在一批部件自检完成后,要求相邻工序装配人员或下一工序装配人员给做互检,互检完成后,检验人签字确认。 2.3巡检 4巡检是生产过程中,检验员对生产出的产品进行巡回检验,质检员对产品进行抽样家宴,目的是为了防止成批不合格品的发生或工艺发生异常。 检验员对个生产工序产品品质状况进行巡回检查,在巡检过程中需特别注意物料加工的工位、常换人、有新人上岗的工位以及关键工位,如有发现异常及时通知生产管理负责人进行改善。 巡检过程中同时注意操作人员是否按照《作业指导书》进行操作,如发现操纵人未按照作业指导书进行操作,应立即要求作业人员改善。检验员有权对不符合规定的操作,现场易引发质量问题和生产效率的操作,要求进行整改。 5.不合格的处理方法 5.1由自检、互检发现的由装配人员引起的不合格品,由装配人员自行返工维修,返工后的产品需要重新检验。返工返修仍然不能解决的,可以做报废处理。 5.2巡检发现不合格品,必须标识隔离单独存放,进行集中统一处理。并调查原因,改进装配流程、方法。 6.出现以下情况,检验员可以拒检 6.1 使用未按周期检定或校准的仪器、设备生产出来的产品

CRC16校验算法实现

CRC16校验算法实现(转) 循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC。它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。 根据应用环境与习惯的不同,CRC又可分为以下几种标准: ①CRC-12码; ②CRC-16码; ③CRC-CCITT码; ④CRC-32码。 CRC-12码通常用来传送6-bit字符串。CRC-16及CRC-CCITT码则用是来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。CRC-32码大都被采用在一种称为Point-to-Point的同步传输中。 下面着重是CRC-16检验码的生成过程。 CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果 LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。 下面为CRC16的计算过程,其中生成多项式为:X16+X15+X2+1: 1.设置CRC寄存器,并给其赋值FFFF(hex)。 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC 寄存器。 3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与生成多项式码相异或。 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 6.重复第2至第5步直到所有数据全部处理完成。 7.最终CRC寄存器的内容即为CRC值。 校验码实现 编写CRC校验程序有两种办法:一种为计算法,一种为查表法。下面是查表法的C语言实现:校验码算法程序实现样例(C语言):

CRC校验实用程序库(一)

CRC校验实用程序库(一) 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验,其特点是:检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。 CRC的本质是模-2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC的除数用生成多项式来表示。最常用的CRC码的生成多项式如表1所示。 @@10A08800.GIF;表1.最常用的CRC码及生成多项式@@ 由于CRC在通讯和数据处理软件中经常采用,笔者在实际工作中对其算法进行了研究和比较,总结并编写了一个具有最高效率的CRC通用程序库。该程序采用查表法计算CRC,在速度上优于一般的直接模仿硬件的算法,可以应用于通讯和数据压缩程序。 通常的CRC算法在计算一个数据段的CRC值时,其CRC值是由求解每个数值的CRC值的和对CRC寄存器的值反复更新而得到的。这样,求解CRC的速度较慢。通过对CRC算法的研究,我们发现:一个8位数据

加到16位累加器中去,只有累加器的高8位或低8位与数据相作用,其结果仅有256种可能的组合值。因而,我们可以用查表法来代替反复的运算,这也同样适用于CRC32的计算。本文所提供的程序库中,函数crchware是一般的16位CRC的算法;mk-crctbl用以在内存中建立一个CRC数值表;crcupdate用以查表并更新CRC累加器的值;crcrevhware和crcrevupdate是反序算法的两个函数;BuildCRCTable、CalculateBlockCRC32和UpdateCharac terCRC32用于CRC32的计算。 /*CRC.C——CRC程序库*/ #defineCRCCCITT0x1021 #defineCCITT-REV0x8408 #defineCRC160x8005 #defineCRC16-REV0xA001 #defineCRC32-POLYNOMIAL0xEDB88320L /*以上为CRC除数的定义*/ #defineNIL0 #definecrcupdate(d,a,t)*(a)=(*(a)>8)^(d)]; #definecrcupdate16(d,a,t)*(a)=(*(a)>>8^(t)(*(a)^(d))&0x00ff]) /*以上两个宏可以代替函数crcupdate和crcrevupdate*/ #include #include

过程检验管理程序

1 目的和范围 进行过程检验和试验,是为了验证半成品、在制品是否满足规定的要求。 本程序适用于半成品、在制品。 2职责 2.1质检科负责实施过程检验和试验。 2.2生产科车间负责自检、互检。 3 工作程序 3.1过程检验和试验依据的文件 a.产品图纸:规定各种尺寸的具体要求; b.各种工艺文件:规定零部件尺寸检验的位置; c.按JB、GB标准汇编:规定制造的具体要求。 3.2生产过程检验 3.2.1每道工序完成后,车间操作人员进行自检,然后填写《产品制造质量交验单》,交检验员进行检验,将检验结果记录在《产品制造质量交验单》中。 3.2.2工序检验的几项规定 a.主要工序质量检验方式: 此表所列为主要工序检验方式,其余项目检验根据工艺规程要求进行。

b.批量生产零部件要严格按三检制度,执行做好自检、互检和专检工作; c.对零部件编号、工种钢印、材料检验编号等标记,检验员应严格予以确认, 其位置正确、清晰; d.对关键受压元件工序,检验合格后检验员在工艺流程卡中签字,随零部件向 下工序流转,直至关键受压件全部完工后,由最后工序检验员将其转入质检 科归档。 e.检验员应做好各工序检验的详细原始记录(见相关文件QC10.2-01~ QC10.2-15),质检科按《质量记录控制程序》保存。 f.不合格品按《不合格品控制程序》执行。 3.3生产过程的理化试验见《理化试验管理程序》。 3.4生产过程的无损检测见《无损检测管理程序》。 3.5例外转序,如检验和试验未完成,急需放行时,需办理例外转序。 3.5.1“例外转序”由生产科提出,报总工程师审核后方可进行。但放行产品由检验员在产品零部件作出明显位置,并做好记录,以保证其可追溯性。 3.6检验和试验记录 3.6.1过程产品应有表明其已经检验和试验的记录。这些记录应清楚表明产品是按规定的验收标准通过了检验和试验。 3.6.2记录应标明负责合格产品放行的授权检验者,并按XGF16《质量记录控制程序》保存。 4 相关文件 a.《锯切联系单》 b.《管子生产清单》 c.《拼接电联系单》 d.《产品制造质量交验单》 e.《无损探伤委托单》 f.《光谱检验委托单》 g.《通球记录》 h.《蛇形管质量检验记录》

相关主题
文本预览
相关文档 最新文档