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. Netty快速入门(10)Reactor与Netty

    Reactor模式 Reactor是1995年由道格拉斯提出的一种高性能网络编程模式.由于好多年了,当时的一些概念与现在略有不同,reactor模式在网络编程中是非常重要的,可以说是NIO框架的典型模 ...

  2. restapi-sql

    身份验证,确定该成员是交过费的机构的成员,包含(用户名)和(密码) 各个表中的属性,有关timetemp等特殊类型,LocalDate等日期等具体格式. 引入了传输过程的不同的数据格式导致的两个错误, ...

  3. Spring中bean的实例化过程

    1.从缓存中.优先从一级缓存中拿,有则返回. 如果没有,则从二级缓存中获取,有则返回. 如果二级缓存中拿不到,则从三级缓存中拿,能拿到,则从三级缓存中删除,移到二级缓存. 如果三级缓存也没有,则返回n ...

  4. Please verify that your device’s clock is properly set, and that your signing certificate is not expired.

    解决方法: 1.关闭项目,找到项目文件XXXX.xcodeproj,在文件上点击右键,选择“显示包内容”(Show Package Contents).会新打开一个Finder. 2.在新打开的Fin ...

  5. 1.HelloWorld 仪式感

    HelloWorld: 1.随便新建一个文件夹,存放代码. 2.新建一个java文件 文件后缀改为 .java Hello.java 系统可能没显示文件后缀名,我们需要手动打开 3.编写代码 publ ...

  6. [题解][Codeforces]Good Bye 2019 简要题解

    构造题好评,虽然这把崩了 原题解 A 题意 二人游戏,一个人有 \(k_1\) 张牌,另一个人 \(k_2\) 张,满足 \(2\le k_1+k_2=n\le 100\),每张牌上有一个数,保证所有 ...

  7. [LOJ#3044][动态DP]「ZJOI2019」Minimax 搜索

    题目传送门 容易想到一种暴力 DP:先转化成对于每个 \(k\) 求出 \(\max_{i\in S}|i-w_i|\le k\) 的方案数,最后差分 然后问题转化成每个叶子的权值有个取值区间,注意这 ...

  8. 18年第一弹射 和网络有关; 艾曲塞嗯诶系列篇 two

    35: 华为AR G3系列路由器可以通过FTP和TFTP更新系统文件,AR G3系列路由器可以作为FTP Client , FTP Server ,TFTP Client 36: 两台路由器间通过串口 ...

  9. .Net Core建站(1):EF Core+CodeFirst数据库生成

    emmm,本来想着用Core做一个小项目玩玩的,然后肯定是要用到数据库的, 然后想,啊,要不用CodeFirst,感觉很腻害的样子,于是,一脸天真无邪的我就踏入了一个深不见底的天坑... 本来想着,应 ...

  10. Linux系统实时数据同步inotify+rsync

    一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...