Speedgoat Simulink プログラム可能 I/O モジュールでの FPGA プログラミングと構成
この例では、HDL ワークフロー アドバイザーを使用して Simulink® アルゴリズムを Speedgoat® Simulink プログラム可能 I/O モジュールに実装する方法を説明します。Simulink Real-Time FPGA IO
ワークフローを実行して、次を実行します。
FPGA I/O モジュールとそのインターフェイスを指定します。
FPGA プログラミング用に Simulink アルゴリズムを合成します。
Simulink® Real-Time™ インターフェイス サブシステム モデルを生成します。
インターフェイス サブシステム モデルには、FPGA をプログラミングし、リアルタイム アプリケーションの実行中に PCIe バスを介して FPGA モジュールと通信するブロックが含まれます。生成したサブシステムを Simulink Real-Time ドメインのモデルに追加します。
この例では Speedgoat IO397-50k モジュールを使用します。HDL ワークフロー アドバイザーでの Speedgoat FPGA のサポートを参照してください。
セットアップと構成
アルゴリズムを 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 を参照してください。
HDL ワークフロー アドバイザー
HDL ワークフロー アドバイザーは、HDL コード生成および FPGA 設計のプロセスをサポートします。このアドバイザーを使用して以下のことを行います。
モデルに HDL コード生成との互換性があるか確認し、非互換の設定を修正。
HDL コード、テスト ベンチ、およびそのコードとテスト ベンチをビルドして実行するスクリプトを生成。
合成およびタイミングの解析を実行。
生成されたコードを SoC、FPGA、Speedgoat I/O モジュールに展開。
モデル内のサブシステムに対して HDL ワークフロー アドバイザーを開くには、関数hdladvisor
を使用します。
load_system('sschdlexTwoLevelConverterIgbtExample') hdladvisor('sschdlexTwoLevelConverterIgbtExample/Simscape_system')
アドバイザーの左側のペインには、関連タスクのグループを表すフォルダーが含まれます。フォルダーを展開してタスクを選択すると、そのタスクに関する情報が右側のペインに表示されます。右側のペインには、詳細設定パラメーターに対してタスクを実行するための単純なコントロールと、HDL コードとテスト ベンチの生成を制御するオプション設定が含まれます。各タスクの詳細については、そのタスクを右クリックし、[これはなに?] を選択します。HDL ワークフロー アドバイザーのご利用の前にを参照してください。
Simulink ループバック ドメインのモデル
このモデルが FPGA ドメインのモデルです。これは FPGA ボードのクロックのシミュレーションのサンプル レートを表します。loopback
サブシステムには、FPGA を読み込むアルゴリズムが含まれます。データ型とモデルの入力行数と出力行数は、Speedgoat IO397-50k
プラットフォームに合わせて設定されます。
open_system('hdlcoder_slrt_loopback') set_param('hdlcoder_slrt_loopback', 'SimulationCommand', 'Update')
Speedgoat IO397 プラットフォームの Simulink Real-Time インターフェイス モデルの生成
1. loopback
サブシステムの HDL ワークフロー アドバイザーを開きます。このサブシステムは FPGA に読み込まれます。
hdladvisor('hdlcoder_slrt_loopback/loopback')
2.[ターゲットを設定] フォルダーを展開します。[ターゲット デバイスおよび合成ツールを設定] タスクで、[ターゲット ワークフロー] を [Simulink Real-Time FPGA I/O
] として、[ターゲット プラットフォーム] を [Speedgoat IO397-50k
] として指定します。[ターゲットのリファレンス設計を設定] タスクを右クリックし、[選択したタスクまで実行] を選択します。
3.[ターゲット インターフェイスを設定] タスクで、端子 hwIn
と hwOut
を IO397_TTL [0:13]
および pciRead C0-C4
にマッピングし、pciWrite C0-C4
を PCIe interface
にマッピングします。[このタスクを実行] をクリックします。
4.既定値が [ターゲット周波数 (MHz)] に設定されている [ターゲット周波数を設定] タスクを実行します。ターゲット周波数は、範囲 [周波数範囲 (MHz)] 内でなければなりません。
5.[ターゲットにダウンロード] タスクを展開します。[Simulink Real-Time インターフェイスの生成] タスクを右クリックして [選択したタスクまで実行] を選択します。
このタスクは RTL コード、IP コア、FPGA ビットストリーム、および Simulink Real-Time インターフェイス モデルを生成します。[プロジェクトを作成] タスクで、Vivado プロジェクトを開いて、実装されているブロック設計を確認します。
Real-Time サブシステムの統合と実行
[Simulink Real-Time インターフェイスの生成] タスクが成功したら、リンクをクリックして Simulink Real-Time インターフェイス モデルを開きます。
Simulink Real-Time インターフェイス モデルには、Simulink FPGA ドメインのモデル内のサブシステムと同じ名前のマスク サブシステムが含まれます。このサブシステムは、FPGA に読み込まれるアルゴリズムを含む Simulink Real-Time インターフェイス サブシステムです。生成された Simulink Real-Time インターフェイス モデルを使用するか、Simulink Real-Time ドメインのモデルを作成して Simulink Real-Time インターフェイス サブシステムをそのモデルにコピーして、Speedgoat ターゲット マシンで FPGA アルゴリズムをシミュレートします。
Simulink Real-Time インターフェイス サブシステム マスクで、3 つのパラメーターを設定します。
デバイス インデックス
PCI スロット
サンプル時間
ターゲットに単一の FPGA I/O ボードがある場合、デバイス インデックスを既定値のままにします。FPGA I/O ボードが複数の場合、固有のデバイス インデックスを指定します。同じ種類のボードが 2 つ以上ある場合、各ボードの PCI スロットを指定します。
リアルタイム テストでは、信号をログに記録して、シミュレーション データ インスペクターでシミュレーション結果を表示します。
[リアルタイム] タブで、Simulink Real-Time Explorer を開いてターゲット インターフェイス接続設定を指定します。例については、Speedgoat FPGA I/O モジュールへの Simscape モデルのハードウェアインザループ実装を参照してください。
[リアルタイム] タブで、[ターゲットで実行] をクリックして Simulink Real-Time アプリケーションをビルドしてダウンロードします。リアルタイム アプリケーションが Speedgoat ターゲット マシンに読み込まれ、FPGA アルゴリズム ビットストリームが FPGA に読み込まれます。
次に、シミュレーション データ インスペクターでシミュレーション結果を表示できます。