Networking 通过CRC(循环冗余校验)进行单比特错误检测

Networking 通过CRC(循环冗余校验)进行单比特错误检测,networking,crc,data-link-layer,Networking,Crc,Data Link Layer,我正在研究一些与基于CRC生成器的单比特错误检测相关的问题,并试图分析哪些生成器检测到单比特错误,哪些没有 假设,如果我有一个CRC生成器多项式为x4+x2。现在我想知道它是否能保证检测到一个位错误 根据参考文献和文献,我总结了以下几点:- 1) 如果误差多项式xk的k=1,2,3,则在多项式除以生成器多项式x4+x2的情况下,余数将分别为x、x2、x3,并且根据参考文献,如果生成器有多个项且x0的系数为1,则可以捕获所有单位错误。但它并没有说,若x0的系数不是1,那个么就不能检测到单比特错误。

我正在研究一些与基于CRC生成器的单比特错误检测相关的问题,并试图分析哪些生成器检测到单比特错误,哪些没有

假设,如果我有一个CRC生成器多项式为x4+x2。现在我想知道它是否能保证检测到一个位错误

根据参考文献和文献,我总结了以下几点:-

1) 如果误差多项式xk的k=1,2,3,则在多项式除以生成器多项式x4+x2的情况下,余数将分别为x、x2、x3,并且根据参考文献,如果生成器有多个项且x0的系数为1,则可以捕获所有单位错误。但它并没有说,若x0的系数不是1,那个么就不能检测到单比特错误。这是说“在循环码中,那些可被g(x)整除的e(x)错误不会被捕获。”

2) 我必须检查E(x)/g(x)的剩余部分,其中E(x)(假设它是xk),其中k=1,2,3,。。。是误差多项式,g(x)是生成多项式。若余数为零,那个么我无法检测错误,若余数为非零,那个么我可以检测错误

因此,根据我的说法,生成器多项式x4+x2保证了基于上述两点的单位错误检测。请确认我是否正确

如果x0的系数不是1,那么无法检测到单比特错误

如果x0的系数不是1,则与将CRC多项式左移1(或更多)位(乘以x的某个幂)相同。将CRC多项式左移1位或更多位不会影响其检测错误的能力,它只是在码字的末尾附加1位或更多零位

生成器多项式x4+x2保证检测到单位错误

对。x4+x2是x2+1左移的两位,x4+x2=(x2)(x2+1)=(x2)(x+1)(x+1),由于x2+1可以检测任何单位错误,因此x4+x2也可以检测。还有(x+1)项(其中两项),它添加偶数奇偶校验,并可以检测任意奇数目的位错误


通常,无论消息长度如何,所有CRC多项式都可以检测到一个位错误。所有CRC多项式都有一个“循环”周期:如果使用CRC多项式作为a的基础,且初始值为000…0001,则在固定的循环次数后,它将循环回000…0001。CRC最简单的故障是2位错误,其中2位之间的距离等于循环周期。假设一个8位CRC(9位多项式)的周期为255,那么一个2位错误,一个在位[0]处,一个在位[255]处,将导致CRC=0,并且无法检测到,这不会发生在一个位错误的情况下,它将继续通过周期,其中没有一个周期包含值0。如果周期为n个周期,则如果消息+CRC中的位数为