ホストVIがDMAチャンネルからデータを読み取るように設計することは、DMAアプリケーションの実装において重要な部分です。

メモ このトピックで説明される設計は、FPGAターゲットからホストコンピュータにデータを転送するアプリケーションに適用されます。

設計を選択する

以下の表は、設計に関するいくつかの有用な概要を記載しています。

使用例 設計 利点 欠点

以下の1つまたはそれ以上の状況が発生しているアプリケーション

  • FPGAはデータを不明のレートで集録します。
  • たとえば、ハードウェアデバイスが不明または不規則な間隔で集録をトリガするなど、データ収集がいつ開始されるか分かりません。
  • 他のタスクを実行する前にバッファからすべてのデータを読み取る必要があります。
ブロック
  • 最も簡単なプログラミングデザインです。
  • データスループットはいずれのポーリングデザインでよりも高くなります。
  • ホストVIは要素数の全体を読み取るか、何も読み取らないかのいずれかです。この数を「メソッドをインボーク」関数のFIFO.読み取りメソッドに配線します。
  • 一部のターゲットでは、ホストVIは要素数になるのを待つ間、ほかのタスクを実行できません。これらのターゲットでは、リアルタイムシステム上でホストVIを実行している場合、ホストデスクトップシステムからリアルシステムへ一時的にアクセスできなくなる可能性があります。DMA制約については、ターゲットハードウェアのドキュメントを参照してください。
FPGAがデータを集録するデータロギングアプリケーションは既知のレートで集録を実行しますが、ホストコンピュータはデータを不明または不規則なレートで読み取ります。 変数の要素数をポーリングする ホストVIはデータの読み取りが可能になると即座に要素数を読み取ることができます。 ブロック設計との比較:
  • データの読み取りにもっと時間がかかります。
  • データスループットが低くなる可能性があります。

アプリケーションでは、続行する前に固定の既知量のデータを読み取る必要がありますが、データが利用可能になるのを待つ間に他のタスクを完了しなければいけません。たとえば、1024の要素を1つのフレームのデータとして処理し、他のターゲットにもコマンドを送信する必要があるアプリケーションについて考えてみます。固定ポーリングデザインはデータが利用可能になるとバッファからデータを読み取りますが、データが利用可能でないときに必要なコマンドを送信します。

このデザインは、FPGAがデータを不明または不規則なレートで集録する際にも役立ちます。

要素の固定数をポーリングする ホストVIは、データが利用可能になるのを待機中にほかの連続的なタスクを実行できます。
  • ホストVIは要素数の全体を読み取るか、何も読み取らないかのいずれかです。この数を「メソッドをインボーク」関数のFIFO.読み取りメソッドに配線します。
  • ブロック設計との比較:
    • データの読み取りにもっと時間がかかります。
    • データスループットが低くなる可能性があります。

ホストVIをプログラミングする

以下のFPGA VIを検討します。

このVIはFPGAデバイスの温度を予め指定したレートで測定し、この温度の値をFPGA DMAバッファに書き込むデータ収集を表しています。以下のセクションは、このデータを読み取るホストVIの例を示します。

ブロック

変数の要素数をポーリングする

このVIが読み取る要素数が、前回の読み取り後の残りの要素数に従って変化することに注目します。

要素の固定数をポーリングする