Main Content

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

シミュレーション中のゲインパラメーターの調整

手順 1.単純なゲイン モデルの作成

サンプルの手順を自分で実行するには、まずサンプル モデルを作成します。

サンプル モデルには、シミュレーション中に調整されるゲインパラメーターを持つ単一のゲイン ブロックがあります。

  1. Simulink®ブロック ライブラリを開き、[よく使用されるブロック] をクリックします。

  2. Inportブロックを追加します。

  3. Gainブロックを追加します。ダブルクリックしてブロック マスクを開き、 Gainパラメーターの値をgainに変更します。

  4. Gainブロックをダブルクリックして、ブロック マスクを開きます。[Signal Attributes]タブで、 Output data typeuint8に設定します。

    メモ

    Output data typeInherit: Inherit via internal ruleのままにすると、 Simulink Coder™はデフォルト値に基づいてデータ型を選択しますGainパラメータのパラメーター。これは、DPI 生成後にパラメーターを調整するときに値を収容できない可能性があります。Simulink Coderによる誤ったタイプ設定を避けるために、ブロックの出力信号に特定のタイプを指定します。

  5. Outportブロックを追加します。

  6. 上の図に示すように、すべてのブロックを接続します。

手順 2.ゲインパラメーターのデータオブジェクトの作成

  1. ゲインパラメーターのデータ オブジェクトを作成します。

    MATLAB® コマンド プロンプトで、以下のように入力します。

     gain = Simulink.Parameter
  2. 次に、次のように入力します。

    open('gain')

    このコマンドは、パラメーターオブジェクトのプロパティ ダイアログ ボックスを開きます。

  3. [Design]タブで、次の値を選択します。

    • Value:2

    • Data type: ダブル

    [Code Generation]タブで、次の値を選択します。

    • Storage class: Model default

  4. [OK]をクリックします。

コード生成でのパラメーターオブジェクトの使用の詳細については、 「 C Data Code Interface Configuration for Model Interface Elements (Simulink Coder) 」を参照してください。

メモ

Storage classAutoに設定すると、コード生成時にパラメーターが最適化されます。DPI 調整可能パラメーターを生成する場合の推奨値は次のとおりです。

  • Model default

  • SimulinkGlobal

  • ExportedGlobal

パラメーターがインスタンス固有の場合はModel defaultを使用し、グローバル変数を生成するにはSimulinkGlobalExportedGlobalのどちらかを選択します。

手順 3.SystemVerilog DPI コンポーネントの生成

  1. [Simulink Apps]タブで、 [HDL Verifier]をクリックします。右側のペインで、 HDL Verifier ModeDPI Component Generationに設定します。

  2. [HDL Verifier]タブで、 [C Code Settings]をクリックします。Configuration ParametersCode Generationダイアログが開きます。

  3. System target fileで、 Browseをクリックし、 systemverilog_dpi_grt.tlcを選択します。

    • Embedded Coder®のライセンスをお持ちの場合は、ターゲットsystemverilog_dpi_ert.tlcを選択できます。このターゲットを使用すると、追加のコード生成オプション (モデル コンフィギュレーションパラメーターの [コード生成] ペイン) にアクセスできます。

  4. ToolchainBuild processで、使用するツールチェーンをリストから選択します。ツールチェーンの選択に関するガイダンスについては、クロスプラットフォーム DPI コンポーネントの生成を参照してください。

    オプションでコンパイル用のフラグを選択できます。Build Configurationで、ドロップダウン リストからSpecifyを選択します。Show Settingsをクリックして、現在のフラグを表示します。

  5. [コード生成] グループで、 SystemVerilog DPIをクリックします。

  6. Generate test benchCustomize generated SystemVerilog code の両方をクリアしたままにしておきます (この例では生成された SystemVerilog コードが変更されるため、同時に生成されるテストベンチでは正しい結果が得られません)。

  7. [OK]をクリックしてこれらの設定を受け入れ、[コンフィギュレーションパラメーター]ダイアログ ボックスを閉じます。

  8. モデル例では、ゲイン ブロックを右クリックし、 Create Subsystem from Selectionを選択します。この例では、サブシステムdutの名前を変更します。

  9. Simulinkツールストリップの[HDL Verifier]タブで、 Generate DPI Componentをクリックします。

    SystemVerilog コンポーネントは、現在の作業フォルダーにdut_build/dut_dpi.svとして生成されます。

手順 4.パラメーター調整コードを SystemVerilog ファイルに追加

  1. ファイルdut_build/dut_dpi.svを開き、生成されたコードを調べます。

  2. この例では、 reset関数を呼び出した後、新しいパラメーター値を指定してDPI_dut_setparam_gain関数を呼び出します。たとえば、ここではゲインが 6 に変更されます。

    DPI_dut_setparam_gain(objhandle, 6);
    
  3. 非同期リセット信号が High (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
    
  4. 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.パラメーターを変更してシミュレーションを実行する

シミュレーションを実行するには、次のトピックで説明するように、共有ライブラリを構築してコンポーネントをエクスポートします。