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. rest实践2

    通过url读取图片资源 其他的上传图片和对应的添加信息到数据库等的相关操作则引入crud来操作,编写相关代码的话==>要引入相关的crud包.

  2. MySQL快速回顾:计算字段与函数

    9.1 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式.比如: 如果想要在一个字段中既显示公司名,又显示公式的地址,但这两个信息一般包含在不同的表列中. 城市.州和邮政编码存储在不同的列 ...

  3. python字典的遍历

    遍历字典: keys()  .values() .items() 1. xxx.keys()    :    返回字典的所有的key     返回一个序列,序列中保存有字典的所有的键 效果图: 代码: ...

  4. Java 循环队列

    传统数组实现的队列有缺陷,当多次入队出队后,队头指针会后移,当队尾指针达到数组末尾时,会提示队列已满,导致数组前部分空间被浪费.如果当队尾和队头指针到达数组末尾时能从数组[0]继续添加数据,可以提升数 ...

  5. python 生成器,迭代器,闭包,装饰器

    1.生成器,迭代器,闭包,装饰器的优点 生成器就是一类特殊的迭代器 迭代器的优点也即生成器的优点: 1.节约内存.python在使用生成器时对延迟操作提供了支持. 2.迭代到下一次的调用时,所使用的参 ...

  6. IDEA新建maven项目没有webapp目录解决方法

    转载地址:https://www.cnblogs.com/oldzhang1222/p/10429827.html 先创建的页面修改路径 修改路径如下 添加并完善路径\src\main\webapp ...

  7. .net core webapi搭建(3)Code first+拆层三层+仓储

    将项目拆层 我们要 将项目拆分成 Infrastructure     基础层 Core                   核心层 Utility                  工具 我们想在就 ...

  8. 软件工程概论 网站开发要掌握的技术 &登录界面

    1.网站系统开发需要掌握的技术 一.界面和用户体验(Interface and User Experience) 1.1 知道如何在基本不影响用户使用的情况下升级网站.通常来说,你必须有版本控制系统( ...

  9. SSM前后端分离/不分离对比Demo

    之前某些原因,整理了一个小的Demo,用于演示.个人认为在SSM前后端不分离的基础上在前端处理上比较麻烦一点之后就是注解的使用.总结一些对比,仅是自己掌握的,不够严谨,不足之处请大佬批评指正. 路由控 ...

  10. selenium,xpath路径中引入变量

    比如,我需要获取每一条微博的阅读数,总不可能所有微博都找出xpath,然后获取阅读数 找规律 “//*[@id='Pl_Official_MyProfileFeed__20']/div/div[2]/ ...