- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CRC原理的理解与编程
CRC原理的理解与编程
CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则(例如是CRC-4、CRC-8、CRC-16、CRC-CCITT、CRC-32等标准)产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。16位的CRC码产生的规则是先将要发送的二进制序列数Serial Data左移16位,右面补0(既乘以2^16)后,(4位的CRC码就左移4位,看下面例子)再除以一个生成多项式(就是对应不同CRC标准,有不同的生成多项式,如下表1),最后所得到的余数既是CRC码。
表1 下表中列出了一些见于标准的CRC资料:
名称 生成多项式 简记式* 应用举例 CRC-4 x4+x+1 ?? 3 ITU G.704 CRC-12 x12+x11+x3+x+1 ?? ?? CRC-16 x16+x15+x2+1 8005 IBM SDLC CRC-ITU** x16+x12+x5+1 1021 ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS CRC-32 x32+x26+x23+...+x2+x+1 04C11DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS CRC-32c x32+x28+x27+...+x8+x6+1 1EDC6F41 SCTP * 生成多项式的最高幂次项系数是固定的1,故在简记式中,将最高的1统一去掉了,如04C11DB7实际上是104C11DB7。
** 前称CRC-CCITT。ITU的前身是CCITT。先举个简单的例子,以CRC-4标准为例,说明CRC编码过程。
设待发送的数据t(x)为12位的二进制数据100100011100;CRC-4的生成多项式为g(x)=x^4+x+1,阶数r为4,即10011(生成多项式中x用1表示)。首先在t(x)的末尾添加4个0构成x^4*t(x),即是左移4位(CRC-16就是左移16位),此后,待发送的数据块变为1001000111000000。然后用g(x)(其值为10011)去除x^4*t(x)(左移4位后的待发送数据)【实际是XOR异或运算,不是除法】,不管商是多少,只需要求得余数y(x),即为待发送数据对应的CRC值。下表为给出的除法过程:
最后的4位的余数就是待发送数据对应的CRC-4编码。从上面表中可以看出,CRC 编码实际上是一个循环移位的模 2 运算。对 CRC-4,我们假设有一个 5 bits 的寄存器,通过反复的移位和进行 CRC的除法,那么最终该寄存器中的值去掉最高一位就是我们所要求的余数。所以可以将上述步骤用下面的流程描述:
//reg 是一个 5 bits 的寄存器 把 reg 中的值置 0. 把原始的数据后添加 r个 0. While (数据未处理完) Begin If (reg 首位是 1) reg = reg XOR 0011.?? 把 reg 中的值左移一位,读入一个新的数据并置于 register的 0 bit 的位置。 End reg 的后四位就是我们所要求的余数。常见的CRC校验法有3种,直接计算法,查表法,半查表法。下面是几种CRC16的C语言代码,自己理解分析一下
首先是WINAVR中的crc16.h中的库函数(路径在C:\WinAVRavr\include\util\crc16.h)
??? //Optimized CRC-XMODEM calculation.
??? //Polynomial: x^16 + x^12 + x^5 + 1 (0x1021)br??? //Initial value: 0x0
??? //This is the CRC used by the Xmodem-CRC protocol.
??? //code??? uint16_t??? crc_xmodem_update (uint16_t crc, uint8_t data)??? {??????? int i;
??????? crc = crc ^ ((uint16_t)data 8);??????? for (i=0; i8; i++)??????? {??????????? if (crc 0x8000)??????????????? crc = (crc 1) ^ 0x1021;??????????? else??????????????? crc = 1
您可能关注的文档
- (DCR2626)常用功能及其配置.doc
- (哈工程机械考研机械设计题库)第7章 齿轮传动.doc
- (摄像头的工作原理(获取视频数据))摄像头视频采集压缩及传输.doc
- 0000基于层次分析法的南通出口主导产业选择.doc
- 000000a0急诊感染的现状与对策.doc
- -开题报告 注水肉”快速检测系统研究.doc
- 000000b2HIV感染者围手术期脓毒症相关危险因素分析.doc
- 004-3种不锈钢多辊冷轧机的使用比较.doc
- 013-2009中国联通基于UICC平台的Java卡互操作性技术规范v10.doc
- (宋明玉)迈氏干涉仪教案.doc
- 禁毒工作共建协议书8篇.docx
- 江西省信丰中学高中历史 专题一 古代中国经济的基本结构与特点 4古代中国的经济政策说课稿 人民版必修2.docx
- 版高考地理 第2单元 世界地理概况 第1课时 世界的陆地和海洋说课稿.docx
- 2024-2025年高中化学 专题1 第2单元 第2课时 常见物质的检验说课稿 苏教版必修1.docx
- 高中语文 第四单元 第12课 飞向太空的航程说课稿1 新人教版必修1.docx
- 简单入股合同最新简单入股合同8篇.docx
- 租房关于卫生问题补充协议书5篇.docx
- 六合新城经济适用房二期莉湖畔小区供电管沟工程合同5篇.docx
- 关于无固定期限劳动的合同范本5篇.docx
- 编排节目策划协议书6篇.docx
最近下载
- 2025年长沙民政职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
- 数字医疗项目可行性报告.docx
- 110kV变电站预试定检综合项目施工专项方案.doc VIP
- 2025年21年一消防工程师继续教育题 .pdf VIP
- 2024年南昌工学院单招职业技能测试题库word版.docx VIP
- 非煤矿山露天采石场主要风险分级表.pdf VIP
- Unit 2 Making a Difference Understanding ideas The Well that changed the world 课件-2023-2024学年高中英语外研版(2019)必修第三册.pptx
- 防治责任范围矢量化操作流程.docx
- 2025学年湖南省怀化市重点中学高三5月模拟(一模)考试数学试题 .pdf VIP
- 湘少版-英语-四下-Unit1_单元测试卷.pdf
文档评论(0)