0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

循环冗余校验码(CRC)的基本原理及生成方法

冬至子 来源:临菲信息技术港 作者:临菲信息技术港 2023-11-03 15:49 次阅读

在数据传输过程中,很难实现无差错传输。差错传输导致接收方收到的数据发生错误。为尽量提高接收数据的正确率,在接收数据之前需要对数据进行差错检测

CRC是一种用于校验通信链路上数字传输准确性的计算方法。其原理是附加在数据序列之后的检验码与数据序列的内容之间存在着某种特定的关系,如果数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏,由于CRC检错能力极强,且检测成本较低,成为数据通信领域最为普遍的校验方式。

1 定义

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。

CRC是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

2 基本概念

多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。

多项式包括生成多项式G(x)和信息多项式C(x)。

如生成多项式为G(x)=x^4+x^3+x+1, 可转换为二进制数码11011。

而发送信息位 1111,可转换为数据多项式为C(x)=x^3+x^2+x+1。

生成多项式

是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。

在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。

应满足以下条件:

a、生成多项式的最高位和最低位必须为1。

b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。

c、不同位发生错误时,应该使余数不同。

d、对余数继续做除,应使余数循环。

CRC校验码位数

CRC校验码位数 = 生成多项式位数 - 1。注意有些生成多项式的简记式中将生成多项式的最高位1省略了。

3 基本原理

CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。

如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。

4 生成步骤

1、将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数。

2、将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方。

3、用生成多项式(二进制数)对信息码做除,得到R位的余数。

4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。

5 生成方法

设需要发送的信息为M = 1010001101,CRC8=X5+X4+X2+1产生多项式对应的代码为P = 110101,R=5。

在M后加5个0为计算序列:101000110100000,然后对P做模2除法运算,得余数r(x)对应的代码:01110。故实际需要发送的数据是101000110101110。其中CRC校验码就为:01110。

图片

6 电路图

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    792

    浏览量

    41593
  • 数据通信
    +关注

    关注

    2

    文章

    427

    浏览量

    33733
  • CRC效验
    +关注

    关注

    0

    文章

    30

    浏览量

    1093
收藏 人收藏

    评论

    相关推荐

    如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码

    在“使用IAR Embedded Workbench和MCU的CRC模块来检查代码的完整性”一文中,介绍了如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码
    的头像 发表于 10-27 11:49 1532次阅读
    如何在IAR Embedded Workbench中配置<b class='flag-5'>生成</b>对应代码区域的<b class='flag-5'>CRC</b><b class='flag-5'>校验码</b>

    循环冗余校验码的单片机及CPLD 实现

    循环冗余校验(CRC)是一种可靠性很高的串行数据校验方法。介绍
    发表于 04-16 14:19 16次下载

    电话网远程通信中CRC校验码的设计及实现

    本文介绍了基于电话网远距离分布式测控系统的通信方法,重点介绍了传输协议中CRC 循环校验码校验原理,CR
    发表于 08-12 10:24 18次下载

    循环冗余校验码---CRC

    循环冗余校验码---CRC   二进制信息位串沿一条信号线逐位在部件之间或计算机之间传送称为串行传送。
    发表于 10-13 16:52 7158次阅读
    <b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验码</b>---<b class='flag-5'>CRC</b><b class='flag-5'>码</b>

    crc校验基本原理

    本内容介绍了crc校验基本原理,CRC几个基本概念,CRC
    发表于 12-21 16:55 4691次阅读

    基于FPGA的循环冗余校验实验系统

    文章首先分析了循环冗余校验码的功能,在此基础上提出了基于FPGA的实现方法,详细阐述了CRC校验
    发表于 03-26 13:52 1753次阅读
    基于FPGA的<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>实验系统

    CRC校验码算法的研究与实现

    为了提高实际通信中检查信号传输错误的能力,提高和推广CRC校验技术,本论文用逻辑代数知识、按模运算、代数知识和C语言编程工具设计了几种具体实用的CRC校验码的计算
    发表于 05-28 15:41 0次下载

    CRC-16校验码生成

    C#编写的CRC校验码生成小程序,简洁明了,如果有需要的话,大家可以下载了。
    发表于 05-06 15:06 8次下载

    CRC基本原理及其两个重要性质的介绍及FPGA实现

    CRC基本原理 在串行数据流的最有效的检错方案是CRC(Cyclic Redundancy check)循环冗余检验,CRC
    发表于 09-29 15:38 23次下载
    <b class='flag-5'>CRC</b><b class='flag-5'>基本原理</b>及其两个重要性质的介绍及FPGA实现

    crc循环冗余校验码算法

     循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散
    发表于 12-04 10:11 2.3w次阅读
    <b class='flag-5'>crc</b><b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验码</b>算法

    荐读:基于FPGA 的CRC校验码生成

    循环冗余校验,是一种数字通信中的常用信道编码技术。其特征是信息段和校验字段的长度可以任意选定。 2.CRC
    的头像 发表于 06-13 11:18 6468次阅读
    荐读:基于FPGA 的<b class='flag-5'>CRC</b><b class='flag-5'>校验码</b><b class='flag-5'>生成</b>器

    CRC校验码并行计算的FPGA实现

    用软件实现 CRC 校验码计算很难满足高速数据通信的要求 ,基于硬件的实现方法中 ,有串行经典算法 LFSR 电路 以及由软件算法推导出来的其它各种并行计算方法。以经典的LFSR 电路
    发表于 03-28 09:34 30次下载
    <b class='flag-5'>CRC</b><b class='flag-5'>校验码</b>并行计算的FPGA实现

    CRC校验码的多种Verilog实现方式

    CRC循环冗余校验码(Cyclic Redundancy Check),检错码。
    的头像 发表于 06-21 15:03 3346次阅读
    <b class='flag-5'>CRC</b><b class='flag-5'>校验码</b>的多种Verilog实现方式

    简述循环冗余crc校验方法的工作原理

    循环冗余CRC校验是一种常用的错误检测和纠正方法,广泛应用于通信和存储设备中,用于确定数据
    的头像 发表于 12-20 11:27 1166次阅读

    CRC循环冗余校验)应用举例

    CRC循环冗余校验)应用举例
    的头像 发表于 05-16 16:12 1029次阅读