Main Content

nrCRCEncode

巡回冗長検査 (CRC) の計算と追加

説明

blkcrc = nrCRCEncode(blk,poly) は、入力データ blk の多項式 poly によって定義される CRC を計算します。関数は、CRC パリティ ビットが追加された入力データのコピーである CRC 符号化データを返します。関連する多項式の詳細については、TS 38.212 の Section 5.1 [1]を参照してください。

blkcrc = nrCRCEncode(blk,poly,mask) は、mask の整数値を使用して、追加された CRC ビットに論理差 (XOR) マスクを適用します。blkcrc に追加された CRC ビットは、まず最上位ビット (MSB) から最後に最下位ビット (LSB) まで XOR マスクされます。マスクされた CRC の形式は (p0 xor m0)、(p1 xor m1)、…、(pL-1 xor mL-1) です。ここで、L はパリティ ビットの数で、p0m0 はそれぞれ CRC と mask のバイナリ表現における MSB です。マスク値が 2L - 1 より大きい場合、マスクとみなされるのは L 個の LSB です。

すべて折りたたむ

CRC パリティ ビットを計算し、2 つのデータ ブロックからなるすべてゼロの行列に追加します。結果は、サイズ 124 行 2 列のすべてゼロの行列になります。

blkcrc = nrCRCEncode(zeros(100,2),'24C');
any(blkcrc(:,1:2));

マスクされた CRC パリティ ビットを計算し、2 つのデータ ブロックからなるすべてゼロの行列に追加します。追加された CRC ビットは、MSB から始めて最後に LSB まで、指定された mask で XOR マスクされます。結果は、最終位置の要素以外はすべてゼロの行列になります。

mask = 1;
blkcrc = nrCRCEncode(zeros(100,2),'24C',mask);
blkcrc(end-5:end,1:2)
ans = 6×2

     0     0
     0     0
     0     0
     0     0
     0     0
     1     1

入力引数

すべて折りたたむ

入力データ。実数の行列として指定します。行列の各列は、個別のデータ ブロックとして扱われます。

データ型: double | int8 | logical

CRC 多項式。'6''11''16''24A''24B'、または '24C' として指定します。関連する多項式の詳細については、TS 38.212 の Section 5.1 を参照してください。

データ型: char | string

XOR マスク。非負の整数として指定します。マスクは通常、無線ネットワーク一時識別子 (RNTI) です。

データ型: double

出力引数

すべて折りたたむ

CRC 符号化データ。実数の行列として返されます。blkcrc は、CRC パリティ ビットが追加された入力 blk のコピーです。各列は、個別の CRC 符号化コード ブロックに対応します。blkcrc は入力 blk からデータ型を継承します。

データ型: double | int8 | logical

参照

[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 で導入