1、原始信息bit(TB块) + CRC
2、code block segmentation
根据交织参数表,确定长、短码块个数,及相应的BIT数,每段加CRC,在第一块进行bit填充;(协议规定的划分方法尽量使得两种码长的长度最接近)
CRC计算时,填充BIT认为等于0
因为协议规定交织器能处理的最大长度为6144bit,所以按照6144进行分块。
3、Turbo 码率1/3,编码后每个输出流的长度D=K+4(4是由于让两个编码器状态归零产生的)
Turbo码又称为Parallel Concatenated Convolutional Code (PCCC),由2个8-state constituent encoders和一个内部交织器构成。
递归系统卷积码:Recursive Systematic Convolution Code, RSC
8-state constituent encoders 的转换函数:
移位寄存器初始化值为0;
交织器:根据协议212 Table 5.1.3-3定义了输入输出映射关系;交织器的选择由码块长度决定
(网格终止turbo码,增加了使移位寄存器状态归零的尾部 bit):
两个分量编码器可以选择归零方式,归零即为分量编码器状态清零。Turbo编码器可选择不归零、单归零、双归零三种方式。不归零是两个分量编码器不执行归零,单归零即一个执行归零,而另一个不执行。双归零即两个分量编码器都执行归零。
归零的优势:编码器前后的状态都是已知的,再相同译码条件下能有更好的性能。
协议中采取双归零:
最后一个信息BIT 输出后,先将上面的编码开关拨到下方,生成6bit:
再将第二分量编码器的编码开关拨到下方,生成6bit:
共得到12尾BIT,按照下列规则排列输出:
4、速率匹配 : 将传输的数据BIT与传输资源匹配。速率匹配验证代码见:MATLAB-LTE-速率匹配仿真代码_日积跬步---的博客-CSDN博客
子块交织部分:
(1)公共部分:设置矩阵的列数,行数(简记为R), 为满足下式的最小整数:
(2)对
- 如果输出{d_{k}^{0}},{d_{k}^{1}}的长度不是32的整数倍,{D_{0}^{i},D_{1}^{i},...,D_{D-1}^{i}} 前面补Dummy bits到32整数倍,按行输入,划分为32个列,得到R*32的矩阵
- 列重排:参考Table 5.1.4-1
- 按列输出
(3)对,按照如下固定的格式进行交织:
Bit 收集:
- 对第r个CodeBlock 循环Buffer 的长度,从下面的公式可以看出,相当于是先传输信息bit,然后将校验位交替传输。
Bit 选择与传输
比特选择器在缓冲器中选择一个“起点”,并顺序选出指定大小的一行数据,作为输出。共有四种“起点”选择方式,对应我们常说的4个冗余版本(RV)。
与UE的传输能力、DL_HARQ参数、MIMO、调制阶数、重传、信道等有关;
Code block 串联
- 顺序串联r个码块的速率匹配输出。