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

猜你喜欢

转载自www.cnblogs.com/zzyzz/p/12343182.html