CRC编码实验实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
循环冗余码校验 英文名称为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除检测和确定错误位置。
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)
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)