微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 移动通信 > 无线网优技术 > CRC是什么

CRC是什么

时间:05-21 整理:3721RD 点击:
如题。

CRC?
基站维护跟CRC有关系吗?是CRO吧
CRO:CELL  RESELECT OFFSET
小区重选偏置

答: CRC (Cyclic Redundancy Check) 循环冗余校验
        解释: CRC是数据通信中应用最广的一种检验差错方法。方法是在发送端用数学方法产生一个循环码,叫做循环冗余检验码。在信息码位之后随信息一起发出。在接收端也用同样方法产生一个循环冗余校验码。将这两个校验码进行比较,如果一致就证明所传信息无误;如果不一致就表明传输中有差错,并要求发送端再传输。

        对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。

        CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是:
1、首先将原信息码(kbit)左移r位(k+r=n)
2、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。

非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:
0+0=1+1=0,1+0=0+1=1
即‘异’则真,‘非异’则假。
由此得到定理:a+b+b=a 也就是‘模2减’和‘模2加’直值表完全相同。

有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。

例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:
101
11101 | 110,0000
111 01
1 0100
1 1101
1001
余数是1001,所以CRC码是110,1001

标准的CRC码是,CRC-CCITT和CRC-16,它们的生成多项式是:
CRC-CCITT=x16+x12+x5+1
CRC-16=x16+x15+x2+1
 
 
 循环冗余码(CRC)
   1.CRC的工作方法
  在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循环冗余码同样的算法进行校验,若有错,需重发。
   2.循环冗余码的产生与码字正确性检验例子。
 例1.已知:信息码:110011 信息多项式:K(X)=X5+X4+X+1
      生成码:11001    生成多项式:G(X)=X4+X3+1(r=4)
    求:循环冗余码和码字。
  解:1)(X5+X4+X+1)*X4的积是 X9+X8+X5+X4 对应的码是1100110000。
    2)积/G(X)(按模二算法)。
    由计算结果知冗余码是1001,码字就是1100111001。

               1 0 0 0 0 1←Q(X)
  G(x)→1 1 0 0 1 )1 1 0 0 1 1 0 0 0 0←F(X)*Xr 
           1 1 0 0 1     ,
                1 0 0 0 0
                1 1 0 0 1
                 1 0 0 1←R(X)(冗余码)


 例2.已知:接收码字:1100111001 多项式:T(X)=X9+X8+X5+X4+X3+1
      生成码 :  11001    生成多项式:G(X)=X4+X3+1(r=4)
    求:码字的正确性。若正确,则指出冗余码和信息码。
  解:1)用字码除以生成码,余数为0,所以码字正确。
              1 0 0 0 0 1←Q(X)
 G(x)→1 1 0 0 1 )1 1 0 0 1 1 1 0 0 1←F(X)*Xr+R(x) 
          1 1 0 0 1     ,
               1 1 0 0 1
               1 1 0 0 1
                   0←S(X)(余数)


    2)因r=4,所以冗余码是:11001,信息码是:110011
   3.循环冗余码的工作原理
  循环冗余码CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式T(X)=Xr*K(X)+R(X)。
   4.循环冗余校验码的特点
  1)可检测出所有奇数位错;
  2)可检测出所有双比特的错;
  3)可检测出所有小于、等于校验位长度的突发错。

循环冗余校验码(CRC) 
CRC校验采用多项式编码方法。被处理的数据块可以看作是一个n阶的二进制多项式,由 。如一个8位二进制数10110101可以表示为: 。多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模,加减时不进,错位,和逻辑异或运算一致。 
采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。CRC的处理方法是:发送方以g(x)去除t(x),得到余数作为CRC校验码。校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。 
CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。所以CRC的生成多项式的阶数越高,那么误判的概率就越小。CCITT建议:2048 kbit/s的PCM基群设备采用CRC-4方案,使用的CRC校验码生成多项式g(x)= 。采用16位CRC校验,可以保证在 bit码元中只含有一位未被检测出的错误 。在IBM的同步数据链路控制规程SDLC的帧校验序列FCS中,使用CRC-16,其生成多项式g(x)= ;而在CCITT推荐的高级数据链路控制规程HDLC的帧校验序列FCS中,使用CCITT-16,其生成多项式g(x)= 。CRC-32的生成多项式g(x)= 。CRC-32出错的概率比CRC-16低 倍 。由于CRC-32的可靠性,把CRC-32用于重要数据传输十分合适,所以在通信、计算机等领域运用十分广泛。在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SIO)内,都采用了CRC校验码进行差错控制;以太网卡芯片、MPEG解码芯片中,也采用CRC-32进行差错控制。

MSC和BSC对接的时候,会用到CRC校验的,不过好像都不开这个功能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top