当前位置: 首页 > news >正文

集成电路学习:什么是CRC循环冗余校验

一、CRC:循环冗余校验

        CRC(Cyclic Redundancy Check),即循环冗余校验,是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的快速算法。它主要用于检测或校验数据传输或保存后可能出现的错误。CRC利用除法及余数的原理实现错误侦测的功能,具有原理清晰、实现简单等优点。

二、CRC的基本原理

        CRC算法基于模二运算,即二进制系数的多项式运算。在CRC算法中,传输的数据被视为一个位数很长的数,并通过模二除法(即不考虑进位和借位的二进制除法)除以一个预设的二进制数(通常称为生成多项式或除数)。得到的余数(即CRC码)作为校验数据附加到原数据后面一起发送。接收方在收到数据后,用相同的生成多项式进行模二除法,如果余数为0,则认为数据在传输过程中没有发生错误;如果余数不为0,则说明数据有误。

三、CRC的应用场景

        CRC在计算机网络通信、数据存储等领域有着广泛的应用。例如,在无线电通信、SATA硬盘数据传输等系统中,CRC-32校验是最常用的检错手段之一。由于CRC算法检验的检错能力极强,且检测成本较低,因此在编码器和电路的检测中也得到了广泛使用。

四、CRC的编码规则

        CRC码由信息码n位和校验码k位构成。k位校验位拼接在n位数据位后面,n+k为循环冗余校验码的字长,又称这个校验码(n+k,n)码。n位信息位可以表示成为一个报文多项式M(x),最高幂次是xn-1。约定的生成多项式G(x)是一个k+1位的二进制数,最高幂次是xk。将M(x)乘以xk,即左移k位后,除以G(x),得到的k位余数就是校验位。这里的除法运算是模2除法,即当部分余数首位是1时商取1,反之商取0。然后每一位的减法运算是按位减,不产生借位。

五、CRC的优势

1、高检错能力:

        CRC可以检测出所有奇数位错、所有双比特的错以及所有小于、等于校验位长度的突发错。

2、快速校验:

        CRC算法可以在极短的时间内完成数据校验码的计算,并迅速完成纠错过程。

3、低成本:

        相对于其他校验方法,CRC算法的检测成本较低。

        综上所述,CRC是一种高效、可靠的错误检测算法,在计算机网络通信和数据存储等领域发挥着重要作用。

http://www.mrgr.cn/news/15801.html

相关文章:

  • cucumber 怎么启动API
  • 对mozjpeg中的函数名进行替换
  • 用矩阵乘法的底层原理来理解“特征融合”
  • Android强制设置所有应用显示方向,忽略应用本身的设置
  • 【面试题系列Vue06】Vue 单页应用与多页应用的区别
  • 损失函数、成本函数cost 、最大似然估计
  • 五,Spring Boot中的 Spring initializr 的使用
  • Runway删库跑路,真的run away了!
  • net6 core 接入nacos 实现服务注册入门使用,心跳检测和负载均衡
  • 从零开始:全面掌握C++ Qt开发框架基础
  • C#——扩展方法
  • 【2024 CCF编程能力等级认证(GESP)C++ 】一级大纲
  • pytorch view 函数介绍
  • 【大模型项目实战】练完这些项目,天下没有再难倒你的大模型
  • 集成电路学习:什么是DAC数模转换器
  • 从开题到答辩:ChatGPT超全提示词分享!(下)【建议收藏】
  • 【C++】智能指针
  • leetcode刷题-二叉树07
  • 咬破那片叶,看天
  • 企业需求管理好帮手:10款工具深度解析