Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

General CRC Generator

生成多項式に基づいて CRC 符号ビットを生成し、入力データ フレームに付加する

  • General CRC Generator block

ライブラリ:
Communications Toolbox / Error Detection and Correction / CRC

説明

General CRC Generator ブロックは入力データ フレームごとに巡回冗長検査 (CRC) 符号ビットを生成し、それらをフレームに付加します。詳細については、CRC 発生器の動作を参照してください。

すべて展開する

Simulink® ブロックを使用することによって生成多項式 g(x) = x³ + x + 1 と間接アルゴリズムで CRC を構成してフレームに CRC ビットを付加し、その結果を、同じ構成をもつ Communications Toolbox™ の General CRC Generator ブロックの演算と比較します。

cm_crcgen_indirect モデルは、レジスタが特定の初期状態に設定された状態で、長さ 6 ビットの既知の入力メッセージについて両方の CRC 発生器を実行します。初期状態はコールバック関数 PreLoadFcn を使用してワークスペース iniStates に読み込まれます。詳細については、モデル コールバック (Simulink)を参照してください。

シミュレーションを実行すると、General CRC Generator ブロックを使用して生成された追加の CRC ビットと、Simulink® ブロックによって作成された生成多項式を使用して生成された CRC が表示されます。モデルの出力を表示し、両方の実装の結果が一致することを確認します。異なるメッセージ ビット、または異なる初期状態を使用して、モデルを実行することができます。初期状態を調整するには、シミュレーションを実行する前にワークスペース変数 iniStates を変更します。

高次多項式の指定など、CRC 発生器にその他の変更を加えるには、個々の Simulink® ブロックから作成された生成多項式のモデル ブロックのレイアウトを修正しなければなりません。ただし、General CRC Generator ブロックを再構成する場合は、パラメーターの設定の更新だけで済みます。

Simulink® ブロックを使用することによって生成多項式 g(x) = x³ + x + 1 と直接アルゴリズムで CRC を構成してフレームに CRC ビットを付加し、その結果を、同じ構成をもつ Communications Toolbox™ の General CRC Generator ブロックの演算と比較します。

cm_crcgen_direct モデルは、レジスタが特定の初期状態に設定された状態で、長さ 6 ビットの既知の入力メッセージについて両方の CRC 発生器を実行します。初期状態はコールバック関数 PreLoadFcn を使用してワークスペース iniStates に読み込まれます。詳細については、モデル コールバック (Simulink)を参照してください。

シミュレーションを実行すると、General CRC Generator ブロックを使用して生成された追加の CRC ビットと、Simulink® ブロックによって作成された生成多項式を使用して生成された CRC が表示されます。モデルの出力を表示し、両方の実装の結果が一致することを確認します。異なるメッセージ ビット、または異なる初期状態を使用して、モデルを実行することができます。初期状態を調整するには、シミュレーションを実行する前にワークスペース変数 iniStates を変更します。

高次多項式の指定など、CRC 発生器にその他の変更を加えるには、個々の Simulink® ブロックから作成された生成多項式のモデル ブロックのレイアウトを修正しなければなりません。ただし、General CRC Generator ブロックを再構成する場合は、パラメーターの設定の更新だけで済みます。

802.11™-2016、節 21.3.10.3 に示されている例の CRC-8 チェックサムを生成し、期待される CRC と比較します。

モデルの検証

802.11-2016 の CRC 計算に一致させるため、"General CRC Generator" ブロック マスクは生成多項式を $z^8 + z^2 + z + 1$、初期状態を 1、最終的な XOR パラメーターを 1 に設定し、直接法を選択します。

このシミュレーションは、802.11-2016 規格の節 21.3.10.3 にある例をモデル化する 1 つの入力フレームを処理するように構成されています。この例では、入力ビット ストリーム {m0, ... m22} は {1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1} で、期待される CRC チェックサム {c7, ... c0} は {0 0 0 1 1 1 0 0} です。生成された CRC チェックサム ビットが期待されるビットと比較され、8 ビット CRC チェックサムの各等価ビットに対して 1 が出力されます。

comparedOut =

  8x1 logical array

   1
   1
   1
   1
   1
   1
   1
   1

参考文献

[1] IEEE Std 802.11™-2016 IEEE Standard for Information Technology—Local and Metropolitan Area Networks—Specific Requirements Part 11:Wireless LAN MAC and PHY Specifications.

端子

入力

すべて展開する

入力信号。バイナリ列ベクトルとして指定します。入力フレームの長さは [Checksums per frame] パラメーターの値の倍数でなければなりません。

データ型: double | Boolean

出力

すべて展開する

出力コードワード フレーム。入力信号のデータ型を継承するバイナリ列ベクトルとして返されます。出力には、CRC ビット シーケンスが付加された入力データ フレームが含まれています。

出力フレームの長さは m + k * r です。ここで、m は入力フレームのサイズ、k はフレームあたりのチェックサムの数、r は生成多項式の次数です。

パラメーター

すべて展開する

ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。

CRC アルゴリズムの生成多項式。次のいずれかとして指定します。

  • 'z^3 + z^2 + 1' などの多項式の文字ベクトル。

  • バイナリ行ベクトル。降べきの順に並べた生成多項式の係数を表します。このベクトルの長さは (N+1) です。ここで N は生成多項式の次数です。たとえば、[1 1 0 1] は、多項式 x3+ z2+ 1 を表します。

  • 多項式の非ゼロの項の z の指数を降べきの順に含む整数行ベクトル。たとえば、[3 2 0] は、多項式 z3 + z2 + 1 を表します。

詳細については、Communications Toolbox での多項式の表現を参照してください。

既定値は CRC-16-CCITT 生成多項式です。次の表に、よく使用される生成多項式の例を示します。

CRC 名生成多項式
CRC-32'z^32 + z^26 + z^23 + z^22 + z^16 + z^12 + z^11 + z^10 + z^8 + z^7 + z^5 + z^4 + z^2 + z + 1'
CRC-24 'z^24 + z^23 + z^14 + z^12 + z^8 + 1'
CRC-16 'z^16 + z^15 + z^2 + 1'
CRC-16-CCITT'z^16 + z^12 + z^5 + 1'
反転 CRC-16'z^16 + z^14 + z + 1'
CRC-8'z^8 + z^7 + z^6 + z^4 + z^2 + 1'
CRC-4 'z^4 + z^3 + z^2 + z + 1'

例: 'z^7 + z^2 + 1'[1 0 0 0 0 1 0 1]、および [7 2 0] は同一の多項式 p(z) = z 7 + z 2 + 1 を表します。

内部シフト レジスタの初期状態。バイナリ スカラー、または生成多項式の次数に等しい長さをもつバイナリ行ベクトルとして指定します。スカラー値は、生成多項式の次数に等しい長さの行ベクトルに拡張されます。

選択すると、CRC チェックサムの計算に直接アルゴリズムが使用されます。オフにした場合、ブロックでは、CRC チェックサムの計算に非直接アルゴリズムが使用されます。

直接アルゴリズムと非直接アルゴリズムの詳細については、誤りの検出と訂正を参照してください。

選択すると、シフト レジスタに入力される前に入力データがバイト単位で反転されます。[Reflect input bytes] を選択する場合、入力フレーム長を [Checksums per frame] パラメーターの値で除算したものが、整数かつ 8 の倍数でなければなりません。[Reflect input bytes] をオフにすると、入力データは反転されません。

選択すると、入力データがシフト レジスタを完全に通過した後に CRC チェックサムが 180° 反転されます。[Reflect checksums before final XOR] をオフにすると、CRC チェックサムは反転されません。

Final XOR。バイナリ スカラー、または生成多項式の次数に等しい長さをもつバイナリ行ベクトルとして指定します。CRC を入力データに追加する前に、[Final XOR] パラメーターの値を使用して、XOR 演算を CRC チェックサムに対して実行します。スカラー値は、生成多項式の次数に等しい長さの行ベクトルに拡張されます。0 に設定すると、XOR 演算を実行しないことと等価になります。

各フレームで計算されるチェックサムの数。正の整数として指定します。

ブロックの特性

データ型

Boolean | double

多次元信号

なし

可変サイズの信号

あり

アルゴリズム

すべて展開する

参照

[1] Sklar, Bernard. Digital Communications: Fundamentals and Applications. Englewood Cliffs, N.J.: Prentice-Hall, 1988.

[2] Wicker, Stephen B. Error Control Systems for Digital Communication and Storage. Upper Saddle River, N.J.: Prentice Hall, 1995.

拡張機能

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

バージョン履歴

R2006a より前に導入