一、速率匹配介绍
1、原理概述
LTE在实际使用中,并非使用1/3 Turbo编码,更多的采用 1/2 Turbo编码,即所谓的 “打孔码”。
在每个子块(CB)内,为了实现各种需要的码率,我们需要进行速率匹配。一般,速率匹配包含以下3个部分:
- 子块交织器 (Sub - block Interleaver);
- 比特收集(Bit - Collection);
- 比特选择与修剪(Bit Selection and Pruning);
如图1所示为 Turbo码速率匹配过程,在 TS 36.212(复用和信道编码协议)中,对其有详细规定。后续我们会具体说明。

图1 Turbo码的速率匹配
1.1 子块交织器
对Turbo码的三组比特流 —— 1个系统比特流(Infomation bit)和 2 个校验比特流(Parity bit)中的比特排序进行调整,改进 Turbo码打孔(Puncture)后的性能。子块交织器采用交织深度 32 的 “ 行入列出 ” 块交织器。
Matlab程序实现解读:
function y = lte_RateMatcher(in, Kplus, Rate)
% Rate matching per coded block
D = Kplus + 4;
if numel(in) ~= 3*D
error('Kplus (2nd argument) times 3 must be size of input 1.');
end
% Parameters
colTcSb = 32;
rowTcSb = ceil(D/colTcSb);
Kpi = colTcSb * rowTcSb;
Nd = Kpi - D;
% Bit streams
d0 = in(1:3:end); % systematic
d1 = in(2:3:end); % parity 1st
d2 = in(3:3:end); % parity 2nd
1)程序实现时,列数 ColTcSb = 32,行数为 ,为上去整。一般情况下,码块长度不是32的整倍数,于是有:
Nd = colTcSb * rowTcSb - D
这里的 Nd 即表示加入的虚比特数量 (dummy bits),matlab里每一个虚比特值为 NaN。在码块头部,即码块开始部分添加 Nd 个虚比特,构成:
y = [NaN * ones(Nd,1); d];
2) 将 y 逐行逐列写入矩阵,完成矩阵排列。图2节选的是TS 36.212列出的矩阵排列方式:

3) 将矩阵按照下表,完成列置换

本文详细介绍了LTE中的速率匹配过程,包括子块交织器、比特收集和比特选择与修剪三个步骤,以及Turbo码的速率匹配实现。同时,文章还阐述了绕码的概念,包括其在LTE下行链路中的作用、伪随机序列生成和去绕操作的实现。通过MATLAB代码展示了具体的实现过程。
7973

被折叠的 条评论
为什么被折叠?



