LTE物理层概述(8)-- LTE之Turbo编译码及其matlab仿真2--速率匹配、码块分段、扰码介绍

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

一、速率匹配介绍

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,行数为  rowTcSb = \left \lceil D/ colTcSb \right \rceil ,为上去整。一般情况下,码块长度不是32的整倍数,于是有:

                                                                  Nd = colTcSb * rowTcSb - D

这里的 Nd 即表示加入的虚比特数量 (dummy bits),matlab里每一个虚比特值为 NaN。在码块头部,即码块开始部分添加 Nd 个虚比特,构成:

y = [NaN * ones(Nd,1); d];

2) 将 y 逐行逐列写入矩阵,完成矩阵排列。图2节选的是TS 36.212列出的矩阵排列方式:

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值