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

FPGA プログラミングと構成

この例では、HDL ワークフロー アドバイザーを使用して Simulink® アルゴリズムを Speedgoat FPGA I/O ボードに実装し、次を実行する方法を説明します。

  1. FPGA ボードとその I/O インターフェイスを指定します。

  2. FPGA プログラミング用に Simulink アルゴリズムを合成します。

  3. Simulink® Real-Time™ インターフェイス サブシステム モデルを生成します。

インターフェイス サブシステム モデルには、FPGA をプログラミングし、リアルタイム アプリケーションの実行中に FPGA I/O ボードと通信するブロックが含まれます。生成したサブシステムを Simulink Real-Time ドメインのモデルに追加します。

ワークフロー全体は次の図のようになります。

この例では Speedgoat IO331 を使用します。モデルの速度、サイズ、ピン配列の要件を満たす Simulink Real-Time と HDL Coder でサポートされている任意の FPGA I/O モジュールを使用できます。

要件と前提条件

HDL Coder™

開始する前に、FPGA サブシステムの計画を完了します。

IO331 ボードの場合、HDL ワークフロー アドバイザーに Xilinx® ISE ツールセットが必要です。このツールセットをインストールするには、コマンド ウィンドウで以下を入力します。

hdlsetuptoolpath('ToolName', 'Xilinx ISE', 'ToolPath', toolpath)

ここで toolpath には、合成ツールの実行可能ファイルへの絶対パスが入ります。

その他のボードのツールセット要件の詳細については、「サポートされているサードパーティ製のツールとハードウェア」(HDL Coder) を参照してください。

手順 1. Simulink ドメインのモデル

Simulink FPGA ドメインのモデルには、FPGA チップにプログラミングするサブシステム (アルゴリズム) が含まれます。FPGA ボードにアルゴリズムをダウンロードする前に、このモデルを使用して FPGA アルゴリズムをシミュレーション環境でテストできます。

  1. FPGA に読み込むアルゴリズムが含まれた Simulink モデルを作成します。この場合は、ループバック テストになります。

  2. FPGA でプログラミングするアルゴリズムを Subsystem ブロック内に配置します。モデルにはその他のブロックおよびサブシステムをテスト用に含めることができます。ただし、1 つのサブシステムに FPGA アルゴリズムを含めなければなりません。

  3. サブシステムの入力端子と出力端子の名前およびデータ型を設定または確認します。HDL Coder の HDL ワークフロー アドバイザーはこれらの設定を I/O コネクタ チャネルに対するアルゴリズム信号の経路指定とマッピングに使用します。

  4. モデルを保存します。

このモデルが FPGA ドメインのモデルです。これは FPGA ボードのクロックのシミュレーションのサンプル レートを表します。たとえば、Speedgoat IO331 にはオンボードの 125 MHz クロックがあります。シミュレーションの 1 秒はモデルの 125e6 回の反復に等しくなります。

FPGA ドメインのモデルの例については、dslrtSGFPGAloopback_fpga を参照してください。ServoSystem サブシステムに FPGA アルゴリズムが含まれています。

手順 2. FPGA ターゲット構成

この手順では、dslrtSGFPGAloopback_fpga の例を使用します。FPGA ドメインのモデルに FPGA サブシステム (アルゴリズム) が作成されていて、FPGA サブシステム計画が開発されていなければなりません。

  1. FPGA ドメインのモデル dslrtSGFPGAloopback_fpga を開きます。

  2. FPGA モデルで、FPGA サブシステム (ServoSystem) を右クリックします。コンテキスト メニューから、[HDL コード][HDL ワークフロー アドバイザー] を選択します。[HDL ワークフロー アドバイザー] ダイアログ ボックスにサブシステムのいくつかのタスクが表示されます。必要なタスクのサブセットのみを使用します。

  3. [ターゲットを設定] フォルダーを展開し、タスク [1.1 ターゲット デバイスおよび合成ツールを設定] を選択します。

  4. [ターゲット ワークフロー]Simulink Real-Time FPGA I/O に設定します。

  5. [ターゲット プラットフォーム] リストから Speedgoat ターゲット マシンにインストールした Speedgoat FPGA I/O ボードを選択します。この場合は Speedgoat IO331 になります。HDL ワークフロー アドバイザーによって合成ツールが Xilinx® ISE Design Suite に設定されることを確認します。

  6. [このタスクを実行] をクリックします。

手順 3. FPGA ターゲット インターフェイス構成

FPGA ターゲットを設定しておかなければなりません。

  1. [ターゲットを設定] フォルダーで、タスク [1.2 ターゲット インターフェイスを設定] を選択します。

  2. [プロセッサ/FPGA 同期] ボックスで Free running を選択します。

  3. 信号 hwIn および hwOut について、[ターゲット プラットフォーム インターフェイス] 列で LVCMOS I/O Channel [0:63] を選択します。[Bit Range/Address/FPGA Pin] 列に、各信号のチャネルの値を入力するか、既定値を使用します。

  4. 信号 pciRead および pciWrite について、[ターゲット プラットフォーム インターフェイス] 列で PCI Interface を選択します。[Bit Range/Address/FPGA Pin] 列で、自動的に生成された値を使用します。PCI のアドレス値は入力しないでください。

  5. [このタスクを実行] をクリックします。

手順 4. FPGA ターゲット周波数構成

FPGA ターゲット インターフェイスを設定しておかなければなりません。

  1. [ターゲットを設定] フォルダーで、タスク [1.3 ターゲット周波数を設定] (オプション) を選択します。[ターゲット周波数を設定] ペインには FPGA 入力 Clock 周波数 (固定) と FPGA システム Clock 周波数が表示されます。FPGA システム Clock 周波数は既定で FPGA 入力 Clock 周波数になります。

  2. 異なるシステム クロック周波数 (50 MHz など) を指定するには、新しい値を [FPGA システム Clock 周波数 (MHz)] フィールドに入力します。システム クロック レートで許可される範囲の詳細については、Speedgoat ボードの特性表を参照してください。指定した値とは異なる値をシステムが設定する場合もあります。

  3. [このタスクを実行] をクリックします。

手順 5. Simulink Real-Time インターフェイス サブシステムの生成

この手順では、dxpcSGFPGAloopback_fpga の例のインターフェイス サブシステム ファイルを生成します。

異なる HDL コードが含まれるブロックに異なる名前を割り当てます。インターフェイス サブシステム ファイルの名前はブロック名から直接導出されます。異なる HDL コードを含む 2 つのブロックが同じ名前をもつ場合、名前が競合し、いずれかのブロックが間違ったコードを取得します。

FPGA ターゲット インターフェイスと必要なターゲット周波数を設定しておかなければなりません。ベクトルの入力端子または出力端子を指定した場合、[ベクトル端子のスカラー化] チェック ボックスを選択しておかなければなりません。このチェック ボックスは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成] ノード下にある、ノード [グローバル設定][コーディング スタイル] タブにあります。

  1. [ターゲットにダウンロード] フォルダーを展開し、タスク [5.2 Simulink Real-Time インターフェイスの生成] を右クリックします。

  2. このペインで、[選択したタスクまで実行] ボタンをクリックします。

このアクションにより、以下が実行されます。

  • 残りのタスクが実行される。

  • FPGA ビットストリーム ファイルが hdlsrc フォルダーに作成される。ビルドとダウンロード プロセス中に Simulink Real-Time インターフェイス サブシステムがこのビットストリーム ファイルを参照する。

  • Simulink Real-Time インターフェイス サブシステムが含まれる gm_dslrtSGFPGAloopback_fpga_slrt という名前のモデルが生成される。

このアクション後の HDL Coder の HDL ワークフロー アドバイザーの例を次に示します。

生成されたインターフェイス サブシステムは次の図のようになります。

生成されたモデルには、Simulink FPGA ドメインのモデル内のサブシステムと同じ名前のマスク サブシステムが含まれます。外観は似ていますが、このサブシステムには Simulink アルゴリズムが含まれません。代わりに、アルゴリズムは FPGA ビットストリームに実装されます。このアルゴリズムを参照し、このサブシステムから FPGA に読み込みます。

手順 6. Simulink Real-Time ドメインのモデル

Simulink Real-Time ソフトウェアを使用して、Simulink または Stateflow® ドメインのモデルを Simulink Real-Time ドメインのモデルに変換し、リアルタイム テスト アプリケーション用の Speedgoat ターゲット マシン上で実行します。まず、Speedgoat FPGA インターフェイス サブシステムを作成します。その後、インターフェイス サブシステムを挿入して FPGA ボードを Simulink Real-Time ドメインのモデルに含めることができます。

  1. FPGA アルゴリズムでシミュレートする機能を使用して Simulink Real-Time ドメインのモデルを作成します。FPGA サブシステムの入力端子と出力端子は切断されたままにします。

  2. モデルを保存します。

Simulink Real-Time ドメインのモデルは次の図のようになります。モデル例 dslrtSGFPGAloopback_slrt を参照してください。

手順 7. Simulink Real-Time インターフェイス サブシステムの統合

Simulink Real-Time インターフェイス サブシステム マスクで、3 つのパラメーターを設定します。

  • デバイス インデックス

  • PCI スロット

  • サンプル時間

インターフェイス サブシステムを統合するには、次を行います。

  1. Simulink エディターで gm_dslrtSGFPGAloopback_fpga_slrt を開きます。

  2. Simulink Real-Time インターフェイス サブシステムをコピーして、Simulink Real-Time ドメインのモデルに貼り付けます。

  3. gm_dslrtSGFPGAloopback_fpga_slrt を保存または破棄します。これは、必要に応じて HDL Coder の HDL ワークフロー アドバイザーを使用して再作成できます。

  4. ドメインのモデル内で、インターフェイス サブシステムの入力端子と出力端子に信号を接続します。

  5. Speedgoat ターゲット マシンの FPGA I/O ボードに応じて、ブロック パラメーターを設定します。

  • 単一の FPGA I/O ボードの場合、デバイス インデックスと PCI スロットは既定値のままにします。サンプル時間を設定することも、そのまま –1 を使用して継承することもできます。

  • 複数の FPGA I/O ボードがある場合、各ボードに固有のデバイス インデックスを指定します。

  • 同じタイプのボードが 2 つ以上ある場合 (2 つの Speedgoat IO331 ボードなど)、各ボードに PCI スロット ([bus, slot]) を指定します。この情報は関数 SimulinkRealTime.target.getPCIInfo を使用して取得します。

6. モデルを保存します。

更新された Simulink Real-Time ドメインのモデルは次の図のようになります。モデル例 dslrtSGFPGAloopback_slrt_wiss を参照してください。

手順 8. リアルタイム アプリケーションの実行

この手順を実行するには、HDL Coder の HDL ワークフロー アドバイザーで生成された Simulink Real-Time インターフェイス サブシステムが含まれる Simulink Real-Time ドメインのモデルを作成しておかなければなりません。

  1. Speedgoat ターゲット マシンを構成し、開発コンピューターに接続します。

  2. Simulink Real-Time アプリケーションをビルドしてダウンロードします。リアルタイム アプリケーションが Speedgoat ターゲット マシンに読み込まれ、FPGA アルゴリズム ビットストリームが FPGA に読み込まれます。

  3. I/O 回線 (チャネル) を使用している場合は、回線をテスト対象の外部ハードウェアに接続したことを確認します。

Simulink Real-Time モデルの開始と停止により、FPGA アルゴリズムの開始と停止が制御されます。FPGA アルゴリズムは FPGA I/ O ボードのクロック周波数で実行されますが、リアルタイム アプリケーションはモデルのサンプル時間に従って実行されます。

関連するトピック