NR / 5G - Polar Coding
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的更多相关文章
- NR / 5G - Uplink Carrier Waveform Generation
- NR / 5G - Downlink Carrier Waveform
- NR / 5G - W-OFDM
- NR / 5G - MAC Overview
- NR / 5G - F-OFDM
- NR / 5G - The Round Robin algorithm
- NR / 5G - The Best CQI algorithm
- NR / 5G - The Proportional Fair algorithm
- NR / 5G - MAC Scheduler
随机推荐
- Spring Boot从零入门3_创建Hello World及项目剖析
目录 1 前言 2 名词术语 3 创建Hello World项目 3.1 基于STS4创建项目 3.2 使用Spring Initializr Website创建项目并导入 3.3 基于Spring ...
- .Net Framework为什么需要联网?
.Net Framework在安装时需要从微软官方网站下载语言包,所以需要联网. 如果想要真正离线安装,需要先把所需的语言包下载下来.
- django操作命令
下载安装 pip3 install django==1.11.21 -i https://pypi.tuna.tsinghua.edu.cn/simple 创建项目 1.终端找到存放项目的文件夹,dj ...
- Linux下搭建Jmeter+Ant+Jenkins自动化测试框架
前言 在之前的文章中,我们学习了通过Ant调用Jmeter脚本生成HTML测试报告,但未实现自动执行脚本生成报告,同时生成的报告是在Linux下,查看报告很不方便.因此,我们将结合Jenkins来进一 ...
- c语言-输出圆形
#include<stdio.h> #define high 100//定义界面大小 #define wide 100 void Circle(int ridus) //确定坐标 {int ...
- SpringBoot_Web开发_定制错误数据
SpringBoot默认的错误处理机制 默认效果: 1).浏览器,返回一个默认的错误页面 2).如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAutoConfig ...
- FileZilla 报错“the server's certificate is unknown”
FileZilla 是非常好用的一款FTP SFTP 管理工具. 但是filezilla会报错“the server's certificate is unknown” 并且会在window中看到以下 ...
- 谈谈 InnoDB引擎中的一些索引策略
如果我们在工作能够更好的利用好索引,那将会极大的提升数据库的性能. 覆盖索引 覆盖索引是指在普通索引树中可以得到查询的结果,不需要在回到主键索引树中再次搜索 建立如下这张表来演示覆盖索引: creat ...
- 【模板】普通平衡树(权值splay)
安利splay讲解: [洛谷日报第62期]Splay简易教程 [模板]普通平衡树(luogu) Description 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下 ...
- Linux 常用工具iptables
iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火 ...