メインコンテンツ

平均化スイッチを含む Simscape 三相 PMSM 駆動用の HDL コードの生成

この例では、平均化スイッチを含む三相 PMSM Simscape™ モデル用に HDL コードを生成して結果を合成する方法を示します。

平均化スイッチを含む Simscape モデル

平均化スイッチをもつコンバーター ブロックを使用して Simscape モデル用の HDL コードを生成して FPGA に展開できます。この例では、平均化スイッチで構成された 6 パルス三相制御コンバーター ブロックをもつ三相 PMSM モデルを使用します。このモデルのスイッチング周波数は 50 kHz です。システムを HDL 互換にするために、平均化スイッチではゲート入力に区分的定数近似法を使用します。なお、平均化スイッチを使用するこのモデルでは、分割ローカル ソルバーでデッド タイム (すべてのゲート入力が 0 に設定されているとき) に不安定性が生じることがあります。

合成ツール パスの設定

生成された HDL コードを合成する場合は、HDL Coder™ を使用してコードを生成する前に、合成ツールのパスを設定します。たとえば、合成ツールが Xilinx® Vivado® の場合は、HDL の言語サポートおよびサポートされるサードパーティ製ツールとハードウェアにリストされている Xilinx Vivado の最新バージョンをインストールします。

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

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

三相 PMSM 駆動モデル

MATLAB® コマンド プロンプトからモデルを開きます。

ModelName = 'ee_pmsm_drive_averaged_switch_hdl';
open_system(ModelName)

モデルの動作を確認するには、モデルをシミュレートします。

sim(ModelName)
open_system([ModelName '/Orig_SSC'])

Simscape Network サブシステム内のコンポーネントを確認するには、以下を入力します。

open_system('ee_pmsm_drive_averaged_switch_hdl/Simscape Network')

HDL コード生成では、Converter(Three-Phase) ブロック パラメーターの [設定] タブで、[ゲート入力の区分的定数近似に使用される整数 (無効は 0)] パラメーターの値が 10 に設定されます。Solver Configuration (Simscape)ブロックの [ローカル ソルバーを使用] チェック ボックスをオンにすることで、モデルは分割ソルバーを使用するように設定されます。

HDL 実装モデルの生成

Simscape HDL ワークフロー アドバイザーは、Simscape プラント モデルを HDL コード生成用の HDL 互換の実装モデルに変換します。HDL 実装モデルを生成するには、以下を実行します。

1. Simscape HDL ワークフロー アドバイザーを開きます。

sschdladvisor('ee_pmsm_drive_averaged_switch_hdl')

2. [実装モデルの生成] タスクのドロップダウン リストで [実装モデルを生成] タスクを右クリックし、リストから [選択したタスクまで実行] を選択します。リソース利用を改善するために、[実装モデルを生成] タスク ウィンドウで [状態空間のパラメーターを RAM にマッピング][オン] に設定します。

タスクが成功すると、HDL 実装モデル gmStateSpaceHDL_ee_pmsm_drive_averaged_swit へのリンクが表示されます。

HDL コードの生成

HDL コード生成用にコンフィギュレーション パラメーターの値を変更するには、gmStateSpaceHDL_ee_pmsm_drive_averaged_swit/Simscape Network/HDL Subsystem に移動します。HDL Algorithm サブシステムを右クリックし、[HDL コード] リストから HDL Block Properties を選択します。[HDL プロパティ] ダイアログ ボックスで DistributedPipeliningOn に設定します。[適用] をクリックし、[OK] をクリックします。次に、gmStateSpaceHDL_ee_pmsm_drive_averaged_swit/Simscape Network/HDL Subsystem/HDL Algorithm/State Update/Algebraic Clump2/Mode Vector To Index ブロックに移動します。ブロックを右クリックし、[HDL コード] リストから HDL Block Properties を選択します。[HDL プロパティ] ダイアログ ボックスで InputPipeline および OutputPipeline パラメーターの値を 2 に設定し、[適用] をクリックしてから [OK] をクリックします。Multiply State ブロックおよび Multiply F ブロックを右クリックし、2 つのブロックの SharingFactor を 8 に設定します。モデルを保存し、次の手順に進みます。

モデル コンフィギュレーション パラメーターを HDL コード生成用に推奨される既定値に設定します。

hdlsetup('gmStateSpaceHDL_ee_pmsm_drive_averaged_swit')

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

HDL ワークフロー アドバイザーは、HDL コード生成に必要なタスクおよび FPGA 設計のプロセスをサポートします。各タスクの結果に関するフィードバックが提供されます。タスクが完了すると、対応する合成ツールのいずれかから合成結果レポートが提供されます。

HDL 実装モデル内のサブシステム HDL Subsystem を HDL ワークフロー アドバイザーで開きます。

hdladvisor('gmStateSpaceHDL_ee_pmsm_drive_averaged_swit/Simscape Network/HDL Subsystem')

モデル ウィンドウから HDL ワークフロー アドバイザーを開くこともできます。HDL Subsystem を右クリックし、リストから HDL Workflow Advisor を選択します。

ターゲット デバイスおよび合成ツールを設定

HDL コードを生成する前に、コードをターゲット プラットフォームに展開する場合は、合成ツールを指定します。

  1. HDL ワークフロー アドバイザーを開きます。

  2. [ターゲットを設定] タスク フォルダーの [ターゲット デバイスおよび合成ツールを設定] タスクで、[ターゲット ワークフロー]Generic ASIC/FPGA として、[合成ツール]Xilinx Vivado として指定します。残りのフィールドには自動入力されます。[ファミリ]Kintex7[デバイス]xc7k325t[パッケージ]fbg676[速度] を -1 として指定します。

  3. [ターゲット周波数を設定] ウィンドウで、[ターゲット周波数] を 150 として指定します。

  4. 実行するタスクを選択し、[このタスクを実行] をクリックします。

HDL コード生成

  • [HDL コード生成] タスク フォルダーで [HDL オプションの設定] をクリックしてから、[HDL コード生成の設定] ボタンをクリックします。これにより、[コンフィギュレーション パラメーター] ダイアログ ボックスが開きます。[HDL コード生成][最適化][パイプライン][適応パイプライン] を選択し、[適用] をクリックします。

  • [HDL コード生成][グローバル設定][クロック設定] セクションで [オーバーサンプリング係数] を 300 に設定します。[適用] をクリックし、[OK] をクリックします。HDL コードを生成するには、[HDL コード生成] タスク フォルダーでタスクを実行します。

生成された HDL コードの合成

HDL Coder は、ターゲット プラットフォームで HDL コードを合成し、指定したターゲット デバイスに基づいて設計の面積およびタイミング レポートを生成します。指定した FPGA デバイス用にロジック合成を実行し、合成レポートを取得できます。

[FPGA 合成および分析] タスク フォルダーで以下のようにします。

  • サポートされている FPGA 合成ツール用の FPGA 合成プロジェクトを作成します。

  • サポートされている FPGA 合成ツールを起動して、合成、マッピングおよび配置/配線タスクを実行します。FPGA 合成を実行するには、[合成および P/R を実行] サブタスク フォルダーの下にある [合成の実行] タスクを右クリックします。これにより、Xilinx Vivado が開始し、Vivado の [合成] ステップが実行されます。元のモデルに合成ツールで取得したクリティカル パスに関する注釈を付けることができます。

参考

関数

トピック