循环冗余校验(cyclicredundancy check,CRC)对传输序列进行一次规定的除法操作,将除法操作的余数附加在传输信息的后面。在接收端,也对收到的数据做相同的除法。如果接收端除法得到的结果其余数不是零,就表明发生了错误。

循环冗余校验是将要发送的数据位序列当作一个多项式f(x)的系数,f(x)的系数只有1与0两种形式。在发送方用收发双方预定的约定的生成多项式G(x)去除,求得一个余数多项式。将余数多项式加到数据多项式之后发送到发送端。这里的除法是错位不减的模2减法,相当于异或运算。接收端采用同样的生成多项式G(x)去除接收到的数据多项式f'(x),如果传输无差错,则接收端除法运算f'(x)/G(x)的结果,其余数为零。否则就认为出现了差错。

基于除法的循环冗余校验,其计算量大于奇偶与求和校验,其差错检测的有效性也比较高,它能够检测出大约99.95%的错误。

程序流程图

MATLAB程序

本文程序以CRC-16 (X^16+X^15+X^2+1)为例

%输入想要转化的数据
data1=input('Please input the num U want to transform:');%将十进制数转化成二进制数输出
dec=[];
i=1;
while(data1)if mod(data1,2)dec=[1,dec];elsedec=[0,dec];enddata1=(data1-mod(data1,2))./2;
end
disp('The below is your num in binary system')
display(num2str(dec))% 校验多项式CRC-16
polynomial = [1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1]; %进行异或运算
lpol= length(polynomial);
data_dec=dec;
lnum=length(data_dec);
data=[data_dec,zeros(1,lpol-1)];
lpol= length(polynomial);
n=find(data==1,1);
while n<=lnum
for i=1:lpolif polynomial(i)==data(n+i-1)data(n+i-1)=0;elsedata(n+i-1)=1;end
end
n=find(data==1,1);
end%拼接计算结果并显示
result=[data_dec,data(lnum+1:end)];
disp('The polynomial used to CRC is X^16+X^15+X^2+1')
disp('The transform result is')
disp(num2str(result))%进行结果校验
result2=result;
n=find(result2==1,1);
while n<lnum+lpol-1
for i=1:lpolif polynomial(i)==result2(n+i-1)result2(n+i-1)=0;elseresult2(n+i-1)=1;end
end
n=find(result2==1,1);
end
disp('The CRC result is')
disp(num2str(result2))

代码运行效果

Please input the num U want to transform:20201503113

The below num is your num in binary system

1 0 0 1 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1

The polynomial used to CRC is X^16+X^15+X^2+1

The transform result is

1 0 0 1 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 1

The CRC result is

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

MATLAB实现CRC校验码的计算相关推荐

  1. Python—CRC校验码,计算2进制校验数据的校验码

    有一些网站可以实现crc校验,但几乎均为国际标准没法修改,缺少自定义功能,在CSDN看到这篇文章的修改版,但我认为自定义功能仍然不完善,所以优化出一个二进制信息码,多项式不限的自定义CRC校验码程序. ...

  2. Modbus-RTU通讯协议中CRC校验码的计算步骤及算法代码

    在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算. CRC计算方法是: 1. 预置1个16位的寄存器为十六进制FFFF(全1),此寄存器为CRC寄存器 ...

  3. modbus协议crc校验c语言代码,MODBUS通信协议中CRC校验码的计算(C/C++)实现

    错误检测的方法 错误校验(CRC)域占用两个字节,包含了一个16位的二进制值.CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较 ...

  4. 32位crc校验码程序_CRC码计算及校验原理的最通俗诠释

    CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的.其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注 ...

  5. STM32开发 -- CRC校验码

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/79518638 通信协议里有CRC校验码,计算从报文的起始字节到报文内容最后一 ...

  6. CRC校验码生成逻辑的实现原理详解——结合C语言和Verilog语言代码分析

    文章目录 前言 一.CRC校验码的计算 1.CRC模型 2.CRC计算 步骤1:输入数据与初始值模2加并左移 步骤2:被除数与多项式模2除 二.CRC校验码生成逻辑的C语言实现 1.实现代码 2.代码 ...

  7. 【计算机网络】CRC校验码的代码实现

    实验目的 应用所学知识,编写代码实现CRC计算和验证功能,并验证CRC编码检验的成功率. 实验步骤 ①我们先进行CRC校验码的设计部分,我使用的是Python程序设计语言. CRC校验的核心原理就是模 ...

  8. CRC校验码计算,以常用CRC-8为例

    CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定. CRC校验原理:在要发送的帧后面附加一个数,生成一个新帧发送给接收端.它要使所生成的新帧 ...

  9. C语言CRC校验码计算与校验

    循环冗余校验(cyclicredundancy check,CRC)对传输序列进行一次规定的除法操作,将除法操作的余数附加在传输信息的后面.在接收端,也对收到的数据做相同的除法.如果接收端除法得到的结 ...

最新文章

  1. 3种mysql的储存机制_MySQL三种InnoDB、MyISAM和MEMORY存储引擎对比
  2. 基于simulink的QAM-WIMAX的系统仿真
  3. python网页交互引擎_【Kivy Python UI 框架】模板化交互界面引擎
  4. html5不支持的属性,HTML5 常用语法一览(列举不支持的属性)
  5. pandas keyerror: 标签_Hinton新作!越大的自监督模型,半监督学习需要的标签越少...
  6. centos7中yum源安装mysql_centos7下使用yum安装mysql
  7. html链接抓取,【SEO工具】网页超链接提取工具(无语网站链接抓取器)
  8. C语言使用信号量(Linux)
  9. 电脑录屏软件哪个好?高清流畅的录屏方法在这里!
  10. vue+elementui 注册验证用户名是否存在
  11. 2元参数matlab图,二元作用参数 - 仿真模拟 - MATLAB - 小木虫论坛-学术科研互动平台...
  12. Ubuntu下编译OpenHarmony
  13. excel怎么把竖排变成横排_PS虚线字怎么制作-PS虚线字绘制教程详解
  14. bzoj1296【SCOI2009】粉刷匠
  15. 两条线段相切弧_怎样绘制一个与两条直线相切的圆弧
  16. 什么是三极管的截止饱和放大
  17. 中望cad2017专业版|中望cad2017sp专业版下载
  18. 七年级上册英语|好看又容易画的思维导图
  19. [附源码]SSM计算机毕业设计电子病历信息管理系统JAVA
  20. element自定义表单label

热门文章

  1. 用数据告诉你,今年考研上岸有多难
  2. 预防网络诈骗PPT模板
  3. android黑盒子调用,[原创]Android群控黑盒调用 - Sekiro食用手册
  4. PS - 产品精修(洗面奶)教程
  5. Ubuntu 设置双网卡,实现内外网同时可用
  6. 如何使用ocr文字识别软件
  7. Rhino6安装Weaverbird
  8. 普通高中计算机装备标准,普通高中教育技术装备标准Ⅰ.doc
  9. Android系统-应用权限白名单
  10. TCP的状态:SYN, FIN, ACK, PSH, RST, URG