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

    文章

    5336

    浏览量

    120244
  • crc
    crc
    +关注

    关注

    0

    文章

    199

    浏览量

    29461
收藏 人收藏

    评论

    相关推荐

    内存缓冲区和内存的关系

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

    C2000™器件中的CRC引擎

    电子发烧友网站提供《C2000™器件中的CRC引擎.pdf》资料免费下载
    发表于 08-30 10:38 0次下载
    <b class='flag-5'>C</b>2000™器件中的<b class='flag-5'>CRC</b>引擎

    如何计算BMHD中的逆CRC值?

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

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

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

    Stm32采用环形缓冲区接收rk3588的数据代码

    Stm32采用环形缓冲区接收rk3588的数据代码
    的头像 发表于 05-15 10:10 580次阅读

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

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

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

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

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

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

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

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

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

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

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

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

    PSoC™ 5LP时增加TX缓冲区大小会损坏堆怎么解决?

    0x20007800-0x1fff8db8 = 0xea48 = > 59976 字节。 如果我将 UART_2 (stderr) 的 TX 缓冲区大小增加到 1024 字节,则第一个请求 256 字节
    发表于 02-26 06:58

    没有办法通过FX3固件检查缓冲区是卡住了还是已满?

    使用多通道 DMA 获得输出 1080p60 所需的 FX3 数据带宽。 在随附的照片中,你可以看到多次写入,然后突然间 WATERMARK 和 READY 同时断言。 有没有办法通过FX3固件检查缓冲区是卡住了还是已满? 发
    发表于 02-23 08:01

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

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

    fpga报告crc故障是什么意思

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