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
随机推荐
- Vmware下Ubuntu 14.04静态IP地址的设置方法
一.环境 宿主机 Win 8.1 虚拟机工具 VMware 10.0 虚拟主机系统 Ubuntu 14.04 二.说明 这里需要注意的是:VMware对于VMnet8采用如下规则(192.168. ...
- 自定义实现的ArrayList以及自定义实现的Iterator迭代器
ArrayList的底层是长度可动态变化的数组,其适用于查找多,修改少的情况,原因是数组的元素的增加删除元素会涉及大量元素的移动,效率比较低,ArrayList中的元素可以重复,与插入时的顺序相同,可 ...
- Animator的小记
前阵子在做动画相关的内容,整理一下Animator. 1.动画切换 1.1状态之间的切换,在状态间连线(Make Transition),并且设置触发条件,代码里调用SetTrigger.SetBoo ...
- VUE CLI环境搭建文档
VUE CLI环境搭建文档 1.安装Node.js 下载地址 https://nodejs.org/zh-cn/download/ 2.全局安装VUE CLI win+R键打开运行cmd窗口输入一下代 ...
- 2019版Idea如何激活
1.下载jar包 链接: https://pan.baidu.com/s/1w4B4_hmiiueNDJMjYKaFyQ 提取码: fkpx 2.修改·vmoptions 1.Help" - ...
- 最新IDEA永久激活攻略
前言 写这篇文章的原因是我最近想自己写两个项目,却发现自己的IDEA过期了,对,就是那个JAVA编辑器,于是研究了一下IDEA的激活.发现网上的攻略大多数不可用. 当然这里推荐大家去官网购买正版使用. ...
- Spring Cloud(二):Web服务客户端之Ribbon
上文介绍了服务如何通过Eureka实现注册,以及如何从Eureka获取已经注册的服务列表.那么拿到注册服务列表后, 如何进行服务调用?一个简单的实现是可以从被调用服务的实例列表中选择一个服务实例,通过 ...
- scalikeJDBC的restapi
ScalikeJDBC是一个Scala的JDBC框架,适用于绝大多数RDBMS数据库(关系数据库) 重要的是,在这几天简单的使用了一下,用sqlserver来测试了一下用mysql或者h2的scali ...
- Java 中的foreach(增强for循环)
foreach概述 增强for循环:底层使用的是送代器,使用for循环的格式,简化了送代器的书写,foreach是JDK1.5之后出现的新特性 使用增强for循环 遍历集合 /** * 遍历集合 * ...
- 巧用位运算规律 Flags
找规律 (1 ) &1 =1 (1 ) &2 =0 (1 ) &3 =1 (1 ) &4 =0 (1 ) &5 =1 (1 ) &6 =0 (1 ) & ...