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

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

3天内不再提示

这个CRC计算单元是如何基于固定的生成多项式(0x4C11DB7)来获取给定数据缓冲区的CRC码的?

丙丁先生的自学旅程 来源:丙丁先生的自学旅程 作者:丙丁先生的自学旅 2024-05-16 16:06 次阅读

CRC(循环冗余校验)是一种根据数据产生简短固定位数校验码的常用方法,主要用来检查数据传输或者保存后是否有错误。CRC计算单元的工作过程如下:
1. 首先,CRC计算单元会初始化一个寄存器(通常是一个32位或64位的寄存器),初始值是生成多项式(在这个问题中是0x4C11DB7)。
2. 然后,CRC计算单元会逐位处理输入的数据缓冲区。对于每一个数据位,它都会将寄存器的当前值与这一位进行异或操作。
3. 如果结果的最高位(第31位或第63位)是1,那么CRC计算单元就会将寄存器与生成多项式进行模2除法,并将余数保留在寄存器中。
4. 这个过程会持续到所有的数据位都被处理完。最后,寄存器中的值就是CRC码。

注意,这个过程中的关键步骤就是异或操作和模2除法,它们都是计算机科学中的基本操作。

审核编辑 黄宇

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

    关注

    31

    文章

    5308

    浏览量

    119975
  • crc
    crc
    +关注

    关注

    0

    文章

    199

    浏览量

    29432
收藏 人收藏

    评论

    相关推荐

    内存缓冲区和内存的关系

    内存缓冲区和内存之间的关系是计算机体系结构中一个至关重要的方面,它们共同协作以提高数据处理的效率和系统的整体性能。
    的头像 发表于 09-10 14:38 404次阅读

    如何计算BMHD中的逆CRC值?

    更新各自的 CRC 和反向 CRC 值。 * 使用 IEEE 802.3 标准中定义的 CRC-32 多项式生成
    发表于 05-31 06:43

    使用C语言实现的CRC计算单元的例子

    使用C语言实现的CRC计算单元的例子
    的头像 发表于 05-16 16:16 856次阅读

    用STM32L05xCRC模块做modbus CRC16计算,结果不正确是为什么?

    根据参考文档,CRC模块可以配置CRC多项式,应该可以做(Modbus)CRC16计算,自己试了一下,发现结果不正确,总是一个
    发表于 04-29 06:50

    交换机与路由器缓冲区:寻找完美大小

    *本文系SDNLAB编译自瞻博网络技术专家兼高级工程总监Sharada Yeluri领英 在路由器和交换机中,缓冲区至关重要,可以防止网络拥塞期间的数据丢失。缓冲区到底要多大?这个问题
    的头像 发表于 04-11 16:56 1063次阅读
    交换机与路由器<b class='flag-5'>缓冲区</b>:寻找完美大小

    新版CubeMX CRC校验模块没有Config吗?

    使用crc16 怎么办呢,多项式和起始值又是在哪里设置.我在HAL库文件里也没找到这部分的内容。有没有熟悉的朋友帮忙指点下,该怎么用啊。谢谢啦!
    发表于 04-03 08:04

    交换芯片缓冲区大小是什么

    交换芯片缓冲区大小并不一定是固定的。缓冲区的设计和实现会根据芯片的具体型号、规格以及应用场景的不同而有所差异。一些交换芯片可能具有固定大小的缓冲区
    的头像 发表于 03-18 14:42 526次阅读

    使用UART FIFO缓冲区时,缓冲区中的数据有时会损坏的原因?

    1 TX FIFO 缓冲区中的一个字节从 UART 0 TX FIFO 更改为一个字节(见下图)。 据我所见,问题发生在FIFO硬件的某个地方,因为软件发送的数据是正确的。 UART 设置
    发表于 03-06 06:59

    RA MCU中的CRC模块和使用方法

    瑞萨RA单片机硬件CRC计算单元采用固定多项式发生器计算
    发表于 02-26 11:45 835次阅读
    RA MCU中的<b class='flag-5'>CRC</b>模块和使用方法

    如何使用内在函数 __crc32 (uint32b、uint32a)?

    0x4a090e98,这是正确的(我用一些 crc 计算器仔细检查了一下) 但是,一旦我给了 b 任何其他值,我就无法再有预期的 crc 返回值了。 参数 b 到底代表什么?
    发表于 01-25 06:50

    fpga报告crc故障是什么意思

    方法,通过对发送的数据进行计算并附加到数据末尾,接收方能够使用相同的校验算法检测传输中的错误。CRC可以检测多种不同类型的错
    的头像 发表于 01-04 11:06 1310次阅读

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

    循环冗余CRC)校验是一种常用的错误检测和纠正方法,广泛应用于通信和存储设备中,用于确定数据在传输或存储过程中是否出现错误。 CRC校验方法的工作原理可以分为以下几个步骤:
    的头像 发表于 12-20 11:27 1164次阅读

    西门子博诊断缓冲区的使用方法

    可从在线和诊断视图中“诊断”文件夹的“诊断缓冲区”组中读出 CPU 的诊断缓冲区
    的头像 发表于 12-11 10:24 3911次阅读
    西门子博诊断<b class='flag-5'>缓冲区</b>的使用方法

    瑞萨RA MCU中CRC模块的使用方法

    传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
    的头像 发表于 12-07 10:23 1952次阅读
    瑞萨RA MCU中<b class='flag-5'>CRC</b>模块的使用方法

    使用malloc建立缓冲区时出现错误怎么解决?

    ,我不知道现在这个已知系统的中断频率,所以我做了一个偷懒的想法,先把输入数据3秒的数据放在自建的缓冲区,再将这个数据处理后再输出,延时大概3
    发表于 11-30 07:39