CRC校验码的计算方法及举例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zgcr654321/article/details/82194518

CRC校验原理:

CRC的校验原理就是根据模2除法用数据帧除以二进制的多项式,得到的余数附加在数据帧之后,形成一个新帧。再将新帧发送给接收端。接收端收到新帧后,用新帧通过模2除法除以同样的二进制多项式,如果帧正确应当没有余数,如果有了余数说明该帧在传输过程中发生了错误。

模2除法:

“模2除法”与“算术除法”类似,但是每次上1位商后不同于算数除法上下算数相减,而是相同的位做异或运算,两者对应位相同则结果为“0”,不同则结果为“1”。

CRC校验码的计算步骤:

先确定一个生成多项式,并写出对应的二进制生成多项式;

再在数据帧后面加上生成多项式的最高次方数个0,然后除以二进制的生成多项式(用模2除法);

除完后最后次方数个数字就是余数,也就是CRC校验码,我们将该校验码附在数据帧之后组合成新帧;

发送该新帧到接收端,接收端再用新帧与二进制生成多项式作模2除法,如果余数为0说明帧正确,如果余数不为0,说明帧的传输过程中产生了错误。

举例:

数据帧为10110011,生成多项式为G(X) = X4 + X3 + 1,要求求出新的帧序列。

首先得到二进制生成多项式11001,然后数据帧后加4个0,再与二进制生成多项式作模2除法。

 

得到的余数为0100,即CRC校验码为0100。故新帧序列为101100110100。

将新帧发送给接收端,新帧到达接收端后,接收端会把这个新帧再用上面选定的除数11001以“模2除法”方式去除,验证余数是否为0,如果为0,则证明该帧数据在传输过程中没有出现差错,否则出现了差错。

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/82194518