最新バージョンでは、通信ハードウェアインタフェースの関連部分とホストに互換性がある限り、異なるFPGA VIまたはビットファイルからのインタフェースと動作するサブVIを作成できます。通信ハードウェアインタフェースには、以下の項目が含まれます。

  • 制御器と表示器の名前とタイプ
  • DMAまたはピアツーピアFIFOの名前、データタイプ、およびタイプ
  • ターゲット固有のメソッドの名前、方向、およびタイプ

これらのサブVIは、異なるターゲットタイプのVIまたはビットファイルへのリファレンスであっても、指定されたインタフェースを実装するすべてのFPGAリファレンスと動作することが可能です。たとえば、PCIおよびPXIターゲットに対して同じサブVIを使用することができます。

FPGAリファレンスをダイナミックにするには、「FPGA VIリファレンスを開く」を構成ダイアログボックスのダイナミックモードチェックボックスをオンにします。FPGAインタフェースを指定するには、FPGAインタフェースダイナミックRefnum定数と「ダイナミックFPGAインタフェースキャスト」関数を使用することもできます。サブVIを作成するには、定数を右クリックしてショートカットメニューから制御器に変更または表示器に変更を選択し、定数を制御器または表示器に変更します。

編集時とランタイム時のエラー

FPGAインタフェースのダイナミックモードを使用する際に、LabVIEWは編集時とランタイム時のエラーを返します。編集時またはランタイム時にエラーが発生する可能性がある状況の例を以下に記載します。

  • 編集時のエラー: FIFOを構成するために「メソッドをインボーク」関数を使用し、その後にプロジェクトからFIFOを削除すると、発生します。「メソッドをインボーク」関数により、実行ボタンが壊れます。
  • ランタイム時のエラー: 「ダイナミックFPGAインタフェースキャスト」関数を使用してリファレンスを型変換し、表示器fooをリファレンス先で「制御器を読み取る/書き込む」関数を使用してfooにアクセスを試みると、発生します。

ダイナミックモードリファレンスが後続ノードを壊さないことを確認する

ダイナミックモードオプションでFPGA VIリファレンスを構成し、サブVIインタフェースで必要な要素よりも多くの要素が構成済みのリファレンスに含まれる場合、後続ノードが壊れる原因となる強制変換の問題が発生する可能性があります。サブVIに入ったFPGAインタフェースリファレンス入力と同じ要素が、同サブVI出力から確実に出力されるようにするために、以下のオプションがあります。

  • 入力のワイヤを発呼者VIからのリファレンスに分岐します。
  • サブVIの入力リファレンスを出力リファレンスに直接配線します。