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
随机推荐
- 安装Mysql 8.0的艰难体验
背景: Mysql 8.0 以后版本,在性能等方面有了很大提升,而且在自动编号.Timestamp等字段的设置上有了很方便的进步,因此在一年前即开始将原有的基于5.5版本的服务器逐渐向8.0转移.但转 ...
- Java 多线程安全问题简单切入详细解析
线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码.如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就 ...
- hdu - 4990
Read the program below carefully then answer the question. #pragma comment(linker, "/STACK:1 ...
- Docker学习(一)环境准备安装centos7
前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化.容器是完全使用沙箱机 ...
- python 进程事件
1.作用 通过信号量,控制全部进程进入阻塞状态,也可以通过控制信号量,解除全部进程的阻塞 注意:定义的事件对象,默认状态是阻塞 2.常用方法 """ 对象.set() 作 ...
- SpringSecurity 默认表单登录页展示流程源码
SpringSecurity 默认表单登录页展示流程源码 本篇主要讲解 SpringSecurity提供的默认表单登录页 它是如何展示的的流程, 涉及 1.FilterSecurityIntercep ...
- javaweb-codereview 学习记录-2
1.Java 文件名空字节截断漏洞(%00 Null Bytes) 受空字节截断影响的JDK版本范围:JDK<1.7.40 实际上修复就是检查文件名中是否包含\u0000,包含则为非法路径 fi ...
- tomcat启动时检测到循环继承而栈溢出的问题:Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/test] due to a StackOverflowError. Possible root causes include
最近在公司更新一个老项目的时候,发现部署项目后tomcat报错,错误如下: Caused by: java.lang.IllegalStateException: Unable to complete ...
- Dynamics 365 CRM Connected Field Service 不能接收IoT Alert
今天浪费了2,3个小时再connected field service(CFS)上面. 状况如下 1. 在CFS中添加了新的customer assets,并且点击了注册按钮. 2. 注册步骤一直在i ...
- 异想家Ubuntu安装的软件
[替换国内源] https://developer.aliyun.com/mirror/ubuntu 我提供一个下载,方便第一次安装懒得敲命令: https://jfz.me/16.04/source ...