5G New Radio Polar Coding

Introduction

The selection of polar codes as the channel coding technique for control channels for 5G NR communications system has proven the merits of Arikan's discovery and will establish their application in commercial systems. Based on the concept of channel polarization, this new coding family is capacity achieving as opposed to just capacity approaching. With better or comparable performance than LDPC and turbo codes, it supersedes the tail-biting convolutional codes used in LTE systems for control channels. It is applied for downlink and uplink control information (DCI/UCI) for the enhanced mobile broadband (eMBB) use case, as well as the broadcast channel (BCH). Alternatively, the channel coding scheme for data channels for eMBB is specified to be flexible LDPC for all block sizes.

Polar Encoding

The following schematic details the transmit-end processing for the downlink, with relevant components and their parameters highlighted.

For the downlink, the input bits are interleaved prior to polar encoding. The CRC bits appended at the end of the information bits are thus distributed for the CA-Polar scheme. This interleaving is not specified for the uplink.

The following schematic details the transmit-end processing for the uplink, for a payload size greater than 19 bits and no code-block segmentation, with relevant components and their parameters highlighted.

Specify the code parameters.

% Code parameters
K = 54;                       % Message length in bits,
including CRC, K > 30
E = 124;                     % Rate matched output length, E <= 8192

EbNo = 0.8;               % EbNo in
dB
L = 8;                         % List length, a power of two, [1 2 4 8]
numFrames = 10;     % Number of frames to
simulate
linkDir = 'DL';           %
Link direction: downlink ('DL') OR uplink ('UL')

if strcmpi(linkDir,'DL')
    % Downlink scenario (K >= 36, including CRC
bits)
    crcLen = 24;      % Number of CRC bits for DL, Section 5.1,
[ 38.212 ]
    poly = '24C';     % CRC polynomial
    nPC = 0;           %
Number of parity check bits, Section 5.3.1.2, [ 38.212 ]
    nMax = 9;         % Maximum value of n, for 2^n, Section
7.3.3, [ 38.212 ]
    iIL = true;         %
Interleave input, Section 5.3.1.1, [ 38.212 ]
    iBIL = false;      % Interleave coded bits, Section 5.4.1.3,
[ 38.212 ]
else
    % Uplink scenario (K > 30, including CRC
bits)
    crcLen = 11;
    poly = '11';
    nPC = 0;
    nMax = 10;
    iIL = false;
    iBIL = true;
End

Rate Matching and Rate Recovery

The
polar encoded set of bits (N) are rate-matched to output the specified
number of bits (E) for resource element mapping. The coded
bits are sub-block interleaved and passed to a circular buffer of length N. Depending on the desired code rate and
selected values of K, E, and N, either of repetition (E >= N), and
puncturing or shortening (E
< N) is realized by reading
the output bits from the buffer.

  • For
    puncturing, E bits are taken from the end
  • For
    shortening, E bits are taken from the start
  • For
    repetition, E bits are repeated modulo N.

For the downlink, the selected bits are passed on to the modulation
mapper, while for the uplink, they are further interleaved prior to mapping.

At the receiver end, rate recovery is accomplished for each of the cases

  • For puncturing,
    corresponding LLRs for the bits removed are set to zero
  • For shortening,
    corresponding LLRs for the bits removed are set to a large value
  • For
    repetition, the set of LLRs corresponding to first N bits are
    selected.

R = K/E;                          % Effective code rate
bps = 2;                          % bits
per symbol, 1 for BPSK, 2 for QPSK
EsNo = EbNo + 10*log10(bps);
snrdB = EsNo + 10*log10(R);       % in
dB
noiseVar = 1./(10.^(snrdB/10));

% Channel
chan = comm.AWGNChannel('NoiseMethod','Variance','Variance',noiseVar);

Polar Decoding

The implicit CRC
encoding of the downlink (DCI or BCH) or uplink (UCI) message bits dictates the
use of the CRC-Aided
Successive Cancellation List Decoding (CA-SCL)
as the channel decoder algorithm. It is well known that CA-SCL decoding can outperfor Turbo or
LDPC codes and this was one of the major factors in the adoption of polar codes
by 3GPP.

For
an input message which is concatenated with a CRC, CA-SCL decoding prunes out
any of the paths for which the CRC is invalid, if at least one path has the
correct CRC. This additional insight in the final path selection improves the
performance further, when compared to SCL decoding. For the downlink, a CRC
of 24 bits is used, while for the uplink CRCs of 6 and 11 bits are specified,
which vary on the value of K.

Frame Processing Loop

This section
shows how the prior described components for polar coding are used in a Block
Error Rate (BLER) simulation. The simulation link is highlighted in the
following schematic.

For each frame
processed, the following steps are performed:

numferr = 0;

for i =
1:numFrames

% Generate a random message
    msg = randi([0 1],K-crcLen,1);

% Attach CRC
    msgcrc = nrCRCEncode(msg,poly);

% Polar encode
    encOut =
nrPolarEncode(msgcrc,E,nMax,iIL);
    N = length(encOut);

% Rate match
    modIn =
nrRateMatchPolar(encOut,K,E,iBIL);

% Modulate
    modOut =
nrSymbolModulate(modIn,'QPSK');

% Add White Gaussian noise
    rSig = chan(modOut);

% Soft demodulate
    rxLLR =
nrSymbolDemodulate(rSig,'QPSK',noiseVar);

% Rate recover
    decIn =
nrRateRecoverPolar(rxLLR,K,N,iBIL);

% Polar decode
    decBits =
nrPolarDecode(decIn,K,E,L,nMax,iIL,crcLen);

% Compare msg and decoded bits
    errStats =
ber(double(decBits(1:K-crcLen)), msg);
    numferr = numferr +
any(decBits(1:K-crcLen)~=msg);

end

Simulation Results

The following
results for different code rates and message lengths are presented for both
link directions with QPSK modulation.

The BLER
performance results indicate the suitability of polar codes in a communication
link and their implicit support for rate-compatibility at the bit-level
granularity.

Reference,

MathWorks

NR / 5G - Polar Coding的更多相关文章

  1. NR / 5G - Uplink Carrier Waveform Generation

  2. NR / 5G - Downlink Carrier Waveform

  3. NR / 5G - W-OFDM

  4. NR / 5G - MAC Overview

  5. NR / 5G - F-OFDM

  6. NR / 5G - The Round Robin algorithm

  7. NR / 5G - The Best CQI algorithm

  8. NR / 5G - The Proportional Fair algorithm

  9. NR / 5G - MAC Scheduler

随机推荐

  1. 修饰符new与override

    new:在作为修饰符时,可以隐藏从父类的继承的成员. override:修改父类的方法.属性. 上代码比较清楚: using System; using System.Collections.Gene ...

  2. TensorFlow——Graph的基本操作

    1.创建图 在tensorflow中,一个程序默认是建立一个图的,除了系统自动建立图以外,我们还可以手动建立图,并做一些其他的操作. 下面我们使用tf.Graph函数建立图,使用tf.get_defa ...

  3. LCA - 求任意两点间的距离

    There are n houses in the village and some bidirectional roads connecting them. Every day peole alwa ...

  4. D2. Optimal Subsequences (Hard Version) 主席树

    题目链接:https://codeforces.com/contest/1262/problem/D2 将数组按大到小排序(相同大小的按下标由小到大排序),依次将排序后的每个数在原数组中的位置放入主席 ...

  5. 你在使用什么 Redis 客户端工具?

    今天发现一个不错的 Redis 客户端工具:AnotherRedisDesktopManager. 兼容 Windows Mac Linux,号称又快又稳定,加载大量 keys 时也不会崩溃. Git ...

  6. ubuntu 16.10 shu rufa meiy ou l e geng xi zhi hou

  7. .net core 不是开源的么 作为菜 不能贡献源码 只有 欣赏额

    step one 去download一份 与前辈在一起

  8. JS-06-定时器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Python学习,第八课 - 函数

    本次讲解函数,由于内容比较多,小编列了个大纲,主要有一下内容: 1. 函数基本语法及特性 2. 函数参数 3.局部变量 4. 返回值 5.嵌套函数 6.递归 7.匿名函数 8.高阶函数 9.内置函数 ...

  10. ES6笔记分享 part 2

    ECMAScript ES6 从一脸懵逼到灵活运用 接 part 1 New String Methods const id = 'adcd123456x'; const fan = 'I love ...