Main Content

nrCodeBlockSegmentLDPC

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

説明

cbs = nrCodeBlockSegmentLDPC(blk,bgn) は、TS 38.212 の Section 5.2.2 [1]で規定されているように、ベース グラフ番号 bgn に基づいて、入力データ ブロック blk をコード ブロック セグメントに分割します。この関数は、巡回冗長検査 (CRC) とフィラー ビットを cbs の各コード ブロック セグメントに追加します (該当する場合)。nrCodeBlockSegmentLDPC は、ダウンリンクとアップリンクの共有チャネル、およびページング チャネルを含むトランスポート チャネルの低密度パリティチェック (LDPC) コーダーに入力を提供します。

すべて折りたたむ

バイナリ入力データのランダム シーケンスを作成します。

in = randi([0,1],4000,1);

LDPC コード ブロック セグメンテーションを実行します。

cbs1 = nrCodeBlockSegmentLDPC(in,1); 
cbs2 = nrCodeBlockSegmentLDPC(in,2);

ベース グラフ番号が 1 の場合、セグメンテーションの結果は 1 つのコード ブロック セグメントになります。ベース グラフ番号が 2 の場合、セグメンテーションの結果は 2 つのコード ブロック セグメントになります。セグメンテーションは、入力長が最大コード ブロック サイズより大きい場合にのみ生じます。最大コード ブロック サイズは、ベース グラフ番号が 1 のとき 8448、ベース グラフ番号が 2 のとき 3840 になります。

size(cbs1)
ans = 1×2

        4224           1

size(cbs2)
ans = 1×2

        2080           2

ランプ データ入力を作成し、コード ブロック セグメンテーションを実行します。

cbs = nrCodeBlockSegmentLDPC([1:4000]',2);

長さ 4000 のこの入力は、24B CRC とフィラー ビットが付加された 2 つの同じサイズのコード ブロック セグメントに分割されます。入力が出力にどのようにマッピングされるかを確認するには、対応するコード ブロック セグメントのインデックスを基準にして入力データのインデックスをプロットします。

plot(cbs)
legend('CBS1','CBS2')
xlabel('Code Block Bit Indices');
ylabel('Input Data Bit Indices + CRC/Filler');
title('Code Block Segmentation Operation')

Figure contains an axes object. The axes object with title Code Block Segmentation Operation contains 2 objects of type line. These objects represent CBS1, CBS2.

入力引数

すべて折りたたむ

入力データ ブロック。実数の列ベクトルとして指定します。

データ型: double | int8 | logical

ベース グラフ番号。1 または 2 として指定します。

データ型: double

出力引数

すべて折りたたむ

コード ブロック セグメント。整数または実数の行列として返されます。各列は、個別のコード ブロック セグメントに対応します。コード ブロック セグメントの数は、LDPC コーダーの最大コード ブロック サイズ Kcb と、入力 blk の長さ B によって異なります。bgn1 に設定されている場合、Kcb = 8448 です。bgn2 に設定されている場合、Kcb = 3840 です。BKcb の場合、関数はセグメンテーションを実行せず、結果のコード ブロックに CRC を追加しません。B > Kcb の場合、24B CRC タイプのビットが追加されたいくつかの小さなコード ブロックにセグメンテーションされます。

関数は、必要に応じて (CRC の有無にかかわらず) 各コード ブロックにフィラー ビットを追加します。フィラー ビットは、LDPC コーダーに入力するコード ブロック セグメントが必ず有効な長さをもち、かつ LDPC リフティング サイズの倍数になるようにします。–1 で表されるフィラー ビットに対応するものとして、入力 blk が logical の場合、cbs のデータ型は int8 にキャストされます。それ以外の場合、cbs は入力 blk のデータ型を継承します。

データ型: double | int8

参照

[1] 3GPP TS 38.212. “NR; Multiplexing and channel coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2018b で導入