このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
シミュレーション中にゲインパラメータを調整する
手順 1.シンプルなゲインモデルを作成する
例の手順を自分で実行するには、まずサンプル モデルを作成します。
サンプルモデルには、シミュレーション中に調整されるゲイン パラメーターを持つ単一のゲイン ブロックがあります。
Simulink® ブロック ライブラリを開き、[よく使用されるブロック] をクリックします。
Inport ブロックを追加します。
Gain ブロックを追加します。ダブルクリックしてブロックマスクを開き、Gain パラメータの値を
gain
に変更します。Gain ブロックをダブルクリックしてブロック マスクを開きます。Signal Attributes タブで、Output data type を
uint8
に設定します。メモ
Output data type を
Inherit: Inherit via internal rule
のままにしておくと、Simulink Coder™ はGain
パラメータのデフォルト値に基づいてデータ型を選択しますが、DPI 生成後にパラメータを調整するときに値が適合しない可能性があります。Simulink Coder による誤ったタイプ設定を回避するために、ブロックの出力信号に特定のタイプを指定します。Outport ブロックを追加します。
上の図に示すように、すべてのブロックを接続します。
手順 2.ゲインパラメータのデータオブジェクトを作成する
ゲインパラメータのデータ オブジェクトを作成します。
MATLAB® コマンド プロンプトで、以下のように入力します。
gain = Simulink.Parameter
次に、次のように入力します。
open('gain')
このコマンドは、パラメータ オブジェクトのプロパティ ダイアログ ボックスを開きます。
Design タブで、次の値を選択します。
値: 2
Data type: ダブル
Code Generation タブで、次の値を選択します。
Storage class:
Model default
[OK] をクリックします。
コード生成にパラメータ オブジェクトを使用する方法の詳細については、C Data Code Interface Configuration for Model Interface Elements (Simulink Coder) を参照してください。
メモ
Storage class を Auto
に設定すると、コード生成中にパラメータが最適化されます。DPI 調整可能なパラメータを生成するときに推奨される値は次のとおりです。
Model default
SimulinkGlobal
ExportedGlobal
パラメータがインスタンス固有の場合は Model default
を使用し、グローバル変数を生成するには SimulinkGlobal
と ExportedGlobal
のどちらかを選択します。
手順 3.SystemVerilog DPIコンポーネントを生成する
Simulink Apps タブで HDL Verifier をクリックします。右側のペインで、HDL Verifier Mode を DPI Component Generation に設定します。
HDL Verifier タブで、C Code Settings をクリックします。Code Generation で Configuration Parameters ダイアログが開きます。
System target file で、Browse をクリックし、
systemverilog_dpi_grt.tlc
を選択します。Embedded Coder® のライセンスをお持ちの場合は、ターゲット
systemverilog_dpi_ert.tlc
を選択できます。このターゲットを使用すると、追加のコード生成オプション (モデル構成パラメーターのコード生成ペイン) にアクセスできます。
Toolchain の Build process の下で、リストから使用するツールチェーンを選択します。ツールチェーンの選択に関するガイダンスについては、クロスプラットフォームDPIコンポーネントを生成する を参照してください。
オプションでコンパイルのフラグを選択できます。Build Configuration の下で、ドロップダウン リストから
Specify
を選択します。現在のフラグを表示するには、Show Settings をクリックします。コード生成グループで、SystemVerilog DPI をクリックします。
Generate test bench と Customize generated SystemVerilog code は両方ともクリアされたままにします (この例では生成された SystemVerilog コードが変更されるため、同時に生成されたテストベンチでは正しい結果が得られません)。
これらの設定を受け入れ、[構成パラメータ] ダイアログ ボックスを閉じるには、[OK] をクリックします。
サンプルモデルで、ゲイン ブロックを右クリックし、Create Subsystem from Selection を選択します。この例では、サブシステムの名前を
dut
に変更します。Simulink ツールストリップの HDL Verifier タブで、Generate DPI Component をクリックします。
SystemVerilog コンポーネントは、現在の作業フォルダーに
dut_build/dut_dpi.sv
として生成されます。
手順 4.SystemVerilog ファイルにパラメータ調整コードを追加する
ファイル
dut_build/dut_dpi.sv
を開き、生成されたコードを調べます。この例では、
reset
関数を呼び出した後、新しいパラメーター値を使用してDPI_dut_setparam_gain
関数を呼び出します。たとえば、ここではゲインが 6 に変更されます。DPI_dut_setparam_gain(objhandle, 6);
非同期リセット信号がハイ(0 から 1 になる)の場合は、
reset
関数を再度呼び出します。if(reset == 1'b1) begin DPI_dut_reset(objhandle, dut_U_In1, dut_Y_Out1); DPI_dut_setparam_gain(objhandle, 6); end
SystemVerilog コードは次のようになります。
module dut_dpi( input clk, input clk_enable, input reset, input real dut_U_In1, output real dut_Y_Out1 ); chandle objhandle=null; // Declare imported C functions import "DPI" function chandle DPI_dut_initialize(chandle existhandle); import "DPI" function void DPI_dut_reset (input chandle objhandle, input real dut_U_In1, inout real dut_Y_Out1); import "DPI" function void DPI_dut_output (input chandle objhandle, input real dut_U_In1, inout real dut_Y_Out1); import "DPI" function void DPI_dut_update (input chandle objhandle, input real dut_U_In1); import "DPI" function void DPI_dut_terminate(input chandle objhandle); import "DPI" function void DPI_dut_setparam_gain (input chandle objhandle, input real dut_P_gain); initial begin objhandle = DPI_dut_initialize(objhandle); DPI_dut_setparam_gain(objhandle, 6); end final begin DPI_dut_terminate(objhandle); end always @(posedge clk or posedge reset) begin if(reset == 1'b1) begin DPI_dut_reset(objhandle, dut_U_In1, dut_Y_Out1); DPI_dut_setparam_gain(objhandle, 6); end else if(clk_enable) begin DPI_dut_output(objhandle, dut_U_In1, dut_Y_Out1); DPI_dut_update(objhandle, dut_U_In1); end end endmodule
手順 5.パラメータを変更してシミュレーションを実行する
シミュレーションを実行するには、次のトピックの説明に従って共有ライブラリをビルドし、コンポーネントをエクスポートします。
ビルドライブラリ の説明に従って共有ライブラリを再構築します。