CRC(循环冗余校验)是一种根据数据产生简短固定位数校验码的常用方法,主要用来检查数据传输或者保存后是否有错误。CRC计算单元的工作过程如下:
1. 首先,CRC计算单元会初始化一个寄存器(通常是一个32位或64位的寄存器),初始值是生成多项式(在这个问题中是0x4C11DB7)。
2. 然后,CRC计算单元会逐位处理输入的数据缓冲区。对于每一个数据位,它都会将寄存器的当前值与这一位进行异或操作。
3. 如果结果的最高位(第31位或第63位)是1,那么CRC计算单元就会将寄存器与生成多项式进行模2除法,并将余数保留在寄存器中。
4. 这个过程会持续到所有的数据位都被处理完。最后,寄存器中的值就是CRC码。
注意,这个过程中的关键步骤就是异或操作和模2除法,它们都是计算机科学中的基本操作。
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
寄存器
+关注
关注
31文章
5589浏览量
129069 -
crc
+关注
关注
0文章
205浏览量
30624
发布评论请先 登录
相关推荐
热点推荐
飞凌嵌入式ElfBoard-标准IO接口之设置缓冲区
文件默认采用全缓冲模式。
size:指定缓冲区的大小。
4)返回值
成功返回0,失败将返回一个非0值,并且会设置errno
发表于 11-14 09:02
查找表与多项式近似算法实现初等函数
查找表与多项式近似结合算法是一种把查找表算法和多项式近似算法综合到一起的算法。这种算法综合了两种基本算法各自优势,通过将多项式各项系数存入查找表提高计算效率。
发表于 10-28 08:10
求助,关于TC39x使用Fce_crc在特定PFlash范围内进行CRC32校验失败的问题求解
上使用 Fce_crc 时会出现一致的 CRC32 失败 :
0x80000000 – 0x802FFFFF
0x80C00000 –
发表于 08-01 07:47
请问USB缓冲区取数据可以多次取吗?
在使用USB软件获取数据是,下位机给我发送了13个32位数据到USB IN缓冲区,为什么我调用API函数想要第一次取1个32位数据,取完之后
发表于 07-16 08:12
想从linux系统读回CYC65215部件的配置程序映像,并检查其CRC是否正确(假设它有附加 CRC),图像有CRC吗?
我想从 linux 系统读回 CYC65215 部件的配置程序映像,并检查其 CRC 是否正确(假设它有附加 CRC)。图像有 CRC 吗? CRC 是否使用标准
发表于 05-23 06:22
求助,关于ad7616序列器模式+crc的两个问题求解
我在使用序列器模式+CRC时,发现只有序列器最后一组
通道会出crc数据,比如序列器配置为2组数据,第二组数据出来后会跟出
发表于 04-15 08:23
FreeRTOS进阶使用之流缓冲区:高效处理字节流的秘密武器
工具,通过合理设置触发阈值和缓冲区大小,可显著提升系统性能。实际开发中需注意多核同步、阻塞策略及数据格式设计,必要时结合消息缓冲区实现更复杂的通信需求。掌握这一机制,将助你在嵌入式开发
发表于 03-24 11:37

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