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. 【记】VirtualBox安装CentOS6

    推荐随笔 VirtualBox中安装CentOS-6.6虚拟机 问题1: 在选择虚拟硬盘大小时,最好不要用默认的8G 我的分区 /boot 200M swap 1024M /home 4096M / ...

  2. zm吃包子

    [题目背景]: zm 喜欢上了吃包子. [题面描述]: zm 每天都要去买包子,但是为了减肥,zm 设置了一系列规则来控制他每天买包子的数量. 他随机了 n 个特殊字符串,然后用 n 个字符串来衡量接 ...

  3. vim添加多行注释的几种方式

    最近需要在阿里云上部署项目,不可避免地会遇到vim这个工具,查了一些资料,总结了一下使用vim多行注释的方法 块操作 多行注释: 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块) ...

  4. Apache Hudi使用问题汇总(一)

    1.如何写入Hudi数据集 通常,你会从源获取部分更新/插入,然后对Hudi数据集执行写入操作.如果从其他标准来源(如Kafka或tailf DFS)中提取数据,那么DeltaStreamer将会非常 ...

  5. Spring Boot 事务的使用

    Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactio ...

  6. Appium自动化测试框架研究(2)——搭建IOS环境

    今天的文章讲iOS的Appium环境搭建. 对于iOS而言,只能在Mac笔记本上安装Appium,以及所需要的各种组件. 也许有人会问,能否在Windows系统上使用Appium测试iOS手机,这不就 ...

  7. Java入门 - 高级教程 - 08.Applet

    原文地址:http://www.work100.net/training/java-applet.html 更多教程:光束云 - 免费课程 Applet 序号 文内章节 视频 1 概述 2 Apple ...

  8. Python学习,第五课 - 列表、字典、元组操作

    本篇主要详细讲解Python中常用的列表.字典.元组相关的操作 一.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 通过下标获取元素 #先定义一个列表 le ...

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

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

  10. SpringMVC 中的异常处理

    目录 1.搭建编码分析 2.编写异常类 3.编写自定义异常处理器 4.在springmvc.xml中配置异常处理器 5.编写Error.jsp.index.jsp页面 6.编写collector代码模 ...