Main Content

HDL に最適化された CRC ライブラリ ブロックの使用

この例では、HDL に最適化された CRC 発生器および CRC 検出器のライブラリ ブロックを使用して、IEEE® 802.11 規格 [ 1 ] を満たすようにこれらのブロックを構成する方法を説明します。

はじめに

このモデルでは、HDL に最適化された CRC 発生器および CRC 検出器のライブラリ ブロックを、シミュレーションと HDL コード生成に使用する方法を示します。適用規格として 802.11 規格が使用されています。HDL 最適化 CRC ブロックの HDL サポートの詳細については、General CRC Generator HDL Optimizedブロックを参照してください。このブロックで使用されているアルゴリズムの詳細については、[ 2 ] の文献を参照してください。

この例のモデルを開くには、次のコマンドを実行します。

modelname = 'commcrchdl';
open_system(modelname);

このモデルでは、最上位サブシステム CRC Subsystem に HDL 最適化 CRC 発生器および CRC 検出器のブロックが含まれています。また、このサブシステムには、生成された CRC チェックサムへのノイズの追加を選択できる AddNoise サブシステムが含まれています。このサブシステムを開くには、次のコマンドを実行します。

systemname = [modelname '/CRC Subsystem'];
open_system(systemname);

パラメーター設定

  • Polynomial

CRC-CCITT は、SIGNAL、SERVICE および LENGTH フィールドを保護するために IEEE® 802.11 規格で使用されています。行ベクトル [1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1] は次の多項式を表します。

  • Initial state

デモの HDL 最適化 CRC Generator ブロックでは直説法を使用しています。つまり、メッセージをチェックサム シフト レジスタの最上位ビット (MSB) に入れ、ゼロをパディングせずにそのメッセージを処理します。IEEE 802.11 CRC 実装のブロック線図は 802.11 規格の図 15-2 に示されています。"Initial state"1 として設定されます。

  • Final XOR value

"Final XOR value" は、CRC チェックサムの 1 の補数を実装するために 0xFFFF として設定されます。

入力信号

このモデルのテスト ベクトルは、802.11 規格で指定されている DBPSK 信号の例を使用しています。crc_len のゼロでパディングされたテスト データはストリーミング モードの 16 ビット/サンプルで処理されます。CRC 発生器の入力端子 dataIn の端子幅である変数 dataIn_width はデータ処理速度を定義します。mlen は制御信号 startInendIn、および validIn の周期を定義します。dlenvalidIn 信号のパルス幅を定義します。入力信号は [Model Properties] ダイアログ ボックスのコールバック関数 InitFcn で設定されます。

 %DBPSK data
 data = [0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0];
 crc_len = 16;
 % pad crc_len zero
 msg = [data zeros(1,crc_len)];
 dataIn_width = 16;
 mlen = length(msg)/dataIn_width;
 dlen = length(data)/dataIn_width;

独自の設計要件を満たすために、この例の dataIn_width を、8、4、2、または 1 ビットに変更できます。たとえば、56 ビットの長さのデータを処理している場合、8 ビットのゼロをパディングして dataIn_width に 16 を使用する以外にも、dataIn_width を 8 にして mlendlen が確実に整数になるように選択することもできます。

出力信号

次のコマンドを使用してモデルを実行します。

sim(modelname);

いくつかの主要な信号は、ワークスペースにログ記録されています。これらの信号は、ロジック アナライザー ウィンドウで確認できます。関数 commcrchdl_plot はロジック アナライザーの表示の設定方法を示しています。ロジック アナライザーの System object™ についての詳細は、dsp.LogicAnalyzerを参照してください。

h = commcrchdl_plot(dataIn,startIn,endIn,validIn,...
                dataOut_gen,startOut_gen,endOut_gen,validOut_gen,...
                dataIn_det,dataOut_det,startOut_det,endOut_det,validOut_det,err);

dataInstartInendIn および validIn は入力データであり、HDL CRC 発生器への制御信号です。dataOut_gen (CRC 発生器の出力) は、サンプルにつき dataIn_width ビットごとに追加されたチェックサムとともにメッセージを表示します。出力波形内で endOut_gen が高いときにチェックサムを読み取ることができます。値 0x5B57 は 802.11 規格の節 15.2.3.6 に指定されている CRC-16 FCS に一致します。dataIn_det は破損したチェックサムとともにメッセージを表示します。dataOut_det は CRC 検出器のメッセージ出力を表示します。誤りは err 信号が高のときに検出されます。errendOut_det がアクティブな場合に有効です。

初期遅延は CRC 発生器および CRC 検出器の出力で発生します。次のコマンドを使用して初期遅延を計算できます。

 initial_delay_gen =  crc_len/dataIn_width + 2;
 initial_delay_det =  4*crc_len/dataIn_width + 4;

HDL コードのチェックと生成

この例の HDL コードをチェックして生成するには、HDL Coder™ ライセンスが必要です。

コマンド makehdl(subsystemname)makehdltb(subsystemname) を使用して、サブシステムの HDL コードとテストベンチを生成できます。

サブシステム名を 'commcrchdl/CRC Subsystem/HDL CRC in Transmitter' または 'commcrchdl/CRC Subsystem/HDL CRC in Receiver' として指定します。

参考文献

  1. IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications.(2007 revision).IEEE-SA.12 June 2007.

  2. Giuseppe Campobello, Giuseppe Patane, Marco Russo."Parallel CRC Realization," IEEE Transactions on Computers, vol. 52, no. 10, pp. 1312-1319, October, 2003.