循环冗余检验CRC

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

_______________________________目录误码率与信噪比有很大的关系,在实际通信中不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检测CRC的检测技术.现实的通信链路都不会是理想的。这就是说,比特在传输的过程中可能会产生差错:1可能会变成0,0可能会变成1,这就叫做比特差错。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(BitErrorRate)。PS:另一种理解方法为:余数位数≥除数位数时,商1;余数位数<除数位数时,商0.(4)模2除法:在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2除法运算法则,那么余数首位是1就商1,是0就商0。(1)模2运算:实际上是按位异或运算,即相同为0,相异为1,也就是不考虑进位、借位的二进制加减运算。如:1111+1010=0101;(2)FCS:其实就是冗余码,帧检验序列(FrameCheckSequence);(3)生成多项式:其实就是除数,比如下面将要用到的除数p=1101.首先来介绍几个概念:CRC运算实际上就是在数据长为k的后面添加供差错检测用的n位冗余码,然后构成帧k+n位发送出去。1010010001101111110111000111110111000001←Q(并没有什么用处的商)P(n+1位除数)→←2nM(k+n位被除数)11011111000100←R(n位余数,比P少一位),作为FCS(帧检验序列)M:待传输数据k:M的比特数n:冗余码位数加上FCS后发送的帧是101001001(即2nM+FCS),共有(k+n)位。循环冗余检验CRC和帧检验序列FCS并不是同一个概念。CRC是一种检测方法,而FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,也可以不选用CRC。10110101101接收端把接到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以相同的除数P(模2运算),然后检查得到的余数R。如果在传输过程中没有差错,那么经过检验后得到余数R肯定是0。在接收端对接收到的每一个帧经过CRC检验后,有两种情况:(1)余数R=0,则判断这个帧没有问题,就接受;(2)余数R≠0,则判断这个帧有差错,就丢弃。CRC-16=X16+X15+X2+1CRC-CCITT=X16+X12+X5+1CRC-32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1一种较方便的办法是用多项式来表示循环冗余检验过程。在上面的例子中,用多项式P(X)=X3+X2+1表示上面的除数P=1101(最高位对应于X3,最低位对应于X0)。多项式P(X)称为生成多项式。现在广泛使用的生成多项式P(X)有以下几种:假如信息码为1110011,多项式g(x)=x^4+x^2+1,那么CRC的求法如下:●g(x)=x^4+x^2+1对应的二进制编码为10101(有幂次的项对应1,没有的就为0),所以得出校验码的个数为4,即g(x)的最高幂次信息码R为1110011,所以要发送的CRC为11100110000,后4位是为校验码预留的。●校验码的求法:11100110000/10101做模2除,11100110000/10101的余数为1011,所以要发送的CRC码为:11100111011.?在数据链路层,发送端帧检验序列FCS的生成和接收端的CRC检验都是用硬件完成的,处理很迅速,因此并不会延误数据的传输。即使最后差错检测R=0,也不能完全保证所传输的信息没有差错,这是因为,冗余码本身也有受各种因素干扰而发生变化的可能。传输的数据可能原本不对,但冗余码跳变为正确的冗余码;也有可能数据对了,但冗余码跳变为错误的冗余码。后者可以认为没有影响,不过是再进行一次数据传输;前者固然存在,但因概率较低,故仍在可接受范围内。在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受,即:“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错“。接收端丢弃的帧虽然曾收到了,但最终还是因为认为有差错被丢弃,即没有被接受。以上所述的可以近似地表述为(通常都是这样认为):“凡是接收端数据链路层接受的帧均无差错”接收≠接受?谢谢观看

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功