zoukankan      html  css  js  c++  java
  • 【零基础学会LTE】【3】LTE 36.212 咬尾卷积码详解

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

    //本课程以36.212 v10.4.0为教材,请自行到3GPP网站下载。

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

    模块作用:对控制信息和广播信道进行信道编码,增强鲁棒性。

    相关模块:速率匹配

    咬尾卷积码优缺点:克服了码率损失的问题,并且适合迭代译码,但是译码复杂度增加了。

    本文主要介绍咬尾卷积码,协议上(v10.4.0)写的很简单,我一句句来分析下:

    A tail biting convolutional code with constraint length 7 and coding rate 1/3 is defined.

    这里有两个概念,constraint length-约束长度;coding rate-编码速率。

    约束长度百度上搜下,介绍为:

    1,约束长度(constraint length)= 寄存器个数(N)+1;
    上面是通解,在Lin Shu 的《error control coding》书里是这么表达的。
    
    2,但是在sklar的《digital comm》一书里面,约束长度=N
    
    以上2种写法之所以不同,是因为他们寄存器的意义不同,但是实际上是表达的是一个意思。约束长度就是,能输出信号到加法器的点的和。

    很好理解。

    编码速率和卷积码有关,介绍如下:

    若以(k,n,m)来描述卷积码,其中k为每次输入到卷积编码器的bit数,n为每个k元组码字对应的卷积码输出n元组码字,m称为约束长度,编码速率k/n。

    也很好理解。

    下面是标准中的卷积码生成图:

    其中D从左到右分别对应标准上的S0,S1,。。。S5。

    初始化时,S0=Ck-1,S1=Ck-2,。。。S5=Ck-6。  //initialization

    输入第一个比特C0,d0=C0^Ck-2^Ck-3^Ck-5^Ck-6,  //^代表异或

    d1,d2也是依样画葫芦生成。                 //

    当输入第二个比特C1时,寄存器右移一位,最末位抛弃,即S5抛弃,第一位变为输入位,即S0=C0。  //registered update

    当最后的比特Ck-1进行编码完成后,寄存器又回到了初始状态,就像一条蛇咬住了自己的尾巴,这就是tailbiting的由来。因此,这个卷积码也叫做咬尾卷积码。

    G0,G1,G2是生成公式,与输入比特异或的寄存器为1,不异或的寄存器为0,因此,第一个输出d0的生成公式是011011,同CRC的生成公式一样,最高位要置1,因此生成公式为1011011,写成八进制就是133.

    编码代码如下:

  • 相关阅读:
    RabbitMQ消息队列 基本订阅/发布Demo(PHP版)
    Docker安装部署RabbitMQ
    CentOS Docker 基本操作
    new worker
    JavaScript避坑
    如何开启MySQL慢查询日志
    kinshard
    Linux shell
    Linux shell
    Linux shell
  • 原文地址:https://www.cnblogs.com/xlw1219/p/2658579.html
Copyright © 2011-2022 走看看