Simscape 2 レベル コンバーター モデル用の Simulink Real-Time インターフェイス サブシステムの生成
この例では、Simscape™ 2 レベル コンバーター プラント モデル用に Simulink® Real-Time インターフェイス サブシステムを生成する方法を説明します。その後、そのインターフェイス モデルを Speedgoat FPGA I/O モジュールに展開できます。この例では Speedgoat IO334-325k モジュールを使用します。
リアルタイム シミュレーション
FPGA でのプラント モデルのシミュレーションは、次を実現します。
リアルタイム シミュレーション: ハードウェアインザループにより、ターゲット ハードウェア上で Simscape プラント モデルのリアルタイム シミュレーションが提供されます。
ハードウェア アクセラレーション: 再構成可能な FPGA でハードウェア上の複雑な物理システムのシミュレーションを高速化することによりラピッド プロトタイピングを提供します。
ワークフローを使用するには、以下を行います。
Simscape モデルを開発し、Simscape HDL ワークフロー アドバイザーを使用して実装モデルに変換します。
HDL コードを生成し、HDL ワークフロー アドバイザーを使用してコードを Speedgoat I/O モジュールに展開します。
セットアップと構成
アルゴリズムを Speedgoat I/O モジュールに展開する前に、以下を行います。
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 I/O Blockset および 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 メソッドを使用するジェネレーターとして機能し、次を実行します。
基準波をサンプリングします。
サンプルと三角搬送波を比較します。
サンプルが搬送波よりも高い場合はスイッチオン パルスを生成し、サンプルが伝送波よりも低い場合はスイッチオフ パルスを生成します。
モデルのシミュレーションを実行します。
sim('TwoLevelConverter_HDL') open_system('TwoLevelConverter_HDL/Load Scope')
HDL 実装モデルの生成
実装モデルを生成するには、Simscape HDL ワークフロー アドバイザーを使用します。モデルで関数sschdladvisor
を実行します。
sschdladvisor('TwoLevelConverter_HDL')
実装モデルを生成するには、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 lanes
に x4
の値を選択し、[このタスクを実行] を選択します。
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 ビットストリームを展開することによってリアルタイム アプリケーションを実行する方法を示す例については、Speedgoat FPGA I/O モジュールへの Simscape モデルのハードウェアインザループ実装を参照してください。