Matlab中执行循环冗余校验_第1页
Matlab中执行循环冗余校验_第2页
Matlab中执行循环冗余校验_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab中执循环冗余校验录如何对数值的位执循环冗余校验 (CRC)。CRC于检测数字系统中数据传输中的错误。发送数据时,会对数据附加个短校验值。该校验值通过数据中的位进多项式除法获得。当接收到数据时,重复执多项式除法,并将结果与校验值进较。如果结果不同,则数据在传输过程中被破坏。动计算校验值从个16位进制数开始,这是要传输的报:1101100111011010要获得校验值,请将该数除以多项式x3+x2+x+1。可以其系数来表此多项式:1111。除法是分步骤进的,每步后多项式除数都与数值中最左边的1对齐。由于除以四项多项式的结果有三位(通常除以长度为 n+1 的多项式会产长度为n的校验值),

2、对该数值追加000以计算余数。每步,结果都对正在操作的四个位进按位XOR,所有其他位保持不变。第个除法是-0010100111011010 000每个后续除法运算都基于前步的结果,因此第个除法是-0001010111011010 000旦被除数全为零,则除法完成。整个除法运算过程(包括上述两步在内)如下余数位110是该报的校验值。以编程式计算校验值在MATLAB 中,可以通过按位运算执上述运算来获得校验值。先,为报和多项式除数定义变量。使符号32位整数,以便有额外的位可供余数使。divisor = 0b1111u32;divisorDegree = 3;接下来,初始化多项式除数。使dec2bi

3、n显结果的位。divisor = bitshift(divisor,messageLength-divisorDegree-1);1111000000000000现在,移动除数和报,使它们具有正确的位数(报为16位,余数为3位)。dec2bin(remainder)ans =1101100111011010000使for 循环执循环冗余校验的除法步骤。循环每步都会前进位,因此请包含项校验来查看当前位是否为1。如果当前位是1,则执除法步骤;否则,循环前进位并继续。remainder = bitshift(remainder,1);end将余数的位向右移动,以获得运算的校验值。CRC_check_

4、value = bitshift(remainder,-messageLength);ans =110检查报完整性可以重复上述除法运算以使校验值来验证报的完整性。但是,不要使余数000开始,应使校验值110。如果报没有错误,则除法的结果将为零。重置余数变量,并使按位OR将CRC校验值添加到余数位。使bitset翻转个位值,以在报中引个错误。remainder = bitshift(message,divisorDegree);remainder = bitor(remainder,CRC_check_value);remainder = bitset(remainder,6);dec2bin(remainder)ans =1101100111011110110执CRC除法运算,然后检查结果是否为零。for k = 1:messageLengthif bitget(remainder,messageLength+divisorDegree)remainder = bitxor(remainder,divisor);endremainder = bitshift(remainder,1);en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论