Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Simscape 2 レベル コンバーター モデル用の Simulink Real-Time インターフェイス サブシステムの生成

この例では、Simscape™ 2 レベル コンバーター プラント モデル用に Simulink® Real-Time インターフェイス サブシステムを生成する方法を説明します。その後、そのインターフェイス モデルを Speedgoat FPGA IO モジュールに展開できます。この例では Speedgoat IO334-325k モジュールを使用します。

リアルタイム シミュレーション

FPGA でのプラント モデルのシミュレーションは、次を実現します。

  • リアルタイム シミュレーション: ハードウェアインザループにより、ターゲット ハードウェア上で Simscape プラント モデルのリアルタイム シミュレーションが提供されます。

  • ハードウェア アクセラレーション: 再構成可能な FPGA でハードウェア上の複雑な物理システムのシミュレーションを高速化することによりラピッド プロトタイピングを提供します。

ワークフローを使用するには、以下を行います。

  1. Simscape モデルを開発し、Simscape HDL ワークフロー アドバイザーを使用して実装モデルに変換します。

  2. HDL コードを生成し、HDL ワークフロー アドバイザーを使用してコードを Speedgoat I/O モジュールに展開します。

セットアップと構成

アルゴリズムを Speedgoat IO モジュールに展開する前に、以下を行います。

1.HDL の言語サポートおよびサポートされるサードパーティ製ツールとハードウェアにリストされている Xilinx® Vivado® の最新バージョンをインストールします。

次に、関数hdlsetuptoolpathを使用して、インストールした Xilinx Vivado 実行可能ファイルへのツール パスを設定します。

hdlsetuptoolpath('ToolName','Xilinx Vivado','ToolPath','C:\Xilinx\Vivado\2019.2\bin\vivado.bat')

2.リアルタイム シミュレーション用に、開発環境とターゲット コンピューターの設定を行います。Get Started with Simulink Real-Time (Simulink Real-Time)を参照してください。

3.Speedgoat ライブラリおよび Speedgoat HDL Coder Integration Package をインストールします。Install Speedgoat HDL Coder Integration Packages を参照してください。

理想的な 2 レベル コンバーター モデル

このモデルを開くには、次を入力します。

open_system('sschdlexTwoLevelConverterIdealExample')

このモデルを TwoLevelConverter_HDL.slx としてローカルに保存し、このワークフローを実行します。

open_system('TwoLevelConverter_HDL')
set_param('TwoLevelConverter_HDL','SimulationCommand','update')

open_system('TwoLevelConverter_HDL/Simscape_system')

Simscape サブシステムは、入力として 6 スイッチ制御パルスを受け取ります。Simscape サブシステムは、2 レベルのキャリアベースの PWM メソッドを使用するジェネレーターとして機能し、次を実行します。

  1. 基準波をサンプリングします。

  2. サンプルと三角搬送波を比較します。

  3. サンプルが搬送波よりも高い場合はスイッチオン パルスを生成し、サンプルが伝送波よりも低い場合はスイッチオフ パルスを生成します。

モデルのシミュレーションを実行します。

sim('TwoLevelConverter_HDL')
open_system('TwoLevelConverter_HDL/Load Scope')

HDL 実装モデルの生成

実装モデルを生成するには、Simscape HDL ワークフロー アドバイザーを使用します。モデルで関数sschdladvisorを実行します。

sschdladvisor('TwoLevelConverter_HDL')
### Running Simscape HDL Workflow Advisor for <a href="matlab:(TwoLevelConverter_HDL)">TwoLevelConverter_HDL</a>

実装モデルを生成するには、Simscape HDL ワークフロー アドバイザーで、タスクの既定の設定を維持し、タスクを実行します。[実装モデルを生成] タスクでモデルへのリンクを確認します。このモデルは元のモデルと同じ名前をもち、gmStateSpaceHDL という接頭辞が付けられます。

実装モデルを開くには、次を入力します。

load_system('gmStateSpaceHDL_TwoLevelConverter_HDL')
open_system('gmStateSpaceHDL_TwoLevelConverter_HDL/Simscape_system')
set_param('gmStateSpaceHDL_TwoLevelConverter_HDL','SimulationCommand','update')

実装モデルは、Simscape サブシステムを、状態空間計算を実行する HDL アルゴリズムに置き換えます。このサブシステム内を移動すると、状態空間方程式をモデル化するいくつかの遅延、加算器、および Matrix Multiply ブロックが確認されます。このサブシステム内の From ブロックと Goto ブロックは、元のモデルと同じ入力を HDL Subsystem に提供します。

open_system('gmStateSpaceHDL_TwoLevelConverter_HDL/Simscape_system/HDL Subsystem/HDL Algorithm')

HDL ワークフロー アドバイザー

HDL ワークフロー アドバイザーは、HDL コード生成および FPGA 設計のプロセスをサポートします。このアドバイザーを使用して以下のことを行います。

  • モデルに HDL コード生成との互換性があるか確認し、非互換の設定を修正。

  • HDL コード、テスト ベンチ、およびそのコードとテスト ベンチをビルドして実行するスクリプトを生成。

  • 合成およびタイミングの解析を実行。

  • 生成されたコードを SoC、FPGA、Speedgoat I/O モジュールに展開。

モデル内のサブシステムに対して HDL ワークフロー アドバイザーを開くには、関数hdladvisorを使用します。

load_system('sschdlexTwoLevelConverterIgbtExample')
hdladvisor('sschdlexTwoLevelConverterIgbtExample/Simscape_system')

左側のペインには、関連タスクのグループを表すフォルダーが含まれます。フォルダーを展開してタスクを選択すると、そのタスクに関する情報が右側のペインに表示されます。右側のペインには、詳細設定パラメーターに対してタスクを実行するための単純なコントロールと、コードとテスト ベンチの生成を制御するオプション設定が含まれます。各タスクの詳細については、そのタスクを右クリックし、[これはなに?] を選択します。HDL ワークフロー アドバイザーのご利用の前にを参照してください。

Speedgoat IO334-325K モジュールへの理想的な 2 レベル コンバーター モデルの展開

1.実装モデルの HDL ワークフロー アドバイザーを開きます。

hdladvisor('gmStateSpaceHDL_TwoLevelConverter_HDL/Simscape_system/HDL Subsystem')

2.[ターゲット デバイスおよび合成ツールを設定] タスクで、[ターゲット ワークフロー] を [Simulink Real-Time FPGA I/O] として、[ターゲット プラットフォーム] を [Speedgoat IO334-325K] として指定します。

3.[ターゲットのリファレンス設計を設定] タスクを実行し、パラメーター PCIe lanesx4 の値を選択し、[このタスクを実行] を選択します。

4.[ターゲット インターフェイスを設定] タスクで、入力および出力 single データ型端子を PCIe Interface にマッピングし、[このタスクを実行] を選択します。

5.[RTL コードと IP コアの生成] タスクを右クリックして [選択したタスクまで実行] を選択します。モデルはベクトル データ型を使用するため、[RTL コードと IP コアの生成] は失敗します。ScalarizePorts プロパティは dutlevel に設定されていなければならないからです。リンクをクリックしてこの設定を変更し、タスクを再度実行します。

6.[Simulink Real-Time インターフェイスの生成] タスクまでのワークフローを実行します。[プロジェクトを作成] タスクで、Vivado プロジェクトを開き、実装された設計を確認します。[Simulink Real-Time インターフェイスの生成] タスクが成功したら、リンクをクリックして Simulink Real-Time インターフェイス モデルを開きます。

スクリプトへの HDL ワークフローのエクスポート

ラピッド プロトタイピングのために、HDL ワークフロー アドバイザーの設定をスクリプトにエクスポートできます。スクリプトは、コマンド ラインから実行できる MATLAB® ファイルです。その後、スクリプトを変更して実行するか、設定を HDL ワークフロー アドバイザーのユーザー インターフェイスにインポートすることができます。

HDL ワークフロー スクリプトをエクスポートするには、アドバイザーでタスクを実行してから、[ファイル]、[スクリプトへのエクスポート] を選択します。この例の場合、スクリプトにエクスポートすると、このファイルには保存した設定が表示されます。

edit('hdlworkflow_slrt.m')

HDL ワークフロー スクリプトをインポートするには、HDL ワークフロー アドバイザーで [ファイル]、[スクリプトからインポート] を選択します。スクリプト ファイルを選択して [開く] をクリックします。HDL ワークフロー アドバイザーは、インポートされたスクリプト設定を使用してタスクを更新します。

FPGA ビットストリームを展開することによってリアルタイム アプリケーションを実行する方法を示す例については、Hardware-in-the-Loop Implementation of Simscape Model on Speedgoat FPGA I/O Modulesを参照してください。

参考

関数

関連するトピック