zoukankan      html  css  js  c++  java
  • 【零基础学会LTE】【1】LTE 36.212 CRC模块

    //本文均属原创,转载请注明出处。

    //本课程以36.212 v10.4.0为教材,请自行到3GPP网站下载。下载地址为http://www.3gpp.org/ftp/Specs/archive/36_series/

    //由于保密的原因,暂不提供代码查看。

     

    模块作用:接收时通过CRC校验,判断接收比特的对错,如果错了,可以请求重传。

    相关模块:速率匹配,HARQ重传

    模块优缺点:

    适用范围:PUSCH/PUCCH/

    对应章节:5.1.1

     

     今天要讲的是物理层第一个模块,CRC添加。

     在这之前,请看一下这篇文章[1] :

    这里,不讨论CRC的纠错原理以及为什么要选下面提及的生成多项式,只是针对以下的生成多项式,如何获得CRC校验码,作一个比较详细的说明。 
       标准CRC生成多项式如下表: 
       名称                 生成多项式                      简记式*            标准引用 
       CRC-4             x4+x+1                           3                 ITU G.704 
       CRC-8             x8+x5+x4+1                   0x31                    
       CRC-8             x8+x2+x1+1                   0x07                    
       CRC-8             x8+x6+x4+x3+x2+x1      0x5E 
       CRC-12           x12+x11+x3+x+1            80F
       CRC-16           x16+x15+x2+1                8005           IBM SDLC
       CRC16-CCITT   x16+x12+x5+1               1021            ISO HDLC, ITU X.25, V.34/V.41/V.42
                                  
       生成多项式的最高位固定的1,故在简记式中忽略最高位1了,如0x1021实际是0x11021(加最高位就是17位了)。

    I、基本算法(人工笔算,一般写代码不用这种方法):
    1)以CRC16-CCITT为例进行说明,CRC校验码为16位,生成多项式17位。假如数据流为4字节(32位):BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0];
    2)数据流左移16位,相当于扩大256×256倍(左移一位扩大2倍),再除以生成多项式0x11021(这也就是为什么生成多项式第一位必须为1的原因,否则如果最高位是几个0,除法得不到16bits的余数),做不借位的除法运算,所得的余数就是CRC校验码。(不借位除法相当于异或?怎样异或?
    3)发送时的数据流为6字节:BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0]、CRC[1]、CRC[0]; 

    II、计算机算法1(比特型算法):
    1)将扩大后的数据流(6字节)高16位(BYTE[3]、BYTE[2])放入一个长度为16的寄存器;
    2)如果寄存器的首位为1,将寄存器左移1位(寄存器的最低位从下一个字节获得),再与生成多项式的简记式异或;
       否则仅将寄存器左移1位(寄存器的最低位从下一个字节获得);
    3)重复第2步,直到数据流(6字节)全部移入寄存器;
    4)寄存器中的值则为CRC校验码CRC[1]、CRC[0]。 

    有了以上基础,再来看看LTE中的CRC,无非就是生成多项式变了,根据计算机算法1,写出24bits CRC校验代码:

    解码算法与编码算法异工同曲,同样也是按照计算机算法1求出,唯一不同的是最后异或后24个bits都应该是0,如果不是0,那就说明接受数据出错了,代码如下:

    参考文献:【1】http://kuaileljj2007.blog.163.com/blog/static/33974680200992194415674/

  • 相关阅读:
    appium在Mac上环境搭建
    判断元素的16中方法expected_conditions
    python3条件表达式和字符串
    webdriver的API
    什么是web接口
    python2函数
    python1变量,表达式和语句
    XPath学习
    接口相关概念
    解决jdk1.7,1.8共存问题小思
  • 原文地址:https://www.cnblogs.com/xlw1219/p/2664059.html
Copyright © 2011-2022 走看看