Main Content

DL-SCH と UL-SCH の LDPC 処理

この例では、5G NR のダウンリンクとアップリンクの共有トランスポート チャネル (DL-SCH と UL-SCH) の低密度パリティ チェック (LDPC) 符号化チェーンについて説明します。

共有チャネル パラメーター

この例では、DL-SCH を使用して処理について説明しますが、UL-SCH にも適用されます。

ダウンリンク共有チャネル (DL-SCH) で送信されるトランスポート ブロックのパラメーターを選択します。

rng(210);              % Set RNG state for repeatability

A = 10000;             % Transport block length, positive integer
rate = 449/1024;       % Target code rate, 0<R<1
rv = 0;                % Redundancy version, 0-3
modulation = 'QPSK';   % Modulation scheme, QPSK, 16QAM, 64QAM, 256QAM
nlayers = 1;           % Number of layers, 1-4 for a transport block

選択されたトランスポート ブロック長とターゲット符号化率に基づき、関数nrDLSCHInfoを使用して DL-SCH 符号化パラメーターを決定します。

% DL-SCH coding parameters
cbsInfo = nrDLSCHInfo(A,rate);
disp('DL-SCH coding parameters')
disp(cbsInfo)
DL-SCH coding parameters
    CRC: '24A'
      L: 24
    BGN: 1
      C: 2
    Lcb: 24
      F: 244
     Zc: 240
      K: 5280
      N: 15840

DL-SCH ではマルチ コードワード伝送 (2 つのトランスポート ブロック) をサポートし、UL-SCH ではシングル コードワード伝送のみをサポートします。UL-SCH では、上記の DL-SCH の処理に加え、pi/2-BPSK 変調もサポートします。

LDPC 符号化を使用したトランスポート ブロック処理

MAC レイヤーから物理レイヤーに送信されるデータは、トランスポート ブロックと呼ばれます。ダウンリンク共有チャネル (DL-SCH) の場合、トランスポート ブロックは次の処理段階を経由します。

  • CRC の付加

  • コード ブロックのセグメンテーションとコード ブロック CRC の付加

  • LDPC を使用したチャネル符号化

  • レート マッチングとコード ブロックの連結

これは、スクランブル、変調、レイヤー マッピング、リソース/アンテナ マッピングのために、物理ダウンリンク共有チャネル (PDSCH) に渡される前に行われます。これらの各段階は、次に示す関数によって実行されます。

% Random transport block data generation
in = randi([0 1],A,1,'int8');

% Transport block CRC attachment
tbIn = nrCRCEncode(in,cbsInfo.CRC);

% Code block segmentation and CRC attachment
cbsIn = nrCodeBlockSegmentLDPC(tbIn,cbsInfo.BGN);

% LDPC encoding
enc = nrLDPCEncode(cbsIn,cbsInfo.BGN);

% Rate matching and code block concatenation
outlen = ceil(A/rate);
chIn = nrRateMatchLDPC(enc,outlen,rv,modulation,nlayers);

レート マッチングとコード ブロックの連結処理による出力ビット数は、利用可能なリソースに基づいて、PDSCH のビット容量と一致しなければなりません。この例では、PDSCH はモデル化されていないため、前に選択したトランスポート ブロック サイズに基づいてターゲット符号化率を達成するように設定されます。

UL-SCH の場合も同様の処理が適用されますが、物理アップリンク共有チャネル (PUSCH) が UL-SCH コードワードを受信します。次の図は、この 2 つのチャネルの処理を示しています。

トランスポート ブロックごとの処理をカプセル化するnrDLSCHSystem object とnrULSCHSystem object を参照してください。これは、再送信のためのサポートも備えています。

チャネル

この例では、ノイズのないシンプルなバイポーラ チャネルを使用します。PDSCH または PUSCH の完全な処理では、フェージング チャネル、AWGN、その他の RF劣化要因も考慮できます。

chOut = double(1-2*(chIn));

LDPC 復号化を使用した受信処理

DL-SCH チャネルの受信端処理は、次を含む送信端処理に対応するデュアル操作で構成されます。

  • レート リカバリ

  • LDPC 復号化

  • コード ブロックのデセグメンテーションと CRC 復号化

  • トランスポート ブロックの CRC 復号化

これらの各段階は、次に示す関数によって実行されます。

% Rate recovery
raterec = nrRateRecoverLDPC(chOut,A,rate,rv,modulation,nlayers);

% LDPC decoding
decBits = nrLDPCDecode(raterec,cbsInfo.BGN,25);

% Code block desegmentation and CRC decoding
[blk,blkErr] = nrCodeBlockDesegmentLDPC(decBits,cbsInfo.BGN,A+cbsInfo.L);

disp(['CRC error per code-block: [' num2str(blkErr) ']'])

% Transport block CRC decoding
[out,tbErr] = nrCRCDecode(blk,cbsInfo.CRC);

disp(['Transport block CRC error: ' num2str(tbErr)])
disp(['Recovered transport block with no error: ' num2str(isequal(out,in))])
CRC error per code-block: [0  0]
Transport block CRC error: 0
Recovered transport block with no error: 1

表示が示すように、コードブロックとトランスポート ブロックの両レベルで、CRC エラーはありません。ノイズレス チャネルの場合は予想どおり、トランスポート ブロックがエラーなしで復元され、復号化されます。

コードワードごとの受信処理をカプセル化するnrDLSCHDecoderSystem object とnrULSCHDecoderSystem object を参照してください。これは、性能向上のための再送信のソフトコンバインも備えています。

参考

関数

関連するトピック