CRC编码实验实验报告
CRC检验码实验报告

CRC 检验码实验报告一 实验题目(1) 实现CRC 的校验过程,生成多项式为CRC12,要求设计简单的图形界面。
(2) 完成内容包括:输入发送数据序列,根据生成多项式完成余数计算,输出带有校验码的发送数据序列。
模拟正确发送、出现离散的一位错、离散的两位错以及长度小于12的突发错,给出相应的输出。
二 实验工具及环境实验语言:JAVA 实验工具:eclipese 三 实验思路 (1) 实验原理CRC 校验码的编码方法是用待发送的二进制数据t(x)移位生成多项式位数,其结果r(x)除以生成 多项式g(x),将最后的余数与上r(x)作为CRC 校验码。
(2) 实验思路 1.实现过程分实验类图2.计算CRC 检验码:1)用户输入发送数据比特序列A;2)默认为12位CRC 生成多项式,用户可根据需要自行修改CRC 生成多项式B; 3)根据B 的位数,对A 进行左移位相应的位数(相当于做2^n 的乘积运算),形成C;实现计算CRC 校验码与实现模拟出错的算法类选择应用主界面类,包括模拟CRC 出错与计算CRC 校验计算CRC 校验码界面模拟CRC 出错4)对生成多项式和发送数据流进行异或运算,计算余数D;5)余数D+C就形成了带有CRC检验码的数据比特序列。
3. CRC检验码出错模拟:用户输入原CRC检验码的数据比特序列A,选择待模拟的错误类型;程序给出相应模拟出错结果。
四实验结论1.优点1)实现了多种生成多项式CRC检验码的生成与检验2)检验与计算分开,功能明确3)可对用户输入数据进行检查,动态交互2.缺点1)在检验CRC校验码时,只能有用户手动输入数据,不能粘贴复制,比较麻烦2)页面布局与外观有待提高。
ADIJ链路层实验——基于CRC编码的检错程序的实现实验报告

实验九、基于CRC编码的检错程序的实现实验报告序号:姓名:学号:成绩指导老师:一、实验目的1、通过实验,掌握CRC编码和解码的原理。
2、掌握基于CRC编码的差错检测技术。
二、实验指导现在计算机网络广泛采用的差错检测技术是基于CRC(cyclic redundancy check)循环冗余检测编码,CRC也称为多项式编码(polynomial code),CRC算法非常容易用硬件实现。
CRC编码操作如下:对给定的数据D,发送者选择r个附加位,追加到D的末尾,形成d+r位的新位型,该位型正好能被G模2除尽。
其中,G称为生成器。
CRC编码算法实现:1、选择生成多项式G,其最高次方为r,即r+1位的二进制位串2、计算D·2r, 即在数据D后面补r个0,构成d+r位的位串3、按模2除法求(D·2r/G)的余数R,即:4、从D·2r中模2减去R,得到新的数据T,即加了CRC的帧三、实验要求1、设置一个d位的数据D,r+1位的多项式G,生成CRC码,并把此CRC码作为数据帧进行传送。
2、编写两个子程序,分别实现CRC编码和CRC解码,在主函数中对子程序进行调用。
解码子程序应能根据解码情况判断出接收到的数据帧是否出错,并给出提示。
3、要求分别以正确和错误的数据来检验此检错程序。
4、将编写程序的源代码加必要注释和程序运行结果一起填入实验报告中。
提示:1、编写程序时数据直接用二进制数,可能用到位操作符^(异或)和<<(左移)。
2、在设置错误的编码时,错误位数最好不要超过r+1位。
四、程序代码:#include <stdio.h>int crc(int D[],int G[], int x,int n) //该函数用于进行异或运算{int i,j,k,result;printf("以下输出异或运算的全过程,最后一行为余数\n");for (k=0;k<=x-1;k++) //x=d+rprintf(" %d",D[k]); //输出补后的数for (i=0;i<=x-n+1;i++) //输出异或运算的全过程{if (D[i]==1) //当首位为1时进行异或{for (j=0;j<=n-1;j++) //n=g{if (D[i+j]==G[j]) //G[]的第j+1个数和D[]的第i+j+1个数相同时D[i+j]=0; //异或运算,相同为,不同为else D[i+j]=1;}printf("\n"); //输出每次异或后的结果for (k=0;k<=x-1;k++)printf(" %d",D[k]); //输出最后余数}}for (k=0;k<=x-1;k++)result=D[k];return result;}void main (){int d,g,n,m,result;g;int D[100],M[100],G[100],i,j; //D[]余数,M[]被除数printf("请输入生成器长度=");scanf("%d",&g);printf("\n请输入生成器为(空格输入):\n");for (j=0;j<=g-1;j++) //将输入的除数按位存储在数组G[j]scanf("%d",&G[j]);printf("请选择你要进行的操作:1,CRC编码2,CRC解码:\n");scanf("%d",&n);if(n==1){printf("请输入原始数据长度=");scanf("%d",&d);printf("\n请输入原始数据为(空格输入):\n");for (i=0;i<=d-1;i++) //将输入的数据按位存储进数组M[i]scanf("%d",&M[i]);for (i=0;i<=d-1;i++)D[i]=M[i]; //将数组M[i]中的数据赋值给D[i]for (i=d;i<=d+g-2;i++) //将数据左移r位,后面补r+1个零D[i]=0;crc(D,G,d+g-1,g); //调用函数,进行异或运算for (i=0;i<=d-1;i++)D[i]=D[i]+M[i]; //将g-1位的余数加到数据后面,即为发送方发送的完整数据printf ("\n发送方发送的数据为:");for (i=0;i<=d+g-2;i++)printf ("%d",D[i]);printf ("\n");}if(n==2){printf("请输入你要进行校验的数据长度=");scanf("%d",&m);printf("请输入要进行校验的数据为(空格输入):\n");for (i=0;i<=m-1;i++)scanf("%d",&M[i]);result=crc(M,G,m,g); //调用函数,进行异或运算,并返回结果if(result==0)printf("\n数据完全正确\n");if(result!=0)printf("\n数据有错误\n");}}五、运行结果:测试数据:生成器:110原始数据:10101生成的发送数据为:1010101当要校验数据为1010101时数据正确。
CRC实验报告

沈阳工程学院学生实验报告实验室名称:信息工程系软件实验室实验课程名称:计算机网络实验项目名称:CRC校验编程实现班级:软本094姓名:王诗娟陈志银刘云峰学号:02、10、14实验日期:2012年03月26日实验台编号:15 指导教师:郑秀颖批阅教师(签字):成绩:一.实验目的掌握并理解CRC校验算法,编程实现CRC。
二.实验内容1.设计CRC校验算法。
.2.编程实现CRC校验。
三.实验前的准备1.复习、熟悉CRC校验算法。
2.编写好程序,上机调试。
四.实验要求及实验软硬件环境【基本要求】1.掌握并理解CRC校验算法。
2.编程实现CRC。
3.完成实验报告。
【实验组织方式】小组实验。
【实验条件】配置有java运行环境的微机一台,MyEclipse。
五.实验步骤1.掌握并理解CRC校验算法。
2.设计发送界面。
3.编程实现CRC校验。
4.设计接收界面。
5.调试并实现程序。
6.参加答辩,并撰写实验报告。
六.主要程序部分(Java语言实现)1.发送端主界面MainFrame.java 的主要代码如下所示。
jb.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {String input1 = new String(jtf1.getText());String input2 = new String(jtf2.getText());if("".equals(input1) || "".equals(input2) || input1 == null || input2 == null){JOptionPane.showMessageDialog(jf, "请输入。
", "错误", JOptionPane.ERROR_MESSAGE);}else{ if(dealer.legal_binary(input1)){if(dealer.legal_g_p(input2)){String checkSum = dealer.get_cheksum(input1, input2);String endResult = new String(input1+checkSum);jtf3.setText(checkSum);jtf4.setText(endResult);try {String tem =endResult + "." +input2;fo.inputFile(tem);} catch (Exception e1) {e1.printStackTrace();}}else{JOptionPane.showMessageDialog(jf, "输入的生成多项式不正确", "错误", JOptionPane.ERROR_MESSAGE);}}else{JOptionPane.showMessageDialog(jf, "输入不正确", "错误", JOptionPane.ERROR_MESSAGE);} }}});jb2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {jp1.setVisible(false);GetMessage gm = new GetMessage();String str="";try {str = fo.outputFile();} catch (Exception e) {e.printStackTrace();}String L="";String R="";int k= str.length();for (int i = 0; i < str.length(); i++){if (str.substring(i, i + 1).equals(".")){L=str.substring(0,i).trim();R=str.substring(i+1,k).trim();}}gm.jtf1.setText(L);gm.jtf2.setText(R);String res = dealer. get_cheksum (str, R);gm.jtf3.setText(res);gm.setVisible(true);jf.add(gm);}});2.对发送和接收的处理类Dealer.java的主要代码如下所示。
循环冗余校验编解码电路设计实验报告

循环冗余校验编解码电路设计实验报告一、引言循环冗余校验(CRC)是一种常用于检测和校正数据传输错误的技术。
在通信领域,CRC编解码电路是一种重要的硬件设计,用于验证数据传输的准确性。
本实验旨在通过设计循环冗余校验编解码电路,探索其工作原理和实际应用。
二、背景知识1.循环冗余校验原理循环冗余校验利用多项式除法的性质来实现数据校验。
发送端将数据和校验值进行运算得到余数,并将余数附加到数据后一起发送。
接收端通过对接收到的数据进行除法运算,得到的余数判断数据是否正确。
2.CRC编码过程–发送端:将数据进行扩展,加上用于校验的位数,并使用预定的生成多项式进行除法运算得到余数,将余数附加在数据后面发送出去。
–接收端:接收到数据后,再次进行除法运算,得到的余数为0则说明数据传输正确,否则说明存在错误。
3.CRC解码过程–发送端:发送数据和余数。
–接收端:接收数据和余数,使用与发送端一样的生成多项式进行除法运算,得到的余数判断数据是否正确。
三、实验设计与实现1. 实验目的了解循环冗余校验的原理,并通过设计和实现循环冗余校验编解码电路加深对其理解。
2. 实验器材与材料•FPGA开发板:用于搭建实验电路•Vivado软件:用于设计和验证电路•扁平电缆:用于连接FPGA开发板和外部设备3. 实验步骤1.了解所用的生成多项式,确定校验位数和除法运算方式。
2.使用Vivado软件创建工程,选择适合的FPGA开发板型号。
3.设计循环冗余校验编码模块,并使用Verilog语言进行描述。
4.设计循环冗余校验解码模块,并使用Verilog语言进行描述。
5.设计测试模块,用于生成测试数据和验证结果。
6.进行RTL级仿真,验证电路设计的正确性。
7.将设计文件综合、实现和下载到FPGA开发板。
8.在FPGA开发板上测试编解码电路的功能和性能。
9.分析实验结果,总结经验和教训。
四、实验结果与分析1. RTL级仿真结果在RTL级仿真中,我们生成了不同的输入数据,并通过编解码电路计算得到校验值和余数。
实验九基于CRC编码的检错程序的实现

软件学院实验报告课程:计算机网络原理实验任课教师:姓名:学号:专业:成绩:实验九、链路层实验——基于CRC编码的检错程序的实现实验报告一、实验目的1、通过实验,掌握CRC编码和解码的原理。
2、掌握基于CRC编码的差错检测技术。
二、实验指导现在计算机网络广泛采用的差错检测技术是基于CRC(cyclic redundancy check)循环冗余检测编码,CRC也称为多项式编码(polynomial code),CRC算法非常容易用硬件实现。
CRC编码操作如下:对给定的数据D,发送者选择r个附加位,追加到D的末尾,形成d+r位的新位型,该位型正好能被G模2除尽。
其中,G称为生成器。
CRC编码算法实现:1、选择生成多项式G,其最高次方为r,即r+1位的二进制位串2、计算D·2r, 即在数据D后面补r个0,构成d+r位的位串3、按模2除法求(D·2r/G)的余数R,即:4、从D·2r中模2减去R,得到新的数据T,即加了CRC的帧三、实验要求1、设置一个d位的数据D,r+1位的多项式G,生成CRC码,并把此CRC码作为数据帧进行传送。
2、编写两个子程序,分别实现CRC编码和CRC解码,在主函数中对子程序进行调用。
解码子程序应能根据解码情况判断出接收到的数据帧是否出错,并给出提示。
3、要求分别以正确和错误的数据来检验此检错程序。
4、将编写程序的源代码加必要注释和程序运行结果一起填入实验报告中。
提示:1、编写程序时数据直接用二进制数,可能用到位操作符^(异或)和<<(左移)。
2、在设置错误的编码时,错误位数最好不要超过r+1位。
源代码:#include<stdio.h>void crc(int A[],int G[], int x,int n)//编码程序{int i,j,k;printf("\n\t\t");for (k=0;k<=x-1;k++)printf(" %d",A[k]); //输出补后的数for (i=0;i<=x-n+1;i++){if (A[i]==1) //当首位为时进行异或{for (j=0;j<=n-1;j++){if (A[i+j]==G[j])A[i+j]=0; //异或运算,相同为,不同为else A[i+j]=1;}printf("\n\t\t"); //输出每次异或后的结果for (k=0;k<=x-1;k++)printf(" %d",A[k]); //输出余数}}}#include<stdio.h>void cr(int M[],int A[],int m,int n)//检验解码程序{int k=0,i;for(i=0;i<=m-1;i++){if(M[i]!=A[i]){printf("第%d位出现错误\n",i+1);k++;}}if(k==0){printf("数据完全正确\n");}}int main (){int m,n;int A[20],M[20],G[20],i,j;printf("请输入M[x]的长度m=");scanf("%d",&m);printf("请输入G[x]的长度n=");scanf("%d",&n);printf("\n请输入M[x]=\n");for (i=0;i<=m-1;i++)scanf("%d",&M[i]);printf("\n请输入G[n]=\n");for (j=0;j<=n-1;j++)scanf("%d",&G[j]);for (i=0;i<=m-1;i++)A[i]=M[i];for (i=m;i<=m+n-2;i++)A[i]=0; //对被除数进行补crc(A,G,m+n-1,n); //调用异或函数for (i=0;i<=m-1;i++)A[i]=A[i]+M[i];printf ("\n\n结果为:");for (i=0;i<=m+n-2;i++)printf ("%d",A[i]);printf ("\n");printf("\n请输入你想要进行解码的数据:\n");for (i=0;i<=m-1;i++)scanf("%d",&M[i]);cr(M,A,m,n);}编码:解码:数据出错:。
CRC实验报告 2011-06-16

数电实验报告题目 CRC校验原理仿真实验班级 29001040班姓名刘奎学号 2903003015 时间 2011年5月25日地点英才实验学院创新实验室指导教师李尚泽摘要本实验利用循环校验码(CRC)校验原理通过对通信系统发射端的原始数据生成CRC校验位,并按照RS-232的传输协议组帧,在传输过程中加入随机的噪声,在接收端对RS-232传输帧格式进行解析,并完成CRC校验。
整个过程在Modelsim上仿真实现。
关键词CRC校验仿真目录第一章实验原理与任务 (2)第二章设计思路、方法及方案 (3)第三章 FPGA模块程序设计与仿真 (3)第四章结束语 (4)附录 (4)第一章 实验任务与原理1、任务指标利用VHDL 完成16比特CRC 校验程序的设计,并能利用modelsim 仿真得到电路的时序波形。
2、实验要求在了解CRC 校验原理的前提下,在发送端对原始数据生成CRC 校验位,并按照RS-232的传输协议组帧,在接收端对RS-232传输帧格式进行解析,并完成CRC 校验。
整个过程在Modelsim 上仿真实现。
3、原理阐述循环校验码(CRC )是数据通信领域中常用的一种差错校验码,其特点是信息字段和校验字段的长度可以任意选定。
生成CRC 校验码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’或‘1’的多项式一一对应,例如‘1010111’对应的多项式为6421x x x x ++++。
CRC 码集选择的原则:若设码字长度为N ,信息字段长度为K ,校验字段长度为R ,则N=K+R ;对于CRC 码集中的任一码字,存在且仅存在一个R 次多项式g(x)使得:()()()()()RV x A x g x x m x r x ==+其中m(x)为K 次信息多项式,r(x)为R-1次校验多项式,g(x)称为生成多项式。
V(x)为发送的信息加码字多项式。
2012()...RR g x g g x g x g x=++++发送方通过指定的g(x)产生CRC 码字,接收方则通过g(x)来验证CRC 码字,若传输码字多项式V(x)能除尽g(x),则传输正确。
计算机网络实验 CRC校验

XXXXXXXX大学(计算机网络)实验报告实验名称 CRC校验实验时间年月日专业姓名学号预习操作座位号教师签名总评一、实验目的:掌握CRC冗余码校验的基本原理,编程实现CRC冗余码校验。
二、实验原理: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)=x R m(x)+r(x);其中:m(x)为K次信息多项式,r(x)为R-1次校验多项式,g(x)称为生成多项式:g(x)=g0+g1x+g2x2+...+g(R-1)x(R-1)+g R x R发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。
4、CRC校验码软件生成方法:借助于多项式除法,其余数为校验字段。
发送方:发出的传输字段为: 1 0 1 1 0 0 1 1 0 10信息字段校验字段接收方:使用相同的生成码进行校验:接收到的字段/生成码(二进制除法)如果能够除尽,则正确,三、实验内容: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数据处理完毕。
CRC校验码编码实验

实验四CRC校验码编码实验班级:电子C073 姓名:赵宣学号:075584一、实验目的1、复习C++语言基本编写方法,熟悉面向对象编程方法。
2、学习CRC编码基本流程, 学会调试循环冗余校验码编码程序。
3、根据给出资料,掌握CRC校验码的编码原理,重点掌握按字节(Byte)编码方法二、实验内容与原理(一)实验原理:1. CRC 校验码介绍CRC 校验的基本思想是利用线性编码理论,在发送端根据要传送的k 位二进制码序列,以一定的规则产生一个校验用的监督码(CRC 码)r 位,并附在信息后边,构成一个新的二进制码序列数共 (k+r) 位,最后发送出去。
在接收端,则根据信息码和CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。
16 位的CRC 码产生的规则是先将要发送的二进制序列数左移16 位(乘以216)后,再除以一个多项式,最后所得到的余数既是CRC 码。
求CRC 码所采用模2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。
接收方将接收到的二进制序列数(包括信息码和CRC 码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误。
2.按位计算CRC一个二进制序列数可以表示为求此二进制序列数的CRC 码时,先乘以216后(左移16位),再除以多项式G(X) ,所得的余数就是所要求的CRC 码。
可以设:其中Q n (X) 为整数, R n (X) 为16位二进制余数,将上式代入前式得:再设:其中Qn-1(X) 为整数, Rn-1(X) 为16位二进制余数,继续代入前式,多次迭代得到:根据CRC 的定义,很显然,十六位二进制数R0(X) 即是要求的CRC 码。
3.按字节计算CRC对于一个二进制序列数可以按字节表示为下式,其中Bn(X) 为一个字节(共8位):求此二进制序列数的CRC码时,先乘以216后(左移16位),再除以多项式G(X),所得的余数即是所要求的CRC 码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11001———————除数
————
11110
1001
————
11111
11001
————
000100——————余数
2)
input=[1 0 1 1 0 0 1 1];crc_no=4;
k = size(input,2);
generator = zeros(1,crc_no+1);
output = zeros(1,k+crc_no);
end
output = [input output(1:crc_no)];
n = size(input,2);
output = input(1:n-crc_no);
forii = 1:n-crc_no
if(input(1) == 1)
input(1:crc_no+1) = mod((input(1:crc_no+1)+generator),2);
而发送信息位 1111,可转换为数据多项式为C(x)=x^3+x^2+x+1。
2)、生成多项式
是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
3.完成练习题。
4.实验结果分析
练习题:
1.选择CRC的生成多项式为G(X)=X4+X3+1. 求二进制序列10110011的CRC校验码。
要求:
1)将计算过程写在实验报告中
2)用程序验证结果正确性
解:
1)
11010100——————商
————————————
101100110000————————被除数
程序运行结果:
output =
0 1 1 1 1 0 1 1 0 1 0 0
output_after_check =
0 1 1 1 1 0 1 1
indicate =
1
5.心得体会
1.本次试验我学会了基本的CRC编码流程
2.了解了模二除的计算方法是异或运算,即相同为0不同为1。
3.同时在·实验中又暴露出我对编码的生疏,遇到了一些问题,通过网上查阅和请教同学解决了问题。在以后实验中应该多发现问题,锻炼动手实践的能力,也有助于更好的理解信息论的原理,还能运用在以后通信工程中。
实验三CRC编码实验实验报告
班级:通信162班
姓名:李浩坤学号:163977
实验名称:CRC编码实验实验日期:6.7
1.实验目的
1、复习matlab的基本编写方法。
2、学习CRC编码基本流程, 学会调试循环冗余校验码编码程序。
3、根据给出的资料,掌握CRC校验码的编码原理。
2.实验原理及内容
原理:
1.CRC码简介:
应满足以下条件:
a、生成多项式的最高位和最低位必须为1。
b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。
c、不同位发生错误时,应该使余数不同。
d、对余数继续做模2除,应使余数循环。
3)、模2除(按位除)
模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:
1)、多项式与二进制数码
多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。
多项式包括生成多项式G(x)和信息多项式C(x)。
如生成多项式为G(x)=x^4+x^3+x+1, 可转换为二进制数码11011。
generator = [1 1 0 0 1];%D^4+D^3+1
output(1:k)=input;
forii = 1:k
if(output(1) == 1)
output(1:crc_no+1) = mod((output(1:crc_no+1)+generator),2);
end
output = [output(2:end) output(1)];
a、用除数对被除数最高几位做模2减,没有借位。
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。
c、一.实验步骤
1.了解crc编码原理,分析理解检验crc程序的含义。
2.运行mycrc编码程序,观察结果,计算验证程序是否正确。
2.循环冗余校验码(CRC)的基本原理:
在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
几个需要提前了解的基本概念:
endinput = [input(2:end) input(1)];
end
ifsum(input) == 0
indicate = 0;
else
indicate = 1;
end
end
output = crc_add(input, crc_no)
[output_after_check, indicate] =crc_check(output,crc_no)