LabVIEW FPGAでの再入可能サブVIと再入不可サブVIの比較

更新しました Mar 21, 2024

問題

FPGAに再入可能サブVIを含めることはできますか? また、再入可能でないサブVIと比較して、再入可能サブVI を使用する利点と欠点は何ですか。

解決策

LabVIEW FPGA VIはデフォルトで再入可能です。再入可能VIが複数回呼び出される場合、各インスタンスはFPGAデバイスの個別のハードウェアリソースを占有します。非再入可能VIが使用される場合、複数回並行して呼び出されるか、1回だけ呼び出されるかに関係なく、1つのハードウェアインスタンスのみが作成され、そのVIに使用されます。

このデフォルトの動作は、非FPGAターゲットで実行されるVIの反対です。この場合、VIはデフォルトで再入不可であり、一度にメモリ内で開くことができるインスタンスは1つだけです。すべての呼び出し元は、この同じインスタンスにアクセスする必要があります。ただし、VIが非FPGAターゲットで再入可能である場合、VIが呼び出されるたびに新しいインスタンスがメモリで開かれます。

非再入可能サブVIを使用する理由:

  • FPGAのハードウェア スペースとリソースを節約するためです。
    • 非再入可能VIは、ハードウェアで1つのスペースのみを使用します。 FPGAアプリケーションでスペースが問題になる場合は、再利用可能な複製コードを再入不可VIに配置して、スペースを節約し、リソースの使用を最小限に抑えることができます。
  • 非再入可能サブVIを使用して、独立したループ間でデータを保存および転送できます。
    • VIのすべての発呼者が同じゲートのセットを使用するため、そのVIの最後の呼び出しからの値が次の発呼者に利用可能になります。

再入可能なサブVIを使用する理由:

  • メインVIで使用されているサブVIのインスタンスは1つだけです。
    • インスタンスが1つしかない場合、どちらの実行モードでも違いはなく、デフォルトの動作から変更する必要はありません。
  • 2つ以上の独立したループに同じサブVIがあります。
    • 並列ループでサブVIを再入不可として設定すると、そのサブVIが同時に呼び出されるか、実行中に呼び出されるたびに、ループが互いに待機する可能性があります。これにより、望ましくないジッタが発生し、実行が遅くなる可能性があります。
  • 速度は重要であり、FPGA のリソース使用率の限界に達していません。
    • プログラムは比較的小さいですが、高い頻度で決定論を維持する必要があります。
  • サブVIの呼び出しから次の呼び出しにデータが転送されないように、並列プロセスにはサブVIの独自のインスタンスが必要です。
詳細については、以下の LabVIEW FPGA ヘルプ記事を参照してください。