说说CRC的检错能力究竟有多强

[复制链接]
 楼主| goooogle 发表于 2009-9-21 12:56 | 显示全部楼层 |阅读模式
CRC校验被广泛的应用于通讯及各个领域,是保护数据准确性的重要手段.
都说CRC检错能力强,有没有人来从数学原理上说说CRC的检错能力到低有多强?在什么情况下检不到错误?检错能力和哪些因素有关,比如CRC8,CRC12,CRC16....以及数据流长度等等.
大家讨论一下


本主题由 goooogle 于 1921-07-01 13:00审核通过
宇容创行 发表于 2009-9-21 13:43 | 显示全部楼层
和位数有关,CRC8就有256分之一的出错概率
 楼主| goooogle 发表于 2009-9-21 16:18 | 显示全部楼层
LS的意思是CRC8就是1/2^8,CRC16就是1/2^16?我觉得不是这么回事,有没有数学推论?
Wxy8030 发表于 2009-9-21 16:39 | 显示全部楼层
不是说CRC8就有1/256的出错几率,否则它与累加和有什么区别?

至于到底CRC优秀在什么地方,没仔细研究过......
chunyang 发表于 2009-9-21 17:20 | 显示全部楼层
不是这么简单,有数学证明的,CRC16和CRC CCITT等都是百亿分之一的重复率,至于出错率则是截然不同的概念,由信道传输参数决定,跟算法无关。
yewuyi 发表于 2009-9-21 17:25 | 显示全部楼层
LZ的真实意图其实就是CRC的重复率
aceice 发表于 2009-9-21 17:56 | 显示全部楼层
重复率.........不懂,解释解释
chunyang 发表于 2009-9-21 18:03 | 显示全部楼层
用不同的数据应生成不同的校验值,但某些特定的数据却可以生产相同的校验值,这时即为重复,此时无法判断是数据传输错误还是数据本来就不同。
wu0232 发表于 2009-9-21 18:57 | 显示全部楼层
本帖最后由 wu0232 于 2009-9-21 19:00 编辑

刚好碰到这个问题
单片机要算CRC16
结果算出来的值,和网上下的软件的计算值,有的一样,有的不一样。晕,难道有几种算法。

哪位有研究的大虾帮着算算,看看是多少
字符串如下
ST=32;CN=2011; PW=;MN=;CP=&&DataTime=20080731155849;011-Rtd=0.00,011-Flag=N&&
chunyang 发表于 2009-9-21 19:03 | 显示全部楼层
CRC算法的本质是相同的,但生成多项式不同,计算结果就不同,而生成多项式的选择决定了重复率。另外,有的CRC标准要求在传输时交换高低8位,但这是协议层的要求,跟CRC算法本身无关。同一CRC标准计算的结果应该相同,否则就是计算软件存在错误。
mr.king 发表于 2009-9-21 20:46 | 显示全部楼层
CRC对随机错检出是比较高的,但对移位错(比如串中掉了个0或1,后面数据向前补)有时(规律不知道,数据量大太难分析)查不出,我就试验过,最后CRC能通过
mcuisp 发表于 2009-9-21 21:11 | 显示全部楼层
本帖最后由 mcuisp 于 2009-9-21 21:13 编辑

想要达到非常高的错误检出率,可以采用MD5等数据摘要算法。
CRC可以检出的错误,是有明确的结论的(虽然我不是那么清楚),对于不能检出的错误,数学家都有明确的证明。
而MD5等数据摘要算法,有128位~256位的结果,一般公认的说法,是接近100%的检出率。
因为这些算法的出错机率,已经远远超过宇宙的原子总数。

我的EP868中,就综合采用了MD算法和CRC来保证用户程序代码的完整性。
mcuisp 发表于 2009-9-21 21:17 | 显示全部楼层
在实践中,是会遇到CRC32通过,但数据确实错误的情况。这个几率比中500万的几率要大一些,呵呵。
NE5532 发表于 2009-9-21 22:22 | 显示全部楼层
连续Nbit错误下,100%检出,超过Nbit,就看概率了,一般90%多
N=CRCn里的n
bbyeah 发表于 2009-9-22 06:11 | 显示全部楼层
纠错编码原理,本科最悲剧的一门课...
cnchip 发表于 2009-9-22 08:14 | 显示全部楼层
只会套用但没研究过,给你个网址:
http://www.lammertbies.nl/comm/i ... crc=&method=hex
mbutterfly 发表于 2009-9-22 08:50 | 显示全部楼层
以前学的,都有点忘了,学习下
lsqdesign 发表于 2009-9-22 09:31 | 显示全部楼层
mcuisp发表于 2009-9-21 21:17 | 只看该作者 回复 引用 评分 报告 返回版面 TOP13楼: 在实践中,是会遇到CRC32通过,但数据确实错误的情况。这个几率比中500万的几率要大一些,呵呵。
=================================
是否与多项式的选则有关?
 楼主| goooogle 发表于 2009-9-22 09:40 | 显示全部楼层
本帖最后由 goooogle 于 2009-9-22 09:41 编辑
连续Nbit错误下,100%检出,超过Nbit,就看概率了,一般90%多
N=CRCn里的n
NE5532 发表于 2009-9-21 22:22

打个比方CRC16,连续16位全部错误本身就是一种小概率事件.你将错误情况分为连续和非连续,这两种情况下又分为大于等于或小于Nbit,90%是怎么来的呢?
楼上各位的说法都不太一致,不知道哪位能从数学角度上予以证明?
hotpower 发表于 2009-9-24 18:42 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

183

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部