Main Content

5G New Radio 극성 코딩

이 예제에서는 5G NR(New Radio) 통신 시스템을 위해 채택된 새로운 극성 채널 코딩 기법을 중점적으로 보여줍니다. 이 예제는 3GPP에서 지정한 코드 생성의 두 가지 주요 유형 중에서 CA-Polar(CRC-Aided Polar) 코딩 방식을 모델링합니다. 이 예제에서는 극성 코딩 방식의 주요 컴포넌트를 설명하고 코드 생성, 인코딩, 디코딩(레이트 매칭 포함)을 위한 개별 컴포넌트를 다룹니다. 그리고 AWGN에서 극성 코딩 QPSK 변조 링크를 모델링하고 코딩 방식에 서로 다른 메시지 길이와 코드율을 사용할 경우의 블록 오류율 결과를 보여줍니다.

소개

5G NR 통신 시스템의 제어 채널의 채널 코딩 기법으로 극성 코드가 채택된 것은 Arikan[1]이 발견한 장점이 검증되었음을 의미하며 이에 따라 여러 응용 사례가 상용 시스템에 구축될 것입니다[6]. 채널 편파의 개념을 기반으로 하는 이 새로운 코딩 계열은 단순히 용량에 근접하는 것이 아니라 용량에 도달합니다. LDPC 코드 및 터보 코드보다 더 우수하거나 비슷한 성능을 갖추고 있으며, LTE 시스템의 제어 채널에 사용되는 테일-바이팅 컨벌루션 코드(tail-biting convolutional code)를 대체합니다. 이 방식은 BCH(broadcast channel)뿐만 아니라 eMBB(향상된 모바일 브로드밴드) 사용 사례에서 DCI/UCI(다운링크 제어 정보/업링크 제어 정보)에 적용됩니다. 또는 eMBB 데이터 채널의 채널 코딩 방식이 모든 블록 크기에 대해 유연한 LDPC로 지정됩니다.

이 예제에서는 AWGN 채널에서 QPSK 변조를 사용하여 극성 코딩 다운링크 시뮬레이션을 수행하는 컴포넌트를 중점적으로 보여줍니다. 다음 섹션에서는 개별 극성 코딩 컴포넌트에 대해 더 자세히 설명합니다.

s = rng(100);       % Seed the RNG for repeatability

시뮬레이션에 사용하는 코드 파라미터를 지정합니다.

% 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')

극성 인코딩

다음 도식은 다운링크의 송신단 처리를 자세히 나타낸 것으로, 관련 컴포넌트와 해당 파라미터가 강조 표시되어 있습니다.

다운링크의 경우, 입력 비트는 극성 인코딩 전에 인터리빙됩니다. 따라서 CA-Polar 방식에서 정보 비트의 끝에 추가되는 CRC 비트는 분산됩니다. 업링크에는 이러한 인터리빙이 지정되지 않습니다.

극성 인코딩은 SNR에 독립적인 방법을 사용하며 이때 각 서브 채널의 안정성은 오프라인으로 계산되고, 순서가 지정된 시퀀스는 최대 코드 길이에 대해 저장됩니다[6]. 극성 코드의 중첩 속성은 이 시퀀스를 임의의 코드율과 최대 코드 길이보다 작은 모든 코드 길이에 사용할 수 있도록 합니다.

이 시퀀스는 입력값 K비트의 비체계적 인코딩을 구현하는 함수 nrPolarEncode에 의해, 주어진 레이트 매칭 출력 길이 E와 정보 길이 K에 대해 계산됩니다.

if strcmpi(linkDir,'DL')
    % Downlink scenario (K >= 36, including CRC bits)
    crcLen = 24;      % Number of CRC bits for DL, Section 5.1, [6]
    poly = '24C';     % CRC polynomial
    nPC = 0;          % Number of parity check bits, Section 5.3.1.2, [6]
    nMax = 9;         % Maximum value of n, for 2^n, Section 7.3.3, [6]
    iIL = true;       % Interleave input, Section 5.3.1.1, [6]
    iBIL = false;     % Interleave coded bits, Section 5.4.1.3, [6]
else
    % Uplink scenario (K > 30, including CRC bits)
    crcLen = 11;
    poly = '11';
    nPC = 0;
    nMax = 10;
    iIL = false;
    iBIL = true;
end

다음 도식은 페이로드 크기가 19비트보다 크며 코드 블록 분할이 없는 업링크의 송신단 처리를 자세히 나타낸 것으로, 관련 컴포넌트와 해당 파라미터가 강조 표시되어 있습니다.

레이트 매칭과 레이트 복원

리소스 요소 매핑에 대해 지정된 비트 수(E)를 출력하기 위해, 극성 인코딩된 비트 세트(N)의 레이트 매칭이 수행됩니다[7]. 코딩된 비트는 서브-블록에 인터리빙되어 길이 N의 원형 버퍼로 전달됩니다. 원하는 코드율과 선택한 K, E, N의 값에 따라, 버퍼에서 출력 비트를 읽어 반복(E >= N)과 펑처나 단축(E < N) 중 하나가 구현됩니다.

  • 천공의 경우 E비트를 끝에서 뺍니다.

  • 단축의 경우 E비트를 시작에서 뺍니다.

  • 반복의 경우 E비트를 모듈로 N 연산으로 반복합니다.

다운링크의 경우 선택된 비트가 변조 매퍼로 전달되는 반면, 업링크의 경우 선택된 비트가 매핑 전에 추가로 인터리빙됩니다. 레이트 매칭 처리는 함수 nrRateMatchPolar로 구현됩니다.

수신단에서 다음과 같이 각 경우에 대해 레이트 복원이 수행됩니다.

  • 펑처의 경우 제거된 비트에 해당하는 LLR이 0으로 설정됩니다.

  • 단축의 경우 제거된 비트에 해당하는 LLR이 큰 값으로 설정됩니다.

  • 반복의 경우 처음 N비트에 해당하는 LLR 세트가 선택됩니다.

레이트 복원 처리는 함수 nrRateRecoverPolar로 구현됩니다.

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);

극성 디코딩

다운링크(DCI 또는 BCH) 또는 업링크(UCI) 메시지 비트의 묵시적 CRC 인코딩은 CA-SCL(CRC-Aided Successive Cancellation List Decoding)[3]을 채널 디코더 알고리즘으로 사용하도록 하고 있습니다. CA-SCL 디코딩이 터보 코드 또는 LDPC 코드보다 성능이 뛰어날 수 있다는 것은 잘 알려져 있으며[4], 이러한 점이 3GPP에서 극성 코드를 채택하게 된 주요 요인 중 하나였습니다.

Tal과 Vardy[2]는 가능도(확률)에 대한 SCL 디코딩 알고리즘을 설명합니다. 하지만 언더플로로 인해 내재적 계산은 수치적으로 불안정합니다. 이 문제를 해결하기 위해 Stimming 등은[5] LLR(로그 가능도비) 영역에서만 SCL 디코딩을 제안합니다. 리스트 디코딩은 유지될 가능성이 가장 높은 디코딩 경로 개수를 나타내는 L 파라미터로 특징지어집니다. 디코딩이 끝날 때 L개 경로 중에서 가장 가능성이 높은 코드 경로가 디코더 출력값입니다. L이 증가하면 디코더 성능도 향상되지만 수확 체감 효과(diminishing-returns effect)가 나타납니다.

CRC와 연접한 입력 메시지의 경우, CA-SCL 디코딩은 적어도 하나의 경로에 올바른 CRC가 있을 경우 CRC가 유효하지 않은 경로를 가지치기합니다. SCL 디코딩에 비해 최종 경로 선택에서 이러한 추가적인 통찰력을 활용하여 성능을 더 향상시킬 수 있습니다. 다운링크의 경우는 24비트의 CRC가 사용되는 반면 업링크의 경우는 6비트와 11비트의 CRC가 지정됩니다(K 값에 따라 달라짐).

디코더는 세 가지 CRC 길이를 모두 지원하는 함수 nrPolarDecode로 구현됩니다. 디코더 함수는 또한 디코딩된 비트를 출력하기 전에 다운링크를 위한 송신기에서 지정된 입력 비트 인터리빙을 고려합니다.

% Error meter
ber = comm.ErrorRate;

프레임 처리 루프

이 섹션에서는 앞서 설명한 극성 코딩의 컴포넌트를 BLER(블록 오류율) 시뮬레이션에서 사용하는 방법을 보여줍니다. 다음 도식에는 시뮬레이션 링크가 강조 표시되어 있습니다.

처리된 각 프레임에 대해 다음 단계가 수행됩니다.

  • K-crcLen 난수 비트가 생성됩니다.

  • CRC가 계산되고 이러한 난수 비트에 추가됩니다.

  • CRC가 추가된 비트는 상위 코드 블록(mother code block) 길이로 극성 인코딩이 수행됩니다.

  • E비트를 송신하기 위해 레이트 매칭이 수행됩니다.

  • E비트에 QPSK 변조가 수행됩니다.

  • 지정된 전력의 백색 가우스 잡음이 추가됩니다.

  • LLR 값을 출력하기 위해 잡음 신호에 소프트 QPSK 복조가 수행됩니다.

  • 레이트 복원은 펑처, 단축 또는 반복 중 하나를 고려하여 수행됩니다.

  • 복구된 LLR 값에는 디인터리빙(deinterleaving)을 비롯한 CA-SCL 알고리즘을 사용하여 극성 디코딩이 수행됩니다.

  • 디코딩된 K비트 중에서 첫 K-crcLen비트를 송신된 비트와 비교하여 BLER 및 BER(비트 오류율) 메트릭을 업데이트합니다.

시뮬레이션이 끝나면 두 가지 성능 표시자인 BLER과 BER이 보고됩니다.

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

disp(['Block Error Rate: ' num2str(numferr/numFrames) ...
      ', Bit Error Rate: ' num2str(errStats(1)) ...
      ', at SNR = ' num2str(snrdB) ' dB'])

rng(s);     % Restore RNG
Block Error Rate: 0, Bit Error Rate: 0, at SNR = 0.20002 dB

결과

의미 있는 결과를 얻으려면 더 오랜 시간 동안 시뮬레이션을 실행해야 합니다. C 코드 생성을 지원하는 함수로 위의 처리를 캡슐화하는 스크립트를 사용해, 다양한 코드율과 메시지 길이에 대한 다음 결과가 QPSK 변조를 사용한 두 링크 방향 모두에 대해 표시됩니다.

위의 결과는 각 SNR 점에 대해 최대 1000 프레임 오류 또는 최대 100e3 프레임 중 먼저 발생한 것을 시뮬레이션하여 생성되었습니다.

BLER 성능 결과는 통신 링크에서의 극성 코드 적합성과 비트 수준 조밀도에서 레이트 호환성에 대한 극성 코드의 묵시적 지원을 나타냅니다.

해당 컴포넌트를 위한 C 코드 생성 툴을 사용하면 시뮬레이션에 있어서 주요 문제인 실행 시간이 단축됩니다. C 코드 생성은 MATLAB® Coder™를 통해 이용할 수 있습니다.

요약 및 심층 탐구

이 예제에서는 3GPP가 New Radio 제어 채널 정보(DCI 및 UCI)와 BCH(broadcast channel)에 대해 지정한 극성 코딩 방식 중 하나인 CRC-Aided Polar를 중점적으로 다루었습니다. 인코딩, 레이트 매칭, 레이트 복원, 디코딩의 모든 처리 단계에서 각 컴포넌트의 용도를 설명하고, AWGN 채널에서 QPSK를 사용하는 링크에 이 컴포넌트들을 사용하는 과정을 살펴보았습니다. 파라미터와 시뮬레이션 가정의 여러 변동 내에서, 다양한 코드율과 메시지 길이에 대한 성능 결과가 발표된 여러 추세와 일관됨을 확인할 수 있습니다.

간단한 파라미터 변동(K, E, L)을 탐색해 보고 이러한 변동이 BLER 성능에 미치는 영향을 살펴보십시오. 극성 코딩 함수는 개방형 MATLAB 코드로 구현되어, 다운링크/업링크 제어 정보와 브로드캐스트 채널 모두에 응용 가능합니다. CA-Polar 방식은 다음과 같이 두 링크 모두에 적용할 수 있습니다.

  • 다운링크(모든 메시지 길이)

  • 업링크(K > 30, crcLen = 11, nPC = 0, nMax = 10, iIL = false, iBIL = true)

DCI 함수와 BCH 함수 내에서 극성 코딩 함수를 사용하는 방법은 각각 Modeling Downlink Control Information 예제와 NR 셀 탐색 및 MIB와 SIB1 복원 예제를 참조하십시오.

여기서 살펴본 극성 코딩 함수는 패리티 검사 극성 코딩 생성과 인코딩도 지원합니다. 이는 범위 18 <= K <= 25 내에 있는 UCI 페이로드가 포함된 업링크에 적용됩니다. 그리고 KE의 적절한 값에 대한 코드 블록 분할도 포함하는 업링크 제어 코딩 함수 nrUCIEncodenrUCIDecode에 의해 지원됩니다.

정선된 참고 문헌

  1. Arikan, E., "Channel Polarization: A Method for constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels," IEEE Transactions on Information Theory, vol. 55, No. 7, pp. 3051-3073, July 2009.

  2. Tal, I, and Vardy, A., "List decoding of Polar Codes", IEEE Transactions on Information Theory, vol. 61, No. 5, pp. 2213-2226, May 2015.

  3. Niu, K., and Chen, K., "CRC-Aided Decoding of Polar Codes," IEEE Communications Letters, vol. 16, No. 10, pp. 1668-1671, Oct. 2012.

  4. Niu, K., Chen, K., and Lin, J.R., "Beyond turbo codes: rate compatible punctured polar codes", IEEE International Conference on Communications, pp. 3423-3427, 2013.

  5. Stimming, A. B., Parizi, M. B., and Burg, A., "LLR-Based Successive Cancellation List Decoding of Polar Codes", IEEE Transaction on Signal Processing, vol. 63, No. 19, pp.5165-5179, 2015.

  6. 3GPP TS 38.212. "NR; Multiplexing and channel coding" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

  7. R1-1711729. "WF on circular buffer of Polar Code", 3GPP TSG RAN WG1 meeting NR Ad-Hoc#2, Ericsson, Qualcomm, MediaTek, LGE. June 2017.

참고 항목

함수

관련 항목