最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Speedgoat FPGA I/O モジュールへの Simscape™ プラント モデルの展開

この例では、HDL ワークフロー アドバイザーを使用して、Simscape プラント モデルを Speedgoat FPGA I/O モジュールに展開する方法を示します。これは、2 ステップのプロセスです。

  1. Simscape モデルを開発し、Simscape HDL ワークフロー アドバイザーを使用して実装モデルに変換します。HDL コードはこの実装モデルから生成されます。詳細については、Simscape モデルからの HDL コードの生成を参照してください。

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

Simulink モデルを Speedgoat FPGA モジュールに展開する理由

HDL ワークフロー アドバイザーを使用して、Simulink™ モデルを Speedgoat FPGA I/O モジュールに展開できます。FPGA でのプラント モデルのシミュレーションは、次を実現します。

  • リアルタイム シミュレーション: ハードウェアインザループは、Simscape プラント モデルのリアルタイム シミュレーションを提供します。

  • ハードウェア アクセラレーション: これをハードウェアに実装すると、再構成可能な FPGA によってラピッド ハードウェア プロトタイピングが提供されるため、物理システムをシミュレーションする速度が上がります。この機能を使用して、複雑な物理システムをモデル化できます。

セットアップと構成

Simscape プラント モデルを Speedgoat FPGA モジュールに展開するには、次のようにします。

1. Xilinx Vivado® のインストール

Speedgoat FPGA IO333-325K では Xilinx Vivado を使用します。まだインストールしていない場合は、Xilinx Vivado v2018.2 をインストールします。次に、インストールした Xilinx Vivado 2018.2 実行可能ファイルへのツール パスを設定します。ツール パスを設定するには、関数 hdlsetuptoolpath を使用します。

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

2.I/O モジュールのセットアップ

ハードウェアで Simscape プラント モデルのシミュレーションをリアルタイムで実行するには、I/O モジュールをセットアップしなければなりません。I/O モジュールのセットアップの詳細については、Xilinx HDL Software for Speedgoat I/O Hardware を参照してください。

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

HDL ワークフロー アドバイザーは、次のような Simulink サブシステムの HDL コードを生成する各段階と、FPGA 設計プロセスをサポートします。

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

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

  • サードパーティ製の合成ツールとの統合による合成とタイミング解析。

  • System-on-Chip (SoC)、FPGA、Speedgoat I/O モジュールなどのハードウェア プラットフォームに展開する自動化されたワークフローの完了。

この例では、HDL ワークフロー アドバイザーを使用して、Xilinx Vivado を使用する Speedgoat IO333-325K モジュールに HDL コードを展開する方法を示します。たとえば、モデル内のサブシステムに対して HDL ワークフロー アドバイザーを開くには、次を入力します。

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

詳細については、hdladvisor を参照してください。

HDL ワークフロー アドバイザーの左側のペインに階層内のフォルダーのリストが表示されます。各フォルダーは、関連するタスクのグループまたはカテゴリを表しています。フォルダーを展開すると各フォルダーで使用可能なタスクが表示されます。左側のペインから、フォルダーまたは個々のタスクを選択できます。HDL ワークフロー アドバイザーは選択されたフォルダーまたはタスクに関する情報を右側のペインに表示します。右側のペインの内容は選択したフォルダーまたはタスクによって異なります。一部のタスクでは、右側のペインにタスクを実行するための単純なコントロールと、状態メッセージや他のタスクの結果を示す表示領域が含まれます。コードまたはテスト ベンチ生成パラメーターの設定に関連するその他のタスクでは、右側のペインにいくつかのパラメーターとオプションの設定が表示されます。

個々のタスクの詳細については、そのタスクを右クリックし、[これはなに?] を選択します。

詳細については、HDL ワークフロー アドバイザーのご利用の前にを参照してください。

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

この例では、理想的な 2 レベルのコンバーターの Simscape プラント モデルを使用します。このモデルを開くには、次を入力します。

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. サンプルが搬送波よりも高い場合はスイッチオン パルスを生成し、サンプルが伝送波よりも低い場合はスイッチオフ パルスを生成します。

HDL 実装モデルの生成

実装モデルを生成するには、Simscape HDL ワークフロー アドバイザーを使用します。次を入力します。

sschdladvisor('TwoLevelConverter_HDL')

実装モデルを生成するには、Simscape HDL ワークフロー アドバイザーで、すべてのタスクについて既定の設定を維持し、タスクを実行します。[実装モデルを生成] タスクでモデルへのリンクを確認します。

Simscape HDL ワークフロー アドバイザーの詳細については、次を参照してください。

実装モデル

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

open_system('gmStateSpaceHDL_TwoLevelConverter_HDL')

モデルには 2 つのサブシステムが含まれます。HDL Subsystem は、Simscape モデルから生成した状態空間表現をモデル化します。この Subsystem の端子は、元の Simscape モデルで使用する Simulink-PS Converter ブロックおよび PS-Simulink Converter ブロックと同じ名前を使用します。この Subsystem 内を移動すると、いくつかの遅延、加算器、および Matrix Multiply ブロックが状態空間方程式をモデル化していることがわかります。このサブシステム内の From ブロックと Goto ブロックは、元のモデルと同じ入力を HDL Subsystem に提供します。

2 レベル IGBT コンバーター モデルの Speedgoat IO333-325K モジュールへの展開

この例では、HDL ワークフロー アドバイザーを使用して 2 レベル IGBT コンバーターの実装モデルを Speedgoat IO333-325K FPGA モジュールに展開する方法を示します。Speedgoat IO333 FPGA モジュールは、Xilinx Vivado および IP コアの生成インフラストラクチャを使用します。ワークフロー アドバイザーを実行する前に、インストールした Xilinx Vivado 実行可能ファイルへのパスを指定していることを確認します。

1. HDL ワークフロー アドバイザーを開く

実装モデルの HDL ワークフロー アドバイザーを開くには、次を入力します。

hdladvisor('gmStateSpaceHDL_TwoLevelConverter_HDL/HDL Subsystem')

2.[ターゲット デバイスおよび合成ツールを設定] タスクで、以下のパラメーターを設定し、[このタスクを実行] を選択します。

  • [ターゲット ワークフロー]Simulink Real-Time FPGA I/O に設定

  • [ターゲット プラットフォーム]Speedgoat IO333-325K に設定

  • [合成ツール]Xilinx Vivado に設定

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

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

5.[ターゲット周波数を設定] タスクで、範囲内のターゲット周波数を選択します。ターゲット周波数をそれより高い値に設定すると、[FPGA ビットストリームのビルド] タスクを実行するときにビットストリームが生成されません。この例では、[ターゲット周波数]50 MHz に設定されます。

6.[RTL コードと IP コアの生成] タスクを右クリックして [選択したタスクまで実行] を選択します。この手順では、モデルがベクトル データ型を使用する場合警告が生成されます。警告のリンクをクリックし、[ベクトル端子のスカラー化] を選択して、タスクを再実行します。

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

8.[Simulink Real-Time インターフェイスの生成] タスクが成功すると、Simulink Real-Time インターフェイス モデルを開くためのリンクが示されます。このリンクを選択します。

open_system('gm_gmStateSpaceHDL_TwoLevelConverter_HDL_slrt')

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

オプションで、以下を実行できます。

  • HDL ワークフロー アドバイザーの設定をスクリプトに保存し、コマンド ラインを使用してスクリプトを実行します。

  • 設定をインポートして変更し、HDL ワークフロー アドバイザー ユーザー インターフェイスを使用して再実行します。

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

  1. HDL ワークフロー アドバイザーで、すべてのタスクを設定して実行します。

  2. [ファイル]、[スクリプトへのエクスポート] を選択します。

  3. [Export Workflow Configuration] ダイアログ ボックスで、ファイル名を入力してスクリプトを保存します。

スクリプトは、コマンド ラインから実行できる MATLAB® ファイルです。

HDL ワークフロー スクリプトのインポート

  1. HDL ワークフロー アドバイザーで、[ファイル]、[スクリプトからインポート] を選択します。

  2. [ワークフロー コンフィギュレーションのインポート] ダイアログ ボックスで、スクリプト ファイルを選択して [開く] をクリックします。

HDL ワークフロー アドバイザーは、インポートされたスクリプト設定を使用してタスクを更新します。

Simulink Real-Time FPGA I/O ワークフローの例

この例では、エクスポートされた HDL ワークフロー スクリプトを構成して実行する方法を説明します。

HDL ワークフロー スクリプトを生成するには、Simulink 設計で HDL ワークフロー アドバイザーを設定および実行してから、スクリプトをエクスポートします。

このスクリプトは Xilinx Vivado 合成ツールを使用する Speedgoat IO333-325K モジュールをターゲットとする Simulink Real-Time FPGA I/O ワークフロー スクリプトです。

MATLAB コマンド ウィンドウでエクスポートされたスクリプトを編集するには、次を入力します。

edit('hdlworkflow_slrt.m')

詳細については、スクリプトを使用した HDL ワークフローの実行を参照してください。

参考

関数

関連するトピック