//本文均属原创,转载请注明出处。
//本课程以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-编码速率。
约束长度百度上搜下,介绍为:
很好理解。
编码速率和卷积码有关,介绍如下:
若以(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.
编码代码如下: