循环冗余校验码(CRC校验)

用途:
    常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。
原理:
    CRC检验原理实际上就是在一个n位二进制数据序列的信息码之后附加一个k位二进制数据序列的检验码,从而构成一个总长为n+k位的二进制数据序列的循环冗长校验码,又称这个校验码(n+k,n)码。附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。
实现步骤:
    (1).双方事先约定了一个多项式g(x),即CRC码。 最高幂次是x的n-1次幂。注意,a.多项式需自定义;b.多项式二进制表示位数 < 原信息码二进制位数;c.多项式二进制序列必须以1收尾。
         例:g(x) = x的4方 + x + 1,其二进制表示为10011,为5位。
    (2).要发送数据序列的二进制信息码结尾后面补最高幂次位数的0。
    (3).对补位后的序列除以CRC码,按模2算法取余数。余数序列为CRC校验码。CRC校验码位数 = 最高幂次位数(即补0的位数)
    (4).要发送的信息码结尾后面补上CRC校验码序列,即为真正要发送的数据比特流
    (5).接收端在接收到带CRC校验码的数据后,如果数据在传输过程中没有出错,将一定能够被相同的生成多项式G(x)除尽,如果数据在传输中出现错误,生成多项式G(x)去除后得到的结果肯定不为0。
例:
原信息编码为1010001101,多项式g(x) = x的5次方 + x的5次方4 + x的2次方 + 1。
    a.多项式二进制CRC码设为:110101
    b.多项式最高幂次为5,则校验码有5位,需补5位0。新原编码:101000110100000
    c.新原编码除以CRC码,CRC校验码为:01110
       

    d.真正传送的编码序列为原编码接CRC校验码,即101000110101110

 

posted @ 2022-05-15 22:46  孤行旅者  阅读(1867)  评论(0编辑  收藏  举报