ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

comm.CRCGenerator System object

パッケージ: comm

CRC 符号ビットを生成し入力データに付加する

説明

CRCGenerator オブジェクトは入力データ フレームごとに巡回冗長検査 (CRC) ビットを生成し、それらをフレームに付加します。入力はバイナリ列ベクトルでなければなりません。

巡回冗長コード ビットを生成し入力データに付加するには、以下の手順に従います。

  1. CRC 発生器オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.CRCDetector のプロパティに従い、入力データ フレームごとに巡回冗長検査 (CRC) ビットを生成します。step の動作は、ツールボックスの各オブジェクト固有のものです。

構築

H = comm.CRCGenerator は、巡回冗長コード (CRC) 発生器 System object™ H を作成します。このオブジェクトは、指定された生成多項式に従って CRC ビットを生成し、それらを入力データに付加します。

H = comm.CRCGenerator(Name,Value) は、指定の各プロパティが指定の値に設定された CRC 発生器オブジェクト H を作成します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前と値のペアの引数を任意の順番で指定できます。

H = comm.CRCGenerator(POLY,Name,Value) は、CRC 発生器オブジェクト H を作成します。このオブジェクトは、Polynomial プロパティを POLY に設定しており、指定の他のプロパティは指定の値に設定しています。

プロパティ

Polynomial

生成多項式

係数を降べきの順にした、バイナリまたは整数の列ベクトルとして生成多項式を指定します。既定の設定は [1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1] であり、ベクトル [16 12 5 0] と等価です。このプロパティをバイナリ ベクトルに設定した場合、その長さは多項式の次数に 1 を加算したものに等しくなければなりません。このプロパティを整数ベクトルに設定した場合、その値は、多項式の非ゼロの項の指数を含まなければなりません。たとえば、[1 0 0 0 0 0 1 0 1][8 2 0] は同一の多項式 g(z)=z8+z2+1 を表します。次の表は、一般に使用される生成多項式の一覧です。

CRC メソッド生成多項式
CRC-32[32 26 23 22 16 12 11 10 8 7 5 4 2 1 0]
CRC-24 [24 23 14 12 8 0]
CRC-16 [16 15 2 0]
反転 CRC-16[16 14 1 0]
CRC-8[8 7 6 4 2 0]
CRC-4 [4 3 2 1 0]

InitialConditions

シフト レジスタの初期条件

シフト レジスタの初期条件を、バイナリ、倍精度または単精度のデータ型のスカラーまたはベクトルとして指定します。既定の設定は 0 です。ベクトル長は、Polynomial プロパティで指定する生成多項式の次数と同じでなければなりません。初期条件をスカラーとして指定すると、オブジェクトは、その値を生成多項式の次数に等しい長さの行ベクトルに拡張します。

DirectMethod

直接法 (論理値)

このプロパティを true に設定すると、CRC チェックサムの計算に直接アルゴリズムが使用されます。このプロパティを false に設定すると、CRC チェックサムの計算に非直接アルゴリズムが使用されます。このプロパティの既定値は false です。

直接アルゴリズムおよび非直接アルゴリズムについての詳細は、「Communications System Toolbox」、「システム設計」、「誤りの検出と訂正」、「巡回冗長検査コーディング」、「CRC アルゴリズム」のセクションを参照してください。

ReflectInputBytes

入力バイトを反転する

このプロパティを true に設定すると、シフト レジスタに入力する前に入力データがバイト単位で反転されます。このプロパティを true に設定した場合、入力フレーム長を ChecksumsPerFrame プロパティの値で除算した結果が 8 の整数倍でなければなりません。このプロパティの既定値は false です。

ReflectChecksums

最終の XOR の前にチェックサムを反転する

このプロパティを true に設定すると、入力データがシフト レジスタを完全に通過した後に CRC チェックサムが 180°反転されます。このプロパティの既定値は false です。

FinalXOR

最終 XOR 値

CRC チェックサムとの間で XOR 演算を行う値をバイナリ スカラーまたはベクトルとして指定します。XOR 演算は入力データを追加する直前に実行されます。ベクトル長は、Polynomial プロパティで指定する生成多項式の次数です。最終 XOR 値をスカラーとして指定すると、その値が生成多項式の次数に等しい長さの行ベクトルに拡張されます。このプロパティの既定値は 0 で、XOR 演算を実行しないことと同等です。

ChecksumsPerFrame

入力フレームごとのチェックサムの数

オブジェクトが各入力フレームのために正の整数として計算するチェックサムの数を指定します。既定の設定は 1 です。整数は、各入力フレームの長さを等分するものでなければなりません。オブジェクトは次のアクションを実行します。

  1. 各入力フレームを等しいサイズの ChecksumsPerFrame 個のサブフレームに分割する

  2. 初期条件ベクトルを各サブフレームの前に置く

  3. それぞれの拡張されたサブフレームに CRC アルゴリズムを適用する

  4. 各サブフレームの終わりに結果のチェックサムを付加する

  5. 連結したサブフレームを出力する

たとえば、入力フレーム サイズを 10 に、生成多項式の次数を 3 に、InitialConditions プロパティを 0 に、そして、ChecksumsPerFrame プロパティを 2 に設定できます。この場合、オブジェクトは各入力フレームをサイズ 5 の 2 つのサブフレームに分け、サイズ 3 のチェックサムを各サブフレームに追加します。この例では、出力フレームのサイズは 10+2×3=16 になります。

メソッド

clone同一プロパティ値をもつ CRC 発生器オブジェクトを作成する
getNumInputsstep メソッドへの予想される入力数
getNumOutputsstep メソッドからの出力数
isLocked入力属性と調整不可能なプロパティのロック状態
releaseプロパティ値と入力特性の変更を許可する
resetCRC 発生器オブジェクトの状態のリセット
stepCRC 符号ビットを生成し入力データに付加する

信号を符号化し、エラーを検出します。

    % Transmit two message words of length 6
    x = logical([1 0 1 1 0 1 0 1 1 1 0 1]');

    % Encode the message words using a CRC generator
    hGen = comm.CRCGenerator([1 0 0 1], 'ChecksumsPerFrame',2);
    codeword = step(hGen, x);

    % Add one bit error to each codeword
    errorPattern = randerr(2,9,1).';
    codewordWithError = xor(codeword, errorPattern(:)); 

    % Decode messages with and without errors using a CRC decoder
    hDetect = comm.CRCDetector([1 0 0 1], 'ChecksumsPerFrame',2);
    [tx, err] = step(hDetect, codeword); 
    [tx1, err1] = step(hDetect, codewordWithError);
    disp(err) % err is [0;0], no errors in transmitted message words
    disp(err1) % err1 is [1;1], errors in both transmitted message words

アルゴリズム

このオブジェクトは、CRC-N Generator ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。

この情報は役に立ちましたか?