Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

コシミュレーション ウィザードを使用して MATLAB コンポーネント関数で HDL モジュールを検証する

このチュートリアルでは、コシミュレーション ウィザードを使用して、MATLAB® と HDL シミュレータ間の HDL Verifier™ コシミュレーションを設定するための基本的な手順について説明します。

コシミュレーション ウィザードは、MATLAB または Simulink® とハードウェア記述言語 (HDL) シミュレータ間のコシミュレーションを設定するプロセスをガイドするグラフィカル ユーザー インターフェイス (GUI) です。サポートされている HDL シミュレータには、Mentor Graphics® の ModelSim® および Questa®、Cadence Xcelium® などがあります。

このチュートリアルでは、MATLAB と ModelSim を使用して、Verilog® で記述されたレイズド コサイン フィルターのレジスタ転送レベル (RTL) 設計を検証します。レイズドコサインフィルタは、デジタル通信システムのパルス整形フィルタとしてよく使用されます。変調パルスの入力に対して符号間干渉 (ISI) は発生しません。

レイズド コサイン フィルタへの刺激を生成するために、HDL テスト ベンチが提供されます。HDL 実装の正確さを検証するために、テスト ベンチは、レイズド コサイン フィルターの参照モデルをインスタンス化する MATLAB コールバック関数を呼び出します。テストベンチは、参照モデルの出力を HDL 実装の出力と比較します。

コシミュレーション ウィザード は、提供された Verilog ファイルを入力として受け取ります。また、各ステップでコシミュレーションを設定するために必要なユーザー入力も収集します。チュートリアルの最後に、コシミュレーション ウィザード によって、HDL デザインをコンパイルする MATLAB スクリプト、コシミュレーション用に HDL シミュレーターを起動する MATLAB スクリプト、および MATLAB コールバック関数のテンプレートが生成されます。生成されたテンプレートを変更してレイズド コサイン フィルターを実装した後、HDL 実装の正確性を確認できます。Vivado® コシミュレーションは MATLAB 関数ではサポートされていないことに注意してください。

このチュートリアルには、ModelSim または Xcelium™ HDL シミュレータが必要です。このチュートリアルでは、MATLAB 関数の HDL コードをインポートする を読んでいることも前提としています。

HDL テスト ベンチは、2 つのレイズド コサイン フィルター コンポーネント (HDL コンポーネントと、MATLAB コールバック関数に関連付けられた MATLAB コンポーネント) をインスタンス化します。テスト ベンチは、両方のフィルター コンポーネントに刺激を生成し、それらの出力を比較します。

tutorial_ml_testbench.gif

コシミュレーション ウィザードを起動 (MATLAB)

  1. MATLAB を開始します。

  2. MATLAB コマンド プロンプトで cosimWizard と入力して、コシミュレーション ウィザードを起動します。

コシミュレーション ウィザードを使用してコンポーネント関数を構成する

このチュートリアルでは、次の Cosimulation Wizard ページで HDL Verifier コンポーネント関数を作成します。

コシミュレーション タイプを指定する (MATLAB)

コシミュレーション タイプ ペインで:

  1. HDL コシミュレーション オプションを MATLAB に変更します。

  2. ModelSim を使用している場合は、HDL シミュレータ オプションを ModelSim のままにしておきます。Xcelium を使用している場合は、HDL Simulator オプションを Xcelium に変更します。

  3. HDL シミュレータ実行ファイルがシステム パスに表示される場合は、デフォルト オプション システム パス上の HDL シミュレータ実行ファイルを使用する オプションのままにします。実行ファイルがパスに表示されない場合は、コシミュレーションタイプ—MATLAB関数 の説明に従って HDL シミュレータ パスを指定します。

  4. 次へ をクリックして、HDL ファイル ページに進みます。

tutorial_rcosflt_ml1.png

HDL ファイルを選択 (MATLAB)

HDL ファイル ペインで:

  1. Verilog ファイル filter_tb.vrcosflt_rtl.vrcosflt_beh.v を選択します。ファイル ブラウザで複数のファイルを選択するには、Ctrl キーを押しながらマウスでファイルを選択します。

  2. ファイル リスト内のファイルを確認し、ファイルの種類が期待どおりに識別されていることを確認します。

  3. 次へ をクリックして、HDL コンパイル ページに進みます。

tutorial_rcosflt_ml2.png

HDL コンパイル コマンドを指定する (MATLAB)

コシミュレーション ウィザードは、コンパイル コマンド ウィンドウにデフォルトのコマンドを一覧表示します。このチュートリアルでは、これらのデフォルトを変更する必要はありません。

  1. コンパイル コマンドを調べます。

  • ModelSim ユーザー:HDL コンパイル ペインは次のようになります。

tutorial_rcosflt_ml3.png

  • Xcelium ユーザー:HDL コンパイル コマンドは次のようになります。

SRC1="C:/MyTests"

xmvlog -64bit "$SRC1/filter_tb.v" "$SRC1/rcosflt_beh.v" "$SRC1/rcosflt_rtl.v"

2. 次へ をクリックして、HDL モジュール ペインに進みます。MATLAB コンソールにコンパイル ログが表示されます。コンパイル中にエラーが発生した場合、そのエラーはステータス領域に表示されます。次の手順に進む前に、エラーを解消するために可能な設定を変更してください。

コシミュレーション用の HDL モジュールの選択 (MATLAB)

HDL モジュール ペインで:

  1. 協調シミュレーションの HDL モジュール/エンティティの名前を指定します。コシミュレーションする HDL モジュールの名前 で、ドロップダウン リストから filter_tb を選択して、コシミュレーションに使用する Verilog モジュールを指定します。ドロップダウン リストに filter_tb が表示されない場合は、手動で入力できます。

  2. 接続方法では、ファイアウォール ポリシーで TCP/IP ソケット通信が許可されていない場合は、Shared Memory を選択します。

  3. 次へ をクリックして、コールバック スケジュール ページに進みます。

tutorial_rcosflt_ml4.png

コシミュレーション ウィザードは、指定された HDL モジュールとシミュレーション オプションを使用して、バックグラウンド コンソールで HDL シミュレーターを起動します。ウィザードが HDL シミュレータを起動すると、コールバック スケジュール ページが表示されます。Windows® システムでは、コンソールは開いたままになります。今はコンソールを閉じないでください。コシミュレーションが完了したらコンソールを閉じます。

コールバックスケジュールを指定する

コールバック スケジュール ペインで次の操作を行います。

  1. コールバック タイプmatlabcp (デフォルト) のままにします。このタイプは、コシミュレーション ウィザードに、HDL シミュレータとのコシミュレーション用のコンポーネントとして MATLAB コールバック関数を作成するように指示します。

  2. コールバック関数名callback_fcnのままにします。コシミュレーション ウィザードは、生成された MATLAB コールバック関数にこの名前を付けます。

  3. HDL コンポーネント の場合は、参照 をクリックします。選択範囲を展開するには、「filter_tb」の横にある展開アイコンをクリックします。u_rcosflt_beh を選択し、OK をクリックします。コシミュレーション ウィザードに対して、HDL シミュレータがこのコンポーネントを MATLAB コールバック関数に関連付けることを指定しました。

  4. トリガー モードRising Edge に設定します。

  5. トリガー信号の場合は、参照をクリックします。選択範囲を展開するには、「filter_tb」の横にある展開アイコンをクリックします。u_rcosflt_behを選択する。右側のポート リストで、clk を選択します。[OK] をクリックします。

  6. [追加] をクリックします。コシミュレーション ウィザードは、次の図に示すように、HDL モジュール u_rcosflt_beh を MATLAB 関数 callback_fcn に関連付ける対応する matlabcp コマンドを生成します。

tutorial_rcosflt_ml5.png

コールバック パラメータの詳細については、matlabcp のリファレンス ページを参照してください。

スクリプトの生成

  1. このダイアログを終了した後に HDL シミュレータを起動する を選択したままにします

  2. [完了] をクリックして、コシミュレーション ウィザード セッションを完了し、スクリプトを生成します。

tutorial_rcosflt_ml6.png

コールバック関数のカスタマイズ

コシミュレーション ウィザードで [完了] をクリックすると、アプリケーションによって現在のディレクトリに 3 つの MATLAB ファイルが生成されます。

  • compile_hdl_design.m: HDL 設計を再コンパイルします。

  • launch_hdl_simulator.m: MATLAB サーバーを再起動し、HDL シミュレーターを起動します。

  • callback_fcn.m: MATLAB コールバック関数。

HDL シミュレータを起動するだけでなく、HDL Verifier ソフトウェアは MATLAB エディタを開き、callback_fcn.m をロードします (部分的な画像を表示)。

tutorial_callback_fcn.gif

生成されたテンプレートは 4 つの部分で構成されます。

  • コールバック関数の内部状態を初期化します。

  • HDL コンポーネントから信号を読み取ります。

  • HDL コンポーネントに信号を書き込みます。

  • 内部状態を更新します。

以下の手順に従ってテンプレートを変更し、MATLAB でレイズド コサイン フィルターをモデル化できます。

メモ: 変更されたコールバック関数は、現在の作業ディレクトリ mycallback_solution.m in にあります。このファイルを使用して、現在のディレクトリにあるファイルを上書きできます。ファイルに「callback_fcn.m」という名前を付け、関数名を callback_fcn に変更します。

内部状態の定義

2 つの内部状態を定義します。フィルター入力を保持する 49 要素のベクトルとフィルター係数のベクトルです。

callback_fcn.m を編集して、内部状態セクションに次のコードが含まれるようにします。

tutorial_cbfunc_internalstates.gif

HDL コンポーネントから信号を読み取る

フィルター入力を読み取り、MATLAB の 10 進数に変換します。

callback_fcn.m を編集して、読み取り信号セクションに次のコードが含まれるようにします。

tutorial_cbfunc_readsignal.gif

HDL コンポーネントへの信号の書き込み

入力「リセット」信号はフィルター出力を制御します。リセットが低い場合、出力は前の入力とフィルタ係数の積になります。MATLAB は、10 進数の結果を HDL コンポーネントの多値ロジック出力に変換します。

callback_fcn.m を編集して、書き込み信号セクションに次のコードが含まれるようにします。

tutorial_cbfunc_writesignal.gif

内部状態の更新

フィルター入力を使用して、内部の 49 要素の状態を更新します。

callback_fcn.m を編集して、内部状態の更新セクションに次のコードが含まれるようにします。

tutorial_cbfunc_updateinternalstates.gif

コシミュレーションを実行して HDL 設計を検証する

HDL シミュレータに切り替えて、HDL シミュレータ コンソールに次のコマンドを入力します。

run 200 ns

HDL シミュレーターに次の出力が表示されます。

tutorial_ml_results.gif

これらのメッセージは、HDL コンポーネントの出力が MATLAB コンポーネントの出力と一致することを示します。

参考

関連するトピック