Main Content

複数のネットワークを含む Simscape モデルの HDL コードの生成

この例では、Simscape HDL ワークフロー アドバイザーを実行して、複数のネットワークを含む Simscape™ モデルの HDL 実装モデルを生成する方法を説明します。各 Simscape ネットワークを、HDL 実装モデルの対応する状態空間実装と数値的に比較する検証ロジックも生成できます。この例の Simscape モデルは、2 つのネットワークに分割されたソーラー パワー インバーターです。このネットワークの分割方法については、大規模なネットワークを含む Simscape モデルを複数の小さいネットワークに分割を参照してください。

複数のネットワークを含む Simscape モデルを使用する理由

Simscape モデルに多くのスイッチング要素が含まれている場合、状態空間表現に多数のモードを含めることができます。このような大規模な設計で生成された HDL 実装モデルは、大量のリソースを消費する可能性があり、ターゲット FPGA デバイスで合成できない場合もあります。モードの数を減らすには、モデル内の Simscape ネットワークを複数のネットワークに分割してから、Simscape HDL ワークフロー アドバイザーを実行します。

複数のネットワークを使用するソーラー パワー インバーター モデル

複数のネットワークを含むモデルを開くには、次を実行します。

open_system('sschdlexSolarInverterPartitionedNetworkExample')

このモデルは、ソーラー パネル、昇圧コントローラー、インバーター コントローラー、および昇圧コンバーターとフル ブリッジ インバーダーの 4 つの部分で構成されています。ソーラー パネルは、Simulink® でルックアップ テーブルを使用してモデル化されます。昇圧コントローラーとインバーター コントローラーは、昇圧コンバーターとフル ブリッジ インバーダー (H ブリッジ) に制御信号を提供します。

元のモデルでは、1 つのサブシステム内の 1 つのネットワークとして昇圧コンバーターとフル ブリッジ インバーターが含まれています。このモデルを確認するには、次のように入力します。

open_system('sschdlexSolarInverterSingleNetworkExample')

分割されたモデルでは、単一のサブシステム内に 2 つのネットワークが含まれています。分割されたネットワークを確認するには、Network サブシステムを開きます。

open_system('sschdlexSolarInverterPartitionedNetworkExample/Network')

複数のネットワークを含むモデルの Simscape HDL ワークフロー アドバイザーの実行

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

sschdladvisor('sschdlexSolarInverterPartitionedNetworkExample')

2.[モデルの互換性のチェック] タスクまでのワークフローを実行します。

Simscape HDL ワークフロー アドバイザーには、モデル内に存在するネットワーク数と、各ネットワークの代数変数と微分変数の数が示されます。アドバイザーは、Solver Configuration ブロックを使用して、モデル内の各固有ネットワークを特定します。

3.[離散方程式の抽出] タスクを実行します。

このタスクでは、各 Simscape ネットワークについてシミュレーション終了時間、ソルバーの反復回数、状態の数、入力の数、出力の数、モードの数、微分変数の数、および状態空間表現が表示されます。

状態空間表現で使用されるモード数が削減されました。モード数は、昇圧コンバーターで 28、およびフル ブリッジ インバーターで 5 となり、モードの合計数は 33 個です。モード数が削減されると、ターゲット デバイス上の HDL 実装モデルの面積が節約されます。

HDL 実装モデルの生成とリソース消費量の表示

1. [実装モデルを生成] タスクを実行します。タスクが成功すると、HDL 実装モデル gmStateSpaceHDL_sschdlexSolarInverterPartit へのリンクが表示されます。リンクをクリックして HDL 実装モデルを開くか、以下を入力します。

open_system('gmStateSpaceHDL_sschdlexSolarInverterPartit')

モデルには 2 つの HDL サブシステムが含まれています。HDL Subsystem ブロックは、昇圧コンバーターの状態空間方程式をモデル化します。HDL Subsystem1 ブロックは、フル ブリッジ インバーターの状態空間方程式をモデル化します。

2.リソース利用レポートの生成を有効にします。

hdlset_param('gmStateSpaceHDL_sschdlexSolarInverterPartit', 'ResourceReport', 'on')

3.関数 makehdl を実行して、コードを生成します。両方の HDL Subsystem ブロックの HDL コードを生成するには、HDL Subsystem ブロックおよび HDL Subsystem1 ブロックを別の最上位サブシステム内に配置し、そのサブシステムに HDL_DUT という名前を付けます。次に、HDL コードを生成します。

makehdl('gmStateSpaceHDL_sschdlexSolarInverterPartit/HDL_DUT')

4.HDL コードを生成するときに、コード生成レポートを開きます。リソース利用レポートには、ターゲットの FPGA デバイス上で消費される可能性がある、加算器、乗算器、およびレジスタの量が示されています。

2 つのネットワークの全体的なリソース消費は、単一の大規模なネットワークのリソース消費よりも大幅に削減されます。単一のソーラー パワー インバーター ネットワークのリソース消費の詳細については、大規模なネットワークを含む Simscape モデルを複数の小さいネットワークに分割を参照してください。

参考

関数

関連するトピック