CRC检验码实验报告

合集下载

CRC编码实验实验报告

CRC编码实验实验报告
循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较, 若两个CRC值不同,则说明数据通讯出现错误。
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除检测和确定错误位置。

数据通信与计算机网络实验:CRC校验

数据通信与计算机网络实验:CRC校验

实验2:CRC冗余循环校验码实验目的1.了解信道编码在通信系统中的重要性;2.掌握CRC循环码编译码的原理;3.掌握CRC循环码检错纠错原理;实验原理1.实验原理框图2.框图说明:循环码编码过程:数字终端的信号经过串并变换后,进行分组,分组后的数据再经过循环码编码,数据由4bit变为7bit。

实验内容一、循环码编码规则验证通过改变输入数字信号的码型,观测延时输出,编码输出以及译码输出,验证循环码编译码规则,并对比汉明码编码规则有何异同。

1.关电,按表格所示进行连线。

2.开电,设置主控菜单,选择【主菜单】→【通信原理】→【循环码】。

(1)将2号模块的拨码开关S12#拨为10100000,拨码开关S22#、S32#、S42#均拨为00000000。

(2)将6号模块的拨码开关S16#拨为0010,即编码方式为循环码。

拨码开关S36#拨为0000,即无错模式。

按下S26#系统复位键。

3.此时系统初始状态为:2号模块提供32K编码输入数据,6号模块进行循环编译码,无差错插入模式。

4.实验操作及波形观测。

(1)用示波器观测TH5处编码输出波形。

注:为方便观测,可以以TH4处延时输出作为输出编码波形的对比观测点。

此处观测的两个波形是同步的。

(2)拨动拨码开关S1前四位观测编码输出并填入下表中:二、循环码检纠错性能检验1. 将6号模块S3按照插错控制表中的拨码方式,逐一插入不同错误,按下6号模块S2系统复位。

重复步骤3~4,验证循环码的检纠错能力。

2. 将示波器触发源通道接TP2帧同步信号,示波器另一个通道接TP1插错指示,可以观测插错位置。

三、实验报告常用的G(3)生成多项式有:G(X)=X3+X2+1 G(X)=X3+X+1 G(X)=X3+11、根据实验测试记录,完成实验表格;2、结合实验波形分析实验电路的工作原理,简述其工作过程;3、分析循环码实现检错及纠错的原理。

CRC实验报告

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校验
PPP协议受到数据帧后要对数据部分连同FCS字段做CRC校验,结果若不为“0”,则可以肯定数据在传输过程中出错;结果若为“0”,则只能说明很大概率上数据在传输的过程中没有出错,而不是百分之百不出错。

这个概率与CRC校验时采用的除数有关,我们把使用某个除数做CRC校验,结果为“0”且数据实际不出错的概率称为该除数的有效性。

本次试验要求同学们以实验的方法验证CRC-16的有效性。

2、实验内容:
(1)随机取1个128位数A。

(2)将A与CRC-16做除法得余数B,A*216+B保存在C中。

(3)随机修改C中的1个比特,重新与CRC-16做除法运算,记录余数为0的二进制组合。

(4)随机修改C中的2个比特,重新与CRC-16做除法运算,记录余数为0的二进制组合。

(5)随机修改C中的3个比特,重新与CRC-16做除法运算,记录余数为0的二进制组合。

3、实验报告内容:
(1)CRC校验原理。

(2)实验记录
(3)随机产生的128位数(以16进制表示)。

(4)除法运算的算法描述。

(5)随机修改C中的1个比特,重新与CRC-16做除法运算,余数为0的二进制组合。

(6)随机修改C中的2个比特,重新与CRC-16做除法运算,余数为0的二进制组合。

(7)随机修改C中的3个比特,重新与CRC-16做除法运算,余数为0的二进制组合。

4、实验结果分析:
理论上CRC-16的有效性(不一定100%有效)。

CRC校验码编码实验

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 码。

循环冗余校验编解码电路设计实验报告

循环冗余校验编解码电路设计实验报告

循环冗余校验编解码电路设计实验报告在数字通信中,循环冗余校验(CRC)是一种常用的错误检测和纠正技术,它通过在数据包中添加校验位来检测数据传输过程中的错误。

为了更好地理解和应用CRC技术,我们进行了循环冗余校验编解码电路设计的实验。

我们需要了解CRC的基本原理。

CRC是通过对数据进行除法运算,得到余数然后将余数添加到数据包中作为校验位。

接收端在接收到数据包后,再次进行除法运算,如果余数为0,则说明数据传输正确,否则说明数据传输过程中出现了错误。

在实验中,我们首先设计了CRC编码电路。

编码电路的主要功能是对输入的数据进行除法运算,然后将余数作为校验位添加到数据包中。

我们使用了Verilog HDL语言来实现CRC编码电路,在编码过程中需要考虑多项式的选取、除法运算的实现等问题。

接下来,我们设计了CRC解码电路。

解码电路的主要功能是对接收到的数据包进行除法运算,然后判断余数是否为0,从而确定数据传输是否正确。

同样,我们使用Verilog HDL语言来实现CRC解码电路,需要考虑多项式的选取、除法运算的实现等方面。

在实验中,我们还需要对设计的CRC编解码电路进行仿真和验证。

通过仿真可以检查电路的功能是否符合设计要求,验证其在不同情况下的正确性和稳定性。

我们可以使用仿真工具如ModelSim等来进行仿真,观察电路的输入输出情况,验证其正确性。

我们需要在实际硬件平台上实现设计的CRC编解码电路,并进行性能测试。

通过性能测试可以评估电路在实际应用中的性能表现,包括速度、准确性等方面。

我们可以使用FPGA等硬件平台来实现CRC编解码电路,并进行性能测试,验证其在实际应用中的可靠性。

总的来说,通过本次实验,我们深入了解了循环冗余校验的原理和实现方法,掌握了CRC编解码电路的设计与实现技术。

这将有助于我们在数字通信领域中更好地应用CRC技术,提高数据传输的可靠性和安全性。

希望通过不懈的努力和实践,我们能够进一步完善和优化CRC编解码电路,为数字通信技术的发展做出贡献。

循环冗余校验编解码电路设计实验报告

循环冗余校验编解码电路设计实验报告

循环冗余校验编解码电路设计实验报告在数字通信领域中,循环冗余校验(CRC)是一种常用的错误检测和纠正技术。

通过在数据中添加冗余校验位,接收方可以根据这些校验位检测出数据传输过程中是否发生了错误,并且还可以纠正部分错误。

本实验旨在设计一个循环冗余校验编解码电路,以验证CRC技术的可靠性和有效性。

一、实验背景循环冗余校验是一种基于多项式运算的错误检测和纠正技术,广泛应用于数据传输和存储系统中。

其原理是将数据视为多项式,并通过除法运算生成校验位,接收方根据收到的数据和校验位再次进行除法运算,以验证数据的完整性。

CRC技术具有高效性和低成本的优点,因此在现代通信系统中得到了广泛应用。

二、实验设计设计一个基于CRC技术的编解码电路,包括数据发送端和数据接收端两部分。

在发送端,将数据和校验位进行拼接,并通过CRC生成多项式进行运算,得到最终的发送数据。

在接收端,接收到数据后,同样进行CRC多项式运算,以验证数据的准确性,并在有错误时进行纠正。

通过实验验证CRC技术在数据传输中的可靠性和有效性。

三、实验步骤1. 确定CRC生成多项式和初始寄存器值。

2. 在发送端,将数据和校验位进行拼接,并进行CRC多项式运算。

3. 发送带有校验位的数据。

4. 在接收端,接收数据后,进行CRC多项式运算,验证数据的准确性。

5. 如果有错误发生,进行纠正操作。

6. 测试不同数据长度和错误位情况下的CRC编解码性能。

四、实验结果经过多次实验,我们验证了设计的CRC编解码电路的可靠性和有效性。

在大多数情况下,CRC技术能够有效检测和纠正数据传输中的错误,提高了数据传输的可靠性和稳定性。

同时,我们也发现CRC 技术在处理大量数据时,能够快速进行校验,减少了传输延迟。

五、结论通过本次实验,我们深入了解了循环冗余校验技术的原理和应用,设计并验证了一个CRC编解码电路,证明了CRC技术在数据传输中的重要性和有效性。

CRC技术不仅可以检测和纠正数据传输中的错误,还可以提高数据传输的稳定性和可靠性,为数字通信系统的发展提供了重要支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)页面布局与外观有待提高。

相关文档
最新文档