一部のFPGAターゲットでは、FPGAから割り込みを生成して、データ準備完了、エラー発生、またはタスク完了などのイベントをホストVIに通知することが可能です。ターゲットが割り込みをサポートしているかどうかを確認するには、FPGAターゲットプロパティダイアログボックスを開き、一般ページのターゲット情報セクションを参照します。

単一の割り込みを待機および検出する

ホストVIで単一の割り込みを待機および検出するには、以下の手順に従ってください。

  1. 割り込みを生成するFPGA VIまたはビットファイルへのリファレンスを開きます。
  2. ホストVIのブロックダイアグラムで、ホストVIがFPGA VIからの割り込みを待機するデータフローの位置に「メソッドをインボーク」関数を追加します。FPGA VIリファレンス入力は必ず配線します。
  3. 「メソッドをインボーク」関数を右クリックし、ショートカットメニューからメソッド→IRQを待機を選択します。
  4. 「メソッドをインボーク」関数のIRQ番号入力を右クリックして、ショートカットメニューから作成→定数を選択します。また、制御器を作成することもできます。
  5. FPGA VIで選択した論理割り込みの値を入力します。
  6. ホストVIが割り込みを待機し始めてから、データフローを再開するまでの最大時間を指定する場合は、タイムアウト入力を配線します。デフォルトでは、ホストVIは割り込みの発生を待機せず、FPGA VIによってすでに設定された割り込みのみを返します。また、割り込みを無限期間待機するには、値が–1の定数を配線することもできます。タイムアウト入力を使用する場合は、タイムアウト出力を使用して、データフローの再開が割り込みの受信によるものなのか、タイムアウトの発生によるものなのかを判定することができます。タイムアウトが発生した場合、タイムアウト出力はTRUEを返します。
  7. 「メソッドをインボーク」関数のアサートされたIRQ出力を右クリックして、ショートカットメニューから作成→表示器を選択します。LabVIEWは数値表示器を作成します。–1の値は、割り込みが受信されなかったことを示します。
  8. ホストVIのブロックダイアグラムで、ホストVIがFPGA VIから割り込みを検出するデータフローの位置に「メソッドをインボーク」関数を追加します。ホストVIが割り込みを受信した場合にのみ「メソッドをインボーク」関数を実行するには、この関数をケースストラクチャに追加します。TRUEのブール定数を「割り込み」VIのクリアされるまで待機入力に配線している場合、データフロー中の「割り込み」VIに待機の終了を告げる位置に「メソッドをインボーク」関数を追加します。「メソッドをインボーク」関数のFPGA VIリファレンス入力を必ず配線してください。
  9. 「メソッドをインボーク」関数を右クリックし、ショートカットメニューからメソッド→IRQ肯定応答を選択します。IRQ肯定応答メソッドを使用して、IRQを待機メソッドによって返された論理割り込みに対する肯定応答を行います。
  10. IRQを待機メソッドのアサートされたIRQ出力を、IRQ肯定応答メソッドのIRQ番号入力に直接配線します。

複数の割り込みを待機および検出する

ホストVIで複数の割り込みを待機および検出するには、以下の手順に従ってください。

  1. 割り込みを生成するFPGA VIまたはビットファイルへのリファレンスを開きます。
  2. ホストVIのブロックダイアグラムで、ホストVIがFPGA VIからの割り込みを待機するデータフローの位置に「メソッドをインボーク」関数を追加します。FPGA VIリファレンス入力は必ず配線します。
  3. 「メソッドをインボーク」関数を右クリックし、ショートカットメニューからメソッド→IRQを待機を選択します。
  4. ブロックダイアグラムに配列定数を追加します。配列には、左側に指標表示、右側に要素表示、オプションのラベルがあります。
  5. 数値定数を配列に追加します。
  6. 位置決めツールを使用して、必要な割り込み数まで配列定数を拡張します。
  7. 論理割り込みの値を入力します。
  8. 配列定数をIRQ番号入力に配線します。
  9. ホストVIが割り込みを待機し始めてから、データフローを再開するまでの最大時間を指定する場合は、タイムアウト入力を配線します。デフォルトでは、ホストVIは割り込みの発生を待機せず、FPGA VIによってすでに設定された割り込みのみを返します。また、割り込みを無限期間待機するには、値が–1の定数を配線することもできます。タイムアウト入力を使用する場合は、タイムアウト出力を使用して、データフローの再開が割り込みの受信によるものなのか、タイムアウトの発生によるものなのかを判定することができます。タイムアウトが発生した場合、タイムアウト出力はTRUEを返します。
  10. 「メソッドをインボーク」関数のアサートされたIRQ出力を右クリックして、ショートカットメニューから作成→表示器を選択します。LabVIEWは、配列表示器を作成します。アサートされたIRQフロントパネル表示器は、FPGAターゲットがアサートした割り込み番号を表示します。空の配列は、受信された割り込みがないことを示します。
  11. ホストVIのブロックダイアグラムで、ホストVIがFPGA VIから割り込みを検出するデータフローの位置に「メソッドをインボーク」関数を追加します。ホストVIが割り込みを受信した場合にのみ「メソッドをインボーク」関数を実行するには、この関数をケースストラクチャに追加します。TRUEのブール定数を「割り込み」VIのクリアされるまで待機入力に配線している場合、データフロー中の「割り込み」VIに待機の終了を告げる位置に「メソッドをインボーク」関数を追加します。「メソッドをインボーク」関数のFPGA VIリファレンス入力を必ず配線してください。
  12. 「メソッドをインボーク」関数を右クリックし、ショートカットメニューからメソッド→IRQ肯定応答を選択します。IRQ肯定応答メソッドを使用して、IRQを待機メソッドによって返された論理割り込みに対する肯定応答を行います。
  13. IRQを待機メソッドのアサートされたIRQ出力を、IRQ肯定応答メソッドのIRQ番号入力に直接配線します。