电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

课程设计报告用模2除法计算CRC码的CRC校验软件设计

11页
  • 卖家[上传人]:公****
  • 文档编号:474519883
  • 上传时间:2023-02-26
  • 文档格式:DOC
  • 文档大小:74KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、用模2除法计算CRC码的CRC校验软件设计一、设计目标1)掌握用模二除法实现CRC码的计算方法; 2)掌握用C语言计算CRC码的算法; 3)熟练并掌握C语言在通信网络中的编程实现方式及功能;4) 学会用C语言实现文件之间的读取和写入,实现共享传送功能;5)熟悉VC6.0的运行环境,熟练掌握在其中运行编译的各个步骤。二、设计原理和方法1、CRC简介及原理:CRC码为循环冗余校验码,基本表示方式为(n,k),其中n为数据位数,k为校验码位数。CRC码校验的基本思想是利用线性编码理论,在发送端根据要传送的(n,k)位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。CRC的处理方法是:发送方以g(x)去除t(x),得到余数作为CRC校验码。校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。CRC校验可以100地检测

      2、出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。所以CRC的生成多项式的阶数越高,那么误判的概率就越小。CCITT建议:2048 kbit/s的PCM基群设备采用CRC-4方案,使用的CRC校验采用16位CRC校验。在IBM的同步数据链路控制规程SDLC的帧校验序列FCS中,使用CRC-16。CRC的本质是模-2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC的除数用生成多项式来表示。最常用的CRC码的生成多项式有CRC16,CRC32. 32位CRC码的产生的规则是先将要发送的二进制序列数左移32位后,再除以一个多项式(生成多项式G(x)),最后得到的余数既是CRC码,如式(2-1)式所示,其中C(X)表示(n-k)位的二进制序列数,G(X)为多项式,Q(X)为商(整数),R(X)是余数(既CRC码)。(2-1) 求CRC码所采用模2加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。本课程设计中使用的生成多项式是由欧洲CRC32,即:

      3、g(x)= x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1接收方将接收到的二进制序列数(包括信息码和CRC码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误。用软件计算CRC码时,接收方可以根据接收到的信息码求CRC码,比较结果和接收到的CRC码是否相同。例如信息位是“”、多项式g(x)=1001,用模二除法生成CRC码的过程如下所示:在信息位“”后面增加3个“0”,即“11011011000”用“11011011000”模二除g(x)=1001,r(x)=011;得到的余数“011”即为“”的CRC校验码;将其加在原数据后面,即“11011011011”,通过发送端发送,在接收端收到数据再除以多项式g(x),若余数为0,则传输正确,去掉后三位即得到需要的数据“”;若信道有干扰,使接收到的数据不是“”,除以多项式g(x)后余数不为0,则传输失败,等待重传。2、模二除法实现CRC校验的基本原理用计算机编程实现CRC校验码,采用寄存器移位的方法。假设待测数据是1101 0110 11,生成项是10011,假设有一个4

      4、 bits的寄存器,通过反复的移位和进行CRC的除法,最终该寄存器中的值就是我们所要求的余数。 3 2 1 0 Bits +-+-+-+-+ Pop - | | | | | - Augmented message(已加0扩张的原始数据) +-+-+-+-+ 1 0 0 1 1 = The Poly 生成项依据这个模型,我们得到了一个最最简单的算法:把register中的值置0.把原始的数据后添加w个0.While (还有剩余没有处理的数据)Begin把register中的值左移一位,读入一个新的数据并置于register最低位的位置。If (如果上一步的左移操作中的移出的一位是1)register = register XOR Poly.End实际上就是模拟XOR除法的过程,即被测数据一位一位放到寄存器中来做除法。 比如生成项是10011,则生成的余数是4位XXXX,所以寄存器是4位。待测数据是1101 0110 11,后面加上0000,即扩张4位,以容纳余数。只要与生成项的0011做XOR就好了,最高位经过XOR肯定出0,可不用最高位。过程如下:待测数据先移4位即1101到寄存器中,

      5、准备开始除法。第 1 次除法:寄存器中是1101,先从寄存器移出最高位1,移进下一位待测数据位0,则寄存器中是1010,由于移出的位是1,则需要与生成项的0011做XOR,得到1001,即做了第1 次除法后,寄存器中是1001,这个就是余数。第2次除法:寄存器中是1001,从寄存器移出最高位1,移进下一位待测数据位1,则寄存器中是0011,由于移出的位是1,则需要与生成项的0011做XOR,得到0000,即做了第2次除法后,寄存器中是0000,这个就是余数。第3次除法:寄存器中是0000,从寄存器移出最高位0,移进下一位待测数据位1,则寄存器中是0001,由于移出的位是0,则需要不做XOR,直接下一步移位。也可以等同于:本次的商是0,0*生成项0,即是0000与寄存器做XOR,得到寄存器的数不变,还是0001,即做了第3次除法后,寄存器中是0001,这个就是余数。第4次除法:寄存器中是0001,从寄存器移出最高位0,移进下一位待测数据位0,则寄存器中是0010,由于移出的位是0,则需要不做XOR,直接下一步移位。第5次除法:移位,不用做XOR,得到寄存器中是0101第6次除法:移位,不

      6、用做XOR,得到寄存器中是1011第7次除法:移位,移出的位是1,又要与生成项做XOR了一直做下去。直到最后,寄存器中的就是整个计算后的余数了。即CRC值。3、用模二除法实现CRC32的要解决的问题首先,要实现CRC32的计算,要解决CRC码的存放问题,而目前的微机高级语言,如Ansi C、Bland C、Mieromfl C,整数类型的数据最大为无符号的长整数仅4字节32位,正好可存放CRC码。其次,要解决生成多项式的表示问题,CRC-32共有33位,大于无符号的长整数的数据范围,由于CRC32的最高位为i, 由第2节CRC码的模2除法计算过程的分析可知,可以省去此位用一个无符号长整数常量表示之。第三,要解决被除数的表示,我们把被除数看成是一个无符号整数和一些字节组成,每次除时,参加运算的是这个无符号整数和这些字节的最左边一个位组成, 当这个无符号整数的最高位为1时,需要作模2运算:移出这个最高位,从字节中补上一位,进行异或运算。 我选用的编译软件Visual C+6.0中的_int64能够容纳64位数据,因此以上问题可以很轻松的解决。超出32位范围的数据定义为_int64的变量即可

      7、解决溢出的问题。三、设计的功能1、环境要求:Windows2000/XP/7;C;信息交换内容为文本文件;信息交换方式为共享文件2、编码要求:生成多项式为CRC-323、功能要求:能在两台计算机机上运行程序,一台产生CRC码,另一台校验。四、程序流程图发送端(电脑甲) -文件共享- 接收端(电脑乙)开始开始读取code.txt到code输入数据存入code接收的数据模二除多项式g(x)得到余项result计算CRC余项result=0?将CRC余项接在code的后面赋给codeCRC存入crc.txtcode存入code.txt传输失败传输正确,显示信息码结束结束五、程序清单1.发送端电脑甲源程序:#include #include #include #include #include #include #include _int64 crc; /定义全局变量crc_int64 create(_int64 data,_int64 POLY,int crcbitnumber) /生成crc码子函数_int64 regi = 0x0; / 使寄存器为0_int64 data_temp;da

      8、ta_temp=data;int databitnumber=32; /定义数据位数data= 0; - cur_bit ) /处理64 次(32 比特待测数据32 比特扩展0),前32次是加载数据 if ( ( ( regi crcbitnumber ) & 0x0001 ) = 0x1 ) regi = regi POLY; regi cur_bit ) & 0x0001; /加载待测数据1比特到tmp中,tmp只有1比特 regi |= tmp; /这1比特加载到寄存器中if ( ( ( regi crcbitnumber ) & 0x0001 ) = 0x1 ) regi = regi POLY; /做最后一次XORprintf(crc=%xn,regi);crc=regi;data_temp=32;data_temp=data_temp+regi;return data_temp;void main(),*lp_crc;_int64 code;_int64 data;_int64 POLY=0x104C11DB7;int crcbitnumber=32;printf(*CRC experiments*n);printf(请输入数据n);scanf(%I64x,&data);code=create(data,POLY,crcbitnumber);printf(code=%I64xn,code);lp_code=fopen(D:FScode.txt,w); /建立文件lp_crc = fopen(D:FScrc.txt,w);

      《课程设计报告用模2除法计算CRC码的CRC校验软件设计》由会员公****分享,可在线阅读,更多相关《课程设计报告用模2除法计算CRC码的CRC校验软件设计》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.