1.CRC也有失灵的时候——误检概率
误检概率是指本来是发生了错误却通过了校验的概率。误检概率也称为漏检概率。长度为M的CRC校验误检概率是多少呢?假设原始信息比特序列长度为N,那么这样的不同序列共有2N个。而每一个唯一决定一个能够通过CRC校验的长度为N+M的序列,共有2N个能通过校验的序列。注意,可以理解,当N>M时,可能有多个原始信息比特序列对应的校验序列是相同的。
现在,把长度为N+M的序列x发送出去,其中
x=[a0,…,aN-1,b0,…,bM-1]
假设每一个比特位发生错误的概率均为独立的1/2,则在接收端收到的序列x'可能是任何一个长度为N+M的序列。记
x'=[a0',…,aN'-1,b0',…,bM'-1]
那么序列x'可以是任何一个长度为N+M的序列,即总的可能接收序列是2N+M个。但该序列x只有变成另外2N-1个能通过CRC校验的序列时才会发生漏检,即x'里[b0',…,bM'-1]刚好就是[a0',…,aN'-1]的CRC校验比特,才会发生漏检。那么,该序列x变成另外2N-1个能通过校验的序列的概率是多少呢?
首先,注意这个概率是其他2N-1个能通过CRC校验的序列中每一个出现的概率之和。先看看原始信息比特序列中仅某K个比特位置发生错误,且能通过校验的序列的出现概率是什么样子。应该是这个样子
式(12-14)中等号左边表达式的前面两项分别的意思是,原信息比特序列中所述的“某K个位置”全错的概率和剩下的N-K个位置全正确的概率;后面两项分别的意思是,当序列x中原始信息比特序列中“某K个比特位置”发生错误得到[a0',…,aN'-1]后,序列x'中[b0',…,bM'-1]需要刚好是[a0',…,aN'-1]的CRC校验比特,才会发生漏检。假设x中[b0,…,bM-1]需要仅某K'个位置发生错误才能得到[a0',…,aN'-1]的CRC校验比特[b0',…,bM'-1],这种错误出现的概率为
虽然我们不清楚具体K'是多少,以及具体是哪K'个位置发生错误,但其发生的概率都是式(12-14)中等号左边表达式的后两项的样子。
继续看,式(12-14)是原信息比特序列错成给定一个仅有“某K位错误”的概率,那么错成所有仅有K位错误的其中之一的概率为
即共有种情况确定到底是哪K位发生错误,而每一种情况出现的概率都是。进而错成所有其他2N-1个可以通过校验的其中之一的概率为,把所有K=1,…,N加起来,得
综上,我们知道在信道每比特的传输错误概率独立为1/2时,长度为M的CRC校验误检概率为1/2M。(www.xing528.com)
性质12-4 在信道每比特的传输错误概率独立为1/2时,长度为M的CRC校验误检概率为1/2M。
当信道每比特的传输错误概率不是1/2时,误检概率又是多少呢?甚至比特间的错误概率不是独立的又怎样呢?有兴趣的读者可以自己去算算,分析计算方法和上面是一样,但没有1/2那样简单能算出准确值来,但可以做一些近似估计。
当然,你会想校验多项式并不是随便拿一个来都能很好的工作。没错,这个校验多项式最好能满足一些特别的性质。要理论研究,可能要涉及一些代数群、环、域的概念,本书就不具体讲了。
2.哪些错误逃不过CRC的法眼
这里不想细写每一种长度的CRC到底能检测出哪些形式的错误,或者能以多大的概率检测出哪些形式的错误,只大概讨论一下思考分析方法。
首先,发生了错误表示什么?表示接收到的比特序列写成的多项式等价于发射端发射的多项式再加上了一个多项式,即
=A(x)+C(x)(12-16)
所加上的多项式C(x)具体形式取决于哪些比特位置发生了错误,该多项式C(x)里非0项就是对应那些发生错误的比特位置。这样的错误,CRC校验能否检测得出来,根据CRC原理取决于CRC生成多项式能否整除接收端接收到的多项式A'(x),而这个多项式又可以写成两部分A(x)+C(x),其中A(x)能被生成多项式整除,那么整个多项式能否被生成多项式整除取决于剩下另一部分C(x)能否被生成多项式整除,即由于发生错误加上的那个多项式能否被生成多项式整除。
具体情形用这个方法来分析即可。例如,长度为M的CRC校验能检测出所有错误仅落在某个长度为M的连续比特块里的错误。原因是,错误仅落在某个长度为M的连续比特块里的错误相当于所加上的多项式为形式
其中,k≥0。要生成多项式能整除C(x),生成多项式必能整除其中一个因子。显然生成多项式不能整除xk,只需要看生成多项式能否整除
而长度为M的CRC校验的生成多项式是最高非0项为xM的多项式,只要某个ci≠0,显然不能整除,余数多项式为
因此,只要某个长度为M的块里确实有至少1比特错误,即ci中至少一个不为0,那么余数多项式不为0,这样错误就被检测出来了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。