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

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

3天内不再提示

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

科技绿洲 来源:网络整理 作者:网络整理 2023-12-20 11:27 次阅读

循环冗余码(CRC)校验是一种常用的错误检测和纠正方法,广泛应用于通信和存储设备中,用于确定数据在传输或存储过程中是否出现错误。

CRC校验方法的工作原理可以分为以下几个步骤:

  1. 数据和生成多项式的补位
    首先,需要将需要进行CRC校验的数据进行补位操作。CRC校验算法通常以二进制的形式工作,因此需要将原始数据转换为二进制。同时,生成多项式也需要进行补位操作,使其与数据的位数相对应。

例如,如果数据为11101,生成多项式为1101,则将数据进行位补齐,变为1110100,生成多项式不需要补位。

  1. 计算CRC值
    接下来,使用位移法对补位后的数据进行CRC位的计算。位移法的基本思想是,将数据位与生成多项式的各项进行异或操作,并根据异或结果进行位移。位移操作会将当前的校验结果左移一位,并将下一位数据与生成多项式进行异或。

具体操作过程如下:

  • 初始化CRC寄存器为全零
  • 将数据的第一个位与CRC寄存器的最高位进行异或运算,结果存回CRC寄存器
  • 将CRC寄存器左移一位,低位补零
  • 判断CRC寄存器最高位是否为1,如果是,则将CRC寄存器与生成多项式进行异或运算,并将结果存回CRC寄存器
  • 重复以上过程,直到数据的所有位都处理完毕
  1. 得到CRC校验值
    当所有数据位都处理完毕后,CRC寄存器中存储的结果即可作为CRC校验值。该校验值可以附加在原始数据之后进行传输或存储,接收方在接收数据后进行CRC检验,通过比对计算出的校验值与接收到的校验值是否一致,来验证数据是否出现错误。

需要注意的是,CRC校验方法并不能纠正错误,只能检测错误。如果数据中存在错误,校验结果将与接收方的计算结果不一致,接收方可以根据这一结果判断数据是否正确。如果校验结果与接收方计算结果一致,可以认为数据没有发生错误。

CRC校验方法的优点是简单、高效,具有较高的错误检测能力。它可以检测出大部分单位错误和一些连续错误,而且计算过程简单,适合硬件实现。但是,CRC校验方法也有一些缺点,它无法检测出少数特定类型的错误,如偶数个位错和某些位错模式。另外,CRC校验方法的错误检测能力与生成多项式的选择有关,需要根据具体情况选择适用的生成多项式。

值得一提的是,CRC校验方法在信息安全领域也有着广泛的应用。通过选择适当的生成多项式和其他参数,可以将CRC方法应用于数据完整性校验、数字签名以及密码学中的伪随机数生成等重要任务中。

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

    关注

    30

    文章

    5028

    浏览量

    117722
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87600
  • CRC校验
    +关注

    关注

    0

    文章

    81

    浏览量

    15030
  • 存储设备
    +关注

    关注

    0

    文章

    136

    浏览量

    18483
收藏 人收藏

    评论

    相关推荐

    labview DAQ----MODBUS CRC16循环冗余校验

    说明:CRC循环冗余错误校验计算方法 CRC—16(循环
    发表于 11-07 10:46

    PSoC 4 循环冗余校验 (CRC)

    循环冗余校验 (CRC) 组件的默认用途是根据任意长度的串行比特流计算 CRC。在数据时钟的上升沿上对输入数据进行采样。在启动前,
    发表于 07-04 11:30

    CRC循环冗余校验的算法

    想问下51单片机和所有嵌入式中一个很基本也很常见的问题,CRC循环冗余校验的算法中生成多项式为什么要那样取(有个生成多项式的表格),如果信息段中一位或多位传输错误,
    发表于 01-21 21:02

    转:循环冗余校验CRC)算法入门引导

    写给嵌入式程序员的循环冗余校验CRC)算法入门引导前言CRC校验
    发表于 08-01 18:32

    循环冗余校验CRC)算法入门引导

    循环冗余校验CRC)算法入门引导
    发表于 08-17 12:40

    如何利用循环冗余校验CRC)计算单元进行传输数据的校验

    循环冗余校验CRC)计算单元是什么?如何利用循环冗余校验
    发表于 12-15 06:04

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

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

    循环冗余校验码---CRC

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

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

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

    STM32L4循环冗余校验模块(CRC)介绍

    STM32L4循环冗余校验模块(CRC)介绍 有兴趣的可以参考下
    发表于 12-25 10:38 27次下载

    循环冗余校验奇偶校验累加和校验等知识分享

    CRC校验循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到
    的头像 发表于 11-08 09:31 8475次阅读
    <b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>奇偶<b class='flag-5'>校验</b>累加和<b class='flag-5'>校验</b>等知识分享

    crc校验方法及示例

     CRC循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段
    发表于 12-04 09:35 1.4w次阅读
    <b class='flag-5'>crc</b><b class='flag-5'>校验方法</b>及示例

    crc循环冗余校验码算法

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

    CRC循环冗余校验简介

    CRC 是Cyclic Redundancy Check的缩写,循环冗余校验,用于校验数据传输的完整性。一般情况下在数据发送前计算
    的头像 发表于 04-24 13:04 3883次阅读
    <b class='flag-5'>CRC</b><b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>简介

    32位可编程循环冗余校验(CRC)

    电子发烧友网站提供《32位可编程循环冗余校验(CRC).pdf》资料免费下载
    发表于 09-25 11:22 0次下载
    32位可编程<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>(<b class='flag-5'>CRC</b>)