このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
Simulinkテストベンチで HDL モジュールを検証する
チュートリアルの概要
このチュートリアルでは、 HDL Verifier™ブロックとHDL Cosimulationブロックを使用して HDL モデルを検証するSimulink® セッションをセットアップするための基本的な手順を説明します。 。HDL Cosimulationブロックは、ModelSim®またはQuesta®ます。 。HDL Cosimulationブロックは、 VHDL®またはVerilog®モデルのシミュレーションをサポートします。
メモ
このチュートリアルはMentor Graphics®シミュレータ ユーザーに特化しています。ただし、プロセスの多くはXcelium™ユーザーでも同じです。Vivado®シミュレータを使用して協調シミュレーションを行うには、協調シミュレーション ウィザードを使用してHDL Cosimulationブロックを生成する必要があります。このワークフローの例については、 「 HDL コシミュレーション ブロックの HDL コードのインポート 」を参照してください。
VHDLコードの開発
SimulinkおよびModelSim の一般的なシナリオは、後で統合する必要がある特定のハードウェア コンポーネントのモデルをModelSimに作成することです。より大きなSimulinkモデル。最初のステップは、 VHDLでModelSim モデルを設計および開発することです。このチュートリアルでは、 ModelSimとVHDLを使用して、次のインバーターを表すモデルを開発します。
このモデルのVHDLエンティティは、IN
ポートとOUT
ポートを備えた入出力信号値の 8 ビット ストリームを表します。 STD_LOGIC_VECTOR
と入力します。STD_LOGIC
タイプの入力クロック信号が設定されると、ビット反転プロセスがトリガーされます。
次の手順を実行します。
スタートModelSim
別のチュートリアル用に作成した書き込み可能なフォルダー
MyPlayArea
に変更します。フォルダーを作成していない場合は、ここで作成します。フォルダーは書き込み可能である必要があります。ModelSim>cd C:/MyPlayArea
新しいVHDLソース編集ウィンドウを開きます。
次のVHDLコードを追加します。
--------------------------------------------------- -- Simulink and ModelSim Inverter Tutorial -- -- Copyright 2003-2004 The MathWorks, Inc. -- --------------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY inverter IS PORT ( sin : IN std_logic_vector(7 DOWNTO 0); sout: OUT std_logic_vector(7 DOWNTO 0); clk : IN std_logic ); END inverter; LIBRARY ieee; USE ieee.std_logic_1164.ALL; ARCHITECTURE behavioral OF inverter IS BEGIN PROCESS(clk) BEGIN IF (clk'EVENT AND clk = '1') THEN sout <= NOT sin; END IF; END PROCESS; END behavioral;
ファイルを
inverter.vhd
に保存します。
VHDLコードをコンパイルします
このセクションでは、デザイン ライブラリをセットアップし、 inverter.vhd
をコンパイルする方法を次のように説明します。
inverter.vhd
コマンド プロンプトでls
コマンドを入力して、ファイルModelSimが現在のフォルダーにあることを確認します。コンパイル結果を保持するデザイン ライブラリを作成します。ライブラリと必要な
_info
ファイルを作成するには、次のようにvlib
およびvmap
コマンドを入力します。ModelSim> vlib work ModelSim> vmap work work
デザイン ライブラリの作業が既に存在する場合、 ModelSim は現在のライブラリを「上書きしません」が、次の警告を表示します。
# ** Warning: (vlib-34) Library already exists at "work".
メモ
ModelSim Fileメニューまたは
vlib
コマンドを使用してライブラリ フォルダーを作成し、必要な_info
ファイルが作成されます。オペレーティング システム コマンドを使用してライブラリを作成しないでください。VHDLファイルをコンパイルします。ファイルをコンパイルする 1 つの方法は、プロジェクト ワークスペースでファイル名をクリックし、 Compile 、 Compile Allを選択することです。もう 1 つの方法は、次のように
vcom
VHDLファイルの名前を指定することです。ModelSim> vcom inverter.vhd
コンパイルが成功すると、情報メッセージがコマンド ウィンドウに表示され、コンパイラはコンパイル結果を作業ライブラリに追加します。
Simulinkモデルの作成
次に、 Simulinkモデルを作成します。このチュートリアルでは、 SimulinkでコーディングしたVHDLインバータを表すブロックに入力を駆動し、表示する単純なVHDLコードの開発モデルを作成します。反転出力。
次のようにモデルを作成することから始めます。
まだ実行されていない場合は、 MATLAB®を開始します。新しいモデル ウィンドウを開きます。次に、 Simulink Library Browserを開きます。
次のブロックをSimulink Library Browserからモデル ウィンドウにドラッグします。
Constant SimulinkライブラリのSourcesブロック
HDL Cosimulationブロック ライブラリのHDL Verifierブロック
Display Simulink ライブラリのSinksブロック
3 つのブロックを次の図に示す順序で配置します。
次に、次のアクションを実行して、モデルの入力ソースであるConstantブロックを構成します。
Constantブロック アイコンをダブルクリックして、 Constantブロックパラメーターダイアログ ボックスを開きます。「Main 」ペインに次のパラメーター値を入力します。
Constant value:
0
Sample time:
10
後でこれらの初期値を変更して、さまざまなサンプル時間がさまざまなシミュレーション実行に与える影響を確認できます。
ダイアログ ボックスは次のように表示されます。
「Signal Attributes 」タブをクリックします。ダイアログ ボックスにOutput data typeメニューが表示されます。
Output data typeを選択します。このデータ型仕様は、型変換を必要とせずに、HDL Verifierソフトウェアによってサポートされています。これは、 VHDLVHDLポート
sin
、STD_LOGIC_VECTOR(7 DOWNTO 0)
のSTD_LOGIC_VECTOR(7 DOWNTO 0)
タイプに直接マップされます。ダイアログ ボックスは次のように表示されます。
[OK]をクリックします。Constantブロックパラメーターダイアログ ボックスが閉じ、 Constantブロック アイコンの値が 0 に変わります。
次に、 HDL Cosimulationブロックを構成します。これは、 VHDLで記述されたインバーター モデルを表します。次のアクションを実行して、 「Ports」ペインから始めます。
HDL Cosimulationブロック アイコンをダブルクリックします。Block ParametersブロックのHDL Cosimulationダイアログ ボックスが表示されます。「Ports 」タブをクリックします。
Portsペインで、ペイン中央の信号リストからサンプル信号
/top/sig1
をダブルクリックして選択します。サンプル信号パス名
/top/sig1
を/inverter/sin
に置き換えます。次に、 「Apply」をクリックします。HDL Cosimulationブロックの信号名が変更されます。同様に、サンプル信号
/top/sig2
を選択します。Full HDL Nameを/inverter/sout
に変更します。Output
I/O Mode を選択します。 Sample Timeパラメーターを10
に変更します。次に、 「Apply」をクリックしてリストを更新します。サンプル信号
/top/sig3
を選択します。「Delete」ボタンをクリックします。これで、信号がリストから削除されました。Portsペインは次のように表示されます。
ここで、次のアクションを実行して、 Connectionペインのパラメーターを構成します。
「Connection 」タブをクリックします。
Connection ModeはFull Simulationのままにしておきます。
Connection method リストからソケットを選択します。このオプションは、 SimulinkとModelSim が指定された TCP/IP ソケット ポート経由で通信することを指定します。2 つの追加フィールドPort number or serviceとHost nameが表示されるようになっていることに注目してください。
デフォルトではThe HDL simulator is running on this computerが選択されているため、 Host nameフィールドは無効になっていることに注意してください。この構成では、 SimulinkとModelSimの両方が同じコンピュータ上で実行されるため、リモート ホスト システム名を入力する必要はありません。
Port number or serviceテキスト ボックスに、ソケット ポート番号
4449
を入力するか、このポートがシステムで使用できない場合は、別の有効なポート番号またはサービス名を入力します。このモデルは TCP/IP ソケット通信を使用してModelSimとリンクします。このパラメーターに入力した内容に注意してください。ModelSimとリンクするためにSimulinkを設定するときに、同じソケット ポート情報を指定します。Connectionペインは次のように表示されます。
[Apply]をクリックします。
ここで、次のアクションを実行して、 Clocksペインを構成します。
「Clocks 」タブをクリックします。
「New」ボタンをクリックします。信号名が空の新しいクロック信号が信号リストに追加されます。
編集する新しい信号名をダブルクリックします。信号パス
/inverter/clk
を入力します。次に、Rising
Edge を選択します。Periodパラメーターを10
に設定します。Clocksペインは次のように表示されます。
[Apply]をクリックします。
次に、次のように、シミュレーションの前後に実行されるいくつかの簡単な Tcl コマンドを入力します。
「Simulation 」タブをクリックします。
Pre-simulation Tcl commandsテキスト ボックスで、デフォルトの Tcl コマンドを編集します。
puts "Running inverter in Simulink!"
Post-simulation Tcl commandsテキスト ボックスで、デフォルトの Tcl コマンドを編集します。
puts "Inverter Done"
Simulationペインは次のように表示されます。
[Apply]をクリックします。
次に、 Timescalesペインを表示して、次のようにデフォルトパラメーターに設定されていることを確認します。
「Timescales 」タブをクリックします。
Timescalesペインのデフォルト設定を次の図に示します。これらの設定は、この例の動作に必要です。詳細は、シミュレーションのタイムスケールを参照してください。
[OK]をクリックして、 [Block Parameters]ダイアログ ボックスを閉じます。
最後のステップでは、ブロックを接続し、モデル全体のパラメーターを構成し、モデルを保存します。次のアクションを実行します。
次の図に示すようにブロックを接続します。
この時点で、ブロックの注釈を調整することも検討してください。
固定ステップの離散シミュレーション用にSimulinkソルバー選択を構成します。これは協調シミュレーション操作に必要です。次のアクションを実行します。
Modeling tabで、 Model Settingsをクリックします。「Model Configuration Parameters」ダイアログ・ボックスが開き、 「Solver selection」ペインが表示されます。
Fixed-step
Type を選択します。discrete (no continuous states)
メニューからSolverを選択します。[Apply]をクリックします。
[OK]をクリックして、 [Model Configuration Parameters]ダイアログ ボックスを閉じます。
Simulinkモデル コンフィギュレーションパラメーターの設定ソフトウェアでの使用に最適なSimulink設定の詳細については、 HDL Verifierを参照してください。
モデルを保存します。
ModelSimで使用するためにSimulinkをセットアップする
これで、インバータのVHDL表現と、インバータを適用するSimulinkモデルが完成しました。ModelSimを起動してSimulinkで使用できるようにするには、 MATLABコマンド ウィンドウに次のコマンド ラインを入力します。
vsim('socketsimulink', 4449)
メモ
SimulinkHDL Cosimulationブロックを構成したときに別のソケット ポート仕様を入力した場合は、前述のコマンド ラインのポート番号 4449 を、該当するソケット ポート情報に置き換えます。あなたのモデル。vsim
関数は、ModelSim Simulink に通知します。
VHDLとの協調シミュレーション用にSimulink エンティティのインスタンスをロードします
このセクションでは、 vsimulink
コマンドを使用して、 VHDLとの協調シミュレーションのためにSimulink エンティティのインスタンスをロードする方法について説明します。vsimulink
コマンドは、 HDL Verifier ModelSimコマンドのvsim
バリアントです。これは、ModelSim構成の一部として利用可能です。
inverter
エンティティのインスタンスをロードするには、次のアクションを実行します。
入力フォーカスをModelSimウィンドウに変更します。
VHD ファイルが現在のフォルダーにない場合は、フォルダーを
inverter.vhd
ファイルの場所に変更します。以下に例を示します。ModelSim> cd C:/MyPlayArea
次の
vsimulink
コマンドを入力します。ModelSim> vsimulink work.inverter
ModelSim は、
vsim
シミュレーターを開始し、Simulinkのコンテキストでエンティティinverter
をシミュレートする準備が整います。 $$モデル。ModelSimコマンド ウィンドウの表示は次のようになります。
シミュレーションの実行
このセクションでは、協調シミュレーション セッションを実行および監視するシナリオについて説明します。
次のアクションを実行します。
次のwaveコマンドを入力して、 ModelSimウィンドウを開いてインバータ信号を追加します。
VSIM n> add wave /inverter/*
次のwaveウィンドウが表示されます。
入力フォーカスをSimulinkモデル ウィンドウに変更します。
Simulinkシミュレーションを開始します。Displayブロックの値が
255
に変更されます。ModelSim waveウィンドウで発生する変更にも注目してください。信号データをよりよく表示するには、ズームインする必要がある場合があります。Simulinkモデルで、 Constant valueを
255
に変更し、モデルを保存して、別のシミュレーションを開始します。Displayブロックの値が0
に変更され、 ModelSim waveウィンドウが次のように更新されます。 。Simulinkモデルで、 Constant valueを
2
に変更し、 Sample timeを 20 に変更して、別のシミュレーションを開始します。今度は、 Displayブロックの値が253
に変更され、 ModelSim waveウィンドウが表示されます。次の図に示すように。waveウィンドウのサンプル時間の変化に注目してください。
シャットダウンシミュレーション
このセクションでは、次のようにシミュレーションを順序どおりにシャットダウンする方法について説明します。
ModelSimで、 Simulate 、 End Simulationを選択してシミュレーションを停止します。
ModelSimを終了します。
Simulinkモデル ウィンドウを閉じます。