您当前的位置:五五电子网电子知识plc技术PLC入门CRC的原理和实现 正文
CRC的原理和实现

CRC的原理和实现

点击数:7915 次   录入时间:03-04 11:55:44   整理:http://www.55dianzi.com   PLC入门
到的m位消息的校验码,再与收到的校验码比较。接收端也可以用收到的全部m + r位除以生
成多项式,再判断余数是否为0。这是因为,M' + R = (QG + R) + R = QG,这里Q是商。显
然,它也可以像发送端一样,在全部m + r后再增加r个0,再除以生成多项式,如果没有差错
发生,余数仍然为0。
3.生成多项式的选择
------------------ PLC资料网
很明显,不同的生成多项式,其检错能力是不同的。如何选择一个好的生成多项式需要一定
的数学理论,这里只从一些侧面作些分析。显然,要使用r位校验码,生成多项式的次数应为
r。生成多项式应该包含项"1",否则校验码的LSB(Least Significant Bit)将始终为0。如果
消息(包括校验码)T在传输过程中产生了差错,则接收端收到的消息可以表示为T + E。若E不
能被生成多项式G除尽,则该差错可以被检测出。考虑以下几种情况:    1)1位差错,即E = x^n = 100...00,n >= 0。只要G至少有2位1,E就不能被G除尽。这
      是因为Gx^k相当于将G左移k位,对任意多项式Q,QG相当于将多个不同的G的左移相加。
      如果G至少有两位1,它的多个不同的左移相加结果至少有两位1。
  
    2)奇数位差错,只要G含有因子F = x + 1,E就不能被G除尽。这是因为QG = Q'F,由1)
      的分析,F的多个不同的左移相加结果1的位数必然是偶数。    3)爆炸性差错,即E = (x^n + ... + 1)x^m = 1...100...00,n >= 1,m >= 0,显然只 PLC
      要G包含项"1",且次数大于n,就不能除尽E。
     
    4)2位差错,即E = (x^n + 1)x^m = 100...00100...00,n >= 0。设x^n + 1 = QG + R,
      则E = QGx^m + Rx^m,由3)可知E能被G除尽当且仅当R为0。因此只需分析x^n + 1,根
      据[3],对于次数r,总存在一个生成多项式G,使得n最小为2^r - 1时,才能除尽x^n
      + 1。称该生成多项式是原始的(primitive),它提供了在该次数上检测2位差错的最高
      能力,因为当n = 2^r - 1时,x^n + 1能被任何r次多项式除尽。[3]同时指出,原始
      生成多项式是不可约分的,但不可约分的的多项式并不一定是原始的,因此对于某些
      奇数位差错,原始生成多项式是检测不出来的。    
 
以下是一些标准的CRC算法的生成多项式:
 
    标准            多项式                                           16进制表示   PLC
    --------------------------------------------------------------------------- 
    CRC12           x^12 + x^11 + x^3 + x^2 + x + 1                  80F
    CRC16           x^16 + x^15 + x^2 + 1                            8005
    CRC16-CCITT     x^16 + x^12 + x^5 + 1                            1021
    CRC32           x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11   04C11DB7
                    + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1 PLC资料网
  
16进制表示去掉了最高次项,CCITT在1993年改名为ITU-T。CRC12用于6位字节,其它用于8位
字节。CRC16在IBM的BISYNCH通信标准。CRC16-CCITT被广泛用于XMODEM, X.25和SDLC等通信
协议。而以太网和FDDI则使用CRC32,它也被用在ZIP,RAR等文件压缩中。在这些生成多项式
中,CRC32是原始的,而其它3个都含有因子x + 1。
4.CRC算法的实现
---------------
要用程序实现CRC算法,考虑对第2节的长除法做一下变换,依然是M = 11100110,G = 1011,
其系数r为3。
                                           
             11001100                      11100110000     PLC资料网
         -------------                     1011   
    1011 )11100110000                      -----------
          1011.......                       1010110000   
          ----.......                      1010110000
           1010......                      1011 PLC资料网
           1011......        ===>          -----------
           ----......                       001110000    
              1110...                      1110000
              1011...                      1011
              ----...                      ----------- PLC资料网
               1010..                       101000       
               1011..                      101000
               ----                        1011
                  100  <---校验码          -----------

上一页  [1] [2] [3] [4]  下一页


本文关键字:暂无联系方式PLC入门plc技术 - PLC入门