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
随机推荐
- cogs 1001. [WZOI2011 S3] 消息传递 Tarjan
1001. [WZOI2011 S3] 消息传递 ★★ 输入文件:messagew.in 输出文件:messagew.out 简单对比时间限制:1 s 内存限制:128 MB Prob ...
- eclipse git 解决冲突 解决 mergetool 不能使用问题
eclipse git 解决冲突 解决 mergetool 不能使用问题 本地代码 远程代码 第一步 --> 同步远程资源库,检查是否存在冲突 这里有冲突出现 第二步 --> 如果存在冲突 ...
- LeetCode 第七题--整数反转
1. 题目 2.思路 1. 题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321示例 ...
- java面试题-spring篇
这次是关于spring的面试题,和上次一样依旧挑了几个具有代表性的. 一. 谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生.Spring 可以是使简单的 Ja ...
- Oracle GoldenGate for DB2
--Enable logdb2 update db cfg using LOGARCHMETH1 DISK:/home/db2inst1/arclogs--Rebootdb2 terminatedb2 ...
- python类型-序列
注:本文档主要是学习<Python核心编程(第二版)>时做的资料整理. 1.序列 序列的成员是有序排列的,并且可以通过下标偏移量访问到它的一个或者几个成员,包括字符串(普通字符串和Unic ...
- 基于Bootstrap和Knockout.js的ASP.NET MVC开发实战 关于 拦截器的 学习 部分
先贴一段: 下面贴代码: 上面这段代码呢,有几个点迷糊.可以找找看
- 网络流(最大流-Dinic算法)
摘自https://www.cnblogs.com/SYCstudio/p/7260613.html 网络流定义 在图论中,网络流(Network flow)是指在一个每条边都有容量(Capacity ...
- Shell常用命令之sort
sort命令 sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出.sort命令既可以从特定的文件,也可以从stdin中获取输入. 语法 sort (选项) (参数) 选项 - ...
- Tomcat项目启动常见错误以及原因,持续更新.........
一 Context initialization failed 错误截图: 原因: jdk版本与项目不对应,可重新设置项目jdk和ide编译的jdk即可