打印

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

[复制链接]
23355|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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优秀在什么地方,没仔细研究过......

使用特权

评论回复
5
chunyang| | 2009-9-21 17:20 | 只看该作者
不是这么简单,有数学证明的,CRC16和CRC CCITT等都是百亿分之一的重复率,至于出错率则是截然不同的概念,由信道传输参数决定,跟算法无关。

使用特权

评论回复
6
yewuyi| | 2009-9-21 17:25 | 只看该作者
LZ的真实意图其实就是CRC的重复率

使用特权

评论回复
7
aceice| | 2009-9-21 17:56 | 只看该作者
重复率.........不懂,解释解释

使用特权

评论回复
8
chunyang| | 2009-9-21 18:03 | 只看该作者
用不同的数据应生成不同的校验值,但某些特定的数据却可以生产相同的校验值,这时即为重复,此时无法判断是数据传输错误还是数据本来就不同。

使用特权

评论回复
9
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&&

使用特权

评论回复
10
chunyang| | 2009-9-21 19:03 | 只看该作者
CRC算法的本质是相同的,但生成多项式不同,计算结果就不同,而生成多项式的选择决定了重复率。另外,有的CRC标准要求在传输时交换高低8位,但这是协议层的要求,跟CRC算法本身无关。同一CRC标准计算的结果应该相同,否则就是计算软件存在错误。

使用特权

评论回复
11
mr.king| | 2009-9-21 20:46 | 只看该作者
CRC对随机错检出是比较高的,但对移位错(比如串中掉了个0或1,后面数据向前补)有时(规律不知道,数据量大太难分析)查不出,我就试验过,最后CRC能通过

使用特权

评论回复
12
mcuisp| | 2009-9-21 21:11 | 只看该作者
本帖最后由 mcuisp 于 2009-9-21 21:13 编辑

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

我的EP868中,就综合采用了MD算法和CRC来保证用户程序代码的完整性。

使用特权

评论回复
13
mcuisp| | 2009-9-21 21:17 | 只看该作者
在实践中,是会遇到CRC32通过,但数据确实错误的情况。这个几率比中500万的几率要大一些,呵呵。

使用特权

评论回复
14
NE5532| | 2009-9-21 22:22 | 只看该作者
连续Nbit错误下,100%检出,超过Nbit,就看概率了,一般90%多
N=CRCn里的n

使用特权

评论回复
15
bbyeah| | 2009-9-22 06:11 | 只看该作者
纠错编码原理,本科最悲剧的一门课...

使用特权

评论回复
16
cnchip| | 2009-9-22 08:14 | 只看该作者
只会套用但没研究过,给你个网址:
http://www.lammertbies.nl/comm/i ... crc=&method=hex

使用特权

评论回复
17
mbutterfly| | 2009-9-22 08:50 | 只看该作者
以前学的,都有点忘了,学习下

使用特权

评论回复
18
lsqdesign| | 2009-9-22 09:31 | 只看该作者
mcuisp发表于 2009-9-21 21:17 | 只看该作者 回复 引用 评分 报告 返回版面 TOP13楼: 在实践中,是会遇到CRC32通过,但数据确实错误的情况。这个几率比中500万的几率要大一些,呵呵。
=================================
是否与多项式的选则有关?

使用特权

评论回复
19
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%是怎么来的呢?
楼上各位的说法都不太一致,不知道哪位能从数学角度上予以证明?

使用特权

评论回复
20
hotpower| | 2009-9-24 18:42 | 只看该作者
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

183

帖子

1

粉丝