首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >crc多项式密钥的生成

crc多项式密钥的生成
EN

Stack Overflow用户
提问于 2020-04-13 05:28:15
回答 1查看 505关注 0票数 0

参考本文:https://www.digikey.com/eewiki/display/microcontroller/CRC+Basics

多项式密钥是CRC的重要组成部分。键不仅仅是随机多项式;它们是使用一组数学公式生成的,目的是增加CRC进程识别的错误数量。多项式通常由网络协议或外部设备定义。由于有一组可靠的键可用,所以这里不讨论定义键的过程。

我理解如何用给定的多项式密钥计算CRC,但是,如何生成多项式密钥,并确保它能够在给定的协议集中捕获尽可能多的错误?

我假定多项式键与以下内容有关:

speed

  • others?

  1. 数据长
  2. 数据
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 08:55:47

使用数学公式生成CRC多项式的部分有点误导。CRC多项式中的1位数是该多项式的最大可能Hamming距离(HD),一般情况下,实际Hamming距离将根据数据长度而变小。最大误码检测是汉明距离- 1.

通常,检测出较高比特数的CRC多项式是多个素多项式的乘积。例如,对于可以检测数据+ CRC长度= 1024位的多达7个错误的32位crc,33位CRC多项式0x1f1922815 = 0x787*0x557*0x465*0x3*0x3 *0x3。0x3因子将检测任何奇数的位错误,因此CRC需要检测1024位中所有可能的6位错误。

我不知道确定最大误码检测的公式,一般情况下会进行一些优化的蛮力搜索。例如,假设正在检查32位CRC多项式,以确定它是否能够检测数据+ crc长度为1024位的所有6位错误,则1024位中可能出现的6位错误模式的数目是梳(1024 6)= 1,577,953,087,760,896。为了将其降到合理的程度,使用梳(1024,3)= 178,433,024的3位错误的数目来创建一个大表,每个表包含CRC和3位索引。对表进行排序,然后用于检查3位模式的CRC与其他3位模式的CRC相同的冲突。还需要检查4位模式的失败(检查两种不同的2位模式之间的冲突)。

通常情况下,随着数据长度的减小,保证检测到的最大错误位数会增加。这是一个链接到一串CRC多项式和他们的错误检测能力。

https://users.ece.cmu.edu/~koopman/crc/crc32.html

说明页解释了表中的条目:

http://users.ece.cmu.edu/~koopman/crc/notes.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61182006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档