词条 | CRC |
释义 | CRC 循环冗余校验(标准 工作原理 生成过程 计算过程 应用场合 C语言算法 VHDL硬件算法) 其他释义(CRC - Crazy Roller Crew 临床研究协调员 钢铁国际贸易中的含义 国家代码 中国儿童医学研究中心) 中国汽车拉力锦标赛基本释义China Rally Championship 中国汽车拉力锦标赛中国汽车拉力锦标赛是由中国汽车运动联合会及举办地人民政府联合主办的全国性汽车拉力赛事。 拉力,是其英文Rally的中文译音,是汽车道路比赛项目之一。在有路基的土路、砂砾路或柏油路上进行,是在一个国家内或者跨越数国举行的既检验车辆性能和质量,又考验驾驶员驾驶技术的长途比赛。比赛在规定日期内分若干阶段进行,每阶段内设置由行驶路段连接的数个测试速度的赛段交替进行,每个赛段的长度不超过30公里。比赛采用单个发车方法,每个车组由1名驾驶员和1名副驾驶员(领航员)组成。以每个车组完成全部特殊路段比赛的时间和在行驶路段所受处罚时间累计计算最终成绩,时间短者名次列前。比赛对行驶路段的行驶时间有严格限制,车组必须按规定的时间依次到每个时间控制点报到,迟到或早到都会受到处罚。 拉力赛的每一站比赛通常为3天,在事先设定好的赛道上划出了20—30处被称为SS(SpecialStage)的赛段,每个赛段最短3公里,最长可达30公里。赛车选手驾驶赛车以最快速度通过赛段以决出比赛名次。当然,比赛的主办者必须对赛段进行最严格的管理,除萨法利拉力以外,拉里的各个赛段都严禁其他车辆通行。在各赛段上每隔2—3分钟有一辆赛车出发投入比赛。拉力赛车与F1等场地汽车比赛的最大区别在于,错开时间出发的赛车选手们是在完全看不见竞争对手的情况下进行比赛的。另外,拉力赛车都配备一名领航员,坐在副驾驶席上的领航员通过被称做“PaceNote”的比赛路线图为赛车选手指示前进方向。选手们在领航员的配合之下,任凭大雾弥漫或者雨雪交加,以超乎人们想象的速度驶过每一处弯道,最终那些能够征服大自然重重障碍,以最短时间完成比赛的选手将赢得胜利。 全国汽车拉力锦标赛是经过国家体育总局和国际汽车运动联合会批准的一项国家级汽车赛事,它的最高管理机构是中国汽车运动联合会。CRC从1999年开始正式举办,从最初的每年2、3站比赛到现在每年约4~5个分站赛,并且有超过20支车队参加,每场约有70台赛车参赛,其中国外赛手约10~20人,是国内最高级别最大规模最大影响力的汽车赛事。全国汽车拉力锦标赛的每站赛事分两天举行,行程约500公里,其中将近200公里为竞赛速度的“特殊赛段”。车手只有历尽艰辛、长途跋涉才能到达终点,是技能和意志的双重考验。目前CRC主要设N组杯和1.6L杯两个组别奖。 CRC检验概况 CRC (Class,Responsibility,and Collaboration) 类,责任和交互,简称CRC卡片。 在面向对象程序设计中,用来阐述类、类的行为和类的责任的一个非常好的途径。 CRC 循环冗余校验循环冗余码校验英文名称为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在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,k位要发送的信息位可对应一个(k-1)次多项式K(X),r位冗余位对应于一个(r-1)次多项式R(X),由k位信息位后面加上r位冗余位组成的n=k+r的码字则对应于一个(n-1)次多项式T(X)X×K(X)+R(X)。也即在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端。接收端的检验过程就是将接收到的码字多项式除以G(X),若余式为零则认为传输无差错;若余式不为零则传输有差错。 生成过程下面以最常用的CRC-16为例来说明其生成过程。 CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0), 之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后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值。 常用的CRC循环冗余校验标准多项式如下: CRC(12位) =X12+X11+X3+X2+X+1 CRC(16位) = X16+X15+X2+1 CRC(CCITT) = X16+X12 +X5+1 CRC(32位) = X32+X26+X23+X16+X12+X11+X10+ X8+X7+X5+X4+X2+X+1 以CRC(16位)多项式为例,其对应校验二进制位列为1 1000 0000 0000 0101。 注意:这儿列出的标准校验多项式都含有(X+1)的多项式因子;各多项式的系数均为二进制数,所涉及的四则运算仍遵循对二取模的运算规则。 (注:对二取模的四则运算指参与运算的两个二进制数各位之间凡涉及加减运算时均进行XOR异或运算,即:1 XOR 1=0,0 XOR 0=0,1 XOR 0=1,0 XOR 1=1,即相同为0,不同为1) 应用场合CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验,其特点是:检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,WinRAR、NERO、ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。 CRC的本质是模-2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC的除数用生成多项式来表示。最常用的CRC码的生成多项式如表1所示。 @@10A08800.GIF;表1.最常用的CRC码及生成多项式@@ 由于CRC在通讯和数据处理软件中经常采用,笔者在实际工作中对其算法进行了研究和比较,总结并编写了一个具有最高效率的CRC通用程序库。该程序采用查表法计算CRC,在速度上优于一般的直接模仿硬件的算法,可以应用于通讯和数据压缩程序。 C语言算法通常的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程序库 */ #define CRCCCITT 0x1021 #define CCITT-REV 0x8408 #define CRC16 0x8005 #define CRC16-REV 0xA001 #define CRC32-POLYNOMIAL 0xEDB88320L /* 以上为CRC除数的定义 */ #define NIL 0 #define crcupdate(d,a,t)*(a)=(*(a)<<8)^(t)[(*(a)>>8)^(d)]; #define crcupdate16(d,a,t)*(a)=(*(a)>>8^(t)[(*(a)^(d))&0x00ff]) /* 以上两个宏可以代替函数crcupdate和crcrevupdate */ #include #include #include /* 函数crchware是传统的CRC算法,其返回值即CRC值 */ unsigned short crchware(data,genpoly,accum) unsigned short data;/* 输入的数据 */ unsigned short genpoly;/* CRC除数 */ unsigned short accum;/* CRC累加器值 */ { static int i; data<<=8; for(i=8;i>0;i--) { if((data^accum)&0x8000) accum=(accum<<1)^genpoly; else accum<<=1; data<<=1; } return (accum); } /* 函数mk-crctbl利用函数crchware建立内存中的CRC数值表 */ unsigned short *mk-crctbl(poly,crcfn); unsigned short poly;/* CRC除数--CRC生成多项式 */ R>unsigned short (*crcfn)();/* 指向CRC函数(例如crchware)的指针 */ { /* unsigned short */malloc(); */ unsigned short *crctp; int i; if((crctp=(unsigned short*)malloc(256*sizeof(unsigned)))==0) return 0; for(i=0;i<256;i++) crctp=(*crcfn)(i,poly,0); return crctp; } /* 函数mk-crctbl的使用范例 */ if((crctblp=mk-crctbl(CRCCCITT,crchware))==NIL) { puts("insuff memory for CRC lookup table.\"); return 1; */ /* 函数crcupdate用以用查表法计算CRC值并更新CRC累加器值 */ void crcupdate(data,accum,crctab) unsigned short data;/* 输入的数据 */ unsigned short *accum;/* 指向CRC累加器的指针 */ unsigned short *crctab;/* 指向内存中CRC表的指针 */ { static short comb-val; comb-val=(*accum>>8)^data; *accum=(*accum<<8)^crctab[comb-val]; } /* 函数crcrevhware是传统的CRC算法的反序算法,其返回值即CRC值 */ unsigned short crcrevhware(data,genpoly,accum) unsigned short data; unsigned short genpoly; unsigned short accum; { static int i; data<<=1; for(i=8;i>0;i--) { data>>=1; if((data^accum)&0x0001) accum=(accum>>1)^genpoly; else accum>>=1; } return accum; } /* 函数crcrevupdate用以用反序查表法计算CRC值并更新CRC累加器值 */ void crcrevupdate(data,accum,crcrevtab) unsigned short data; unsigned short *accum; VHDL硬件算法library ieee; use ieee.std_logic_1164.all; package PCK_CRC16_D1 is -- polynomial: (0 2 15 16) -- data width: 1 -- convention: the first serial bit is D[0] function nextCRC16_D1 (Data: std_logic; crc: std_logic_vector(15 downto 0)) return std_logic_vector; end PCK_CRC16_D1; package body PCK_CRC16_D1 is -- polynomial: (0 2 15 16) -- data width: 1 -- convention: the first serial bit is D[0] function nextCRC16_D1 (Data: std_logic; crc: std_logic_vector(15 downto 0)) return std_logic_vector is variable d: std_logic_vector(0 downto 0); variable c: std_logic_vector(15 downto 0); variable newcrc: std_logic_vector(15 downto 0); begin d(0) := Data; c := crc; newcrc(0) := d(0) xor c(15); newcrc(1) := c(0); newcrc(2) := d(0) xor c(1) xor c(15); newcrc(3) := c(2); newcrc(4) := c(3); newcrc(5) := c(4); newcrc(6) := c(5); newcrc(7) := c(6); newcrc(8) := c(7); newcrc(9) := c(8); newcrc(10) := c(9); newcrc(11) := c(10); newcrc(12) := c(11); newcrc(13) := c(12); newcrc(14) := c(13); newcrc(15) := d(0) xor c(14) xor c(15); return newcrc; end nextCRC16_D1; end PCK_CRC16_D1; 其他释义CRC - Crazy Roller CrewCrazy Roller Crew是疯狂轮滑阵线(CRF)核心成员团体。 CRC是疯狂轮滑阵线组织力量和轮滑技术的核心,服务于疯狂轮滑阵线的技术团队,由阵线会员组成。但绝非纯技术团队,亲和力及沟通能力作为基本条件存在。荣誉承担疯狂轮滑阵线的各种对外技术交流活动。 临床研究协调员即Clinical Research Coordinator 负责产品临床方案的编写及临床试验的组织落实工作; 负责监察临床研究质量、跟踪研究进度及临床试验工作协调等。 钢铁国际贸易中的含义CRC在钢铁国际贸易中为Cold rolled steel coil 即表示:冷轧钢卷的含义。 国家代码CRC是哥斯达黎加(Republic of Costa Rica)在国际足联的国家代码。 中国儿童医学研究中心即Children's Medical Research Center of China 简称CRC CRC工业公司简介CRC----CRC工业公司(CRC INDUSTRIES,INC.) 始于1958年,CRC工业公司(CRC INDUSTRIES,INC.)已锐意要成为机械维修和保养专用化工产品的领导者。CRC的产品以其卓越的品质、多元化的产品类别而驰名于世,为国际化的汽车制造业及一般工业提供全面完善的服务。在这种远大志向和专业精神推动下,CRC公司逐渐发展成为一个标志着[创新]、[优质]以及[服务承诺]的跨国性专业化集团。 CRC提供一系列完整的维修保养专业化产品,本公司的技术研究员细心研究,针对用家的个别需要,研制出超过500种产品,务求迎合各种不同的要求,为客户提供简捷方便的全面服务。CRC产品包括:润滑剂、清洁剂、防锈品、除油剂、油脂、粘合胶、工业润滑油、添加剂、及其他专业质优产品,迎合电子工业、电器工业、汽车工业、造纸业、五金制造业、食品工业、航空工业和轮船等。 优质的保证[CRC]-[最佳品质]的标志,这已是众所周知的事实,而本公司的产品在工业界一直享负盛名,全因我们严格控制产品质量,以及能为客户提供多元化的产品选择。为确保每一项产品均保持最佳的品质,我们由生产用的原材料开始,便作出严格的检查和鉴别;生产过程中更细心监管,一丝不苟;还经常对制成品进行分析和测试,以求进一步改善和控制品质,为求做到精益求精。为了令每一产品均到达一定的品质要求,品质监察专家经常对产品进行各种类型的测试,包括红外线分光计、气相色谱仪、渗透性测试、抗湿度测试、灌水测试和对塑料影响测试等。而且,本公司更严格遵守[国际标准组织](ISO 9000)对产品所制定的优质生产技术引导,严格控制产品质量。 CRC业务国际化经过37年多来的努力,美国CRC工业公司已发展成一间跨国性的化工产品集团,属下的分公司或认可代理商遍及澳洲、比利时、加拿大、芬兰、法国、德国、香港、意大利、日本、马来西亚、新西兰、西班牙、瑞典、和美国各地。迄今,CRC的产品远销世界超过120多个国家,而CRC公司在美国、澳洲、欧洲区的总部均有自己的生产厂房和分销中心,供应当地市场的需要。 CRC亚洲区总部的诞生近年来亚洲地区的经济,特别是中国工商业,发展蓬勃,市场对各种工业设备的维修和保养的化工产品需求日渐殷切。有鉴于此,CRC正全力拓展以中国为中心的亚洲区化工产品市场,九五年中,CRC在香港设立了亚洲区的总部-CRC工业(亚洲)有限公司,以便更好地统筹和指挥该区的业务。 CRC工业(亚洲)有限公司的成立,不仅是CRC业务发展的重要里程碑,而且还是CRC对亚洲区客户的一个优质服务的承诺;CRC不仅提供切合实际需要的高品质的工业品,我们的专业技术员更会跟进每一客户的情况,提供专业可靠的产品知识,引进先进的专业维护和保养技术,从而推动中国的其他亚洲地区工商业的技术和经济发展。 郑重声明:鉴于目前中国大陆市场仿冒产品屡禁不止,CRC公司将仅向从正规渠道获得本公司产品的客户提供相关的技术支持和服务。本公司对所有来自非正规渠道的产品不作质量或可靠性担保,同时也不承担任何相关的法律责任。敬请谅解! |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。