DMA通信を使用する場合は以下のベストプラクティスを考慮してください。

ベストプラクティス 詳細
ターゲットがDMA転送を処理する方法については、FPGAターゲットのハードウェアドキュメントを参照してください。 DMAのサポートと動作は、FPGAターゲットにより異なります。これらの違いは、アプリケーションの設計方法に影響します。
バッファサイズを適切に設定して、オーバーフローおよびアンダーフローを確認します。 DMAバッファのサイズは、アプリケーションのパフォーマンスと堅牢性に多大な影響を及ぼします。
以下の状況を処理するようにアプリケーションを設計する
  • FIFOメソッドノードのタイムアウト?表示器が、FPGAターゲットでTRUEを返します。
  • FIFO読み取りノードのエラー出力表示器が、コード–50400を返します。
これらの状況は、バッファのいずれかでデータの読み取りまたは書き込み中にエラーが発生したことを示します。これらの状況を失敗せず処理できるようにアプリケーションを設計することで、アプリケーションの堅牢性がさらに増します。
ホストコンピュータからFPGAターゲットへのデータ転送にFIFO.書き込みメソッドを使用する場合は、必ずバッファにデータを書き込む前に残りの空要素表示器の値を読み取ってください。 空要素数は次のDMA操作で正確であることが保証されます。大部分のFPGAターゲットでは、この値は各後続の書き込みのサイズと同量減少して後続の処理でも有効になります。ただし、一部のFPGAターゲットでは、この値はDMAチャンネルへの各書き込みごとにこの値を再計算します。この状況でチャンネルに書き込みを実行した場合、バッファが一杯の可能性があるためLabVIEWがデータを破棄する危険があります。書き込み操作がタイムアウトする可能性もあります。
ホストコンピュータでDMAデータの読み取りにFIFO.読み取りメソッドを使用する場合は、常にバッファからデータを読み取る前に残りの要素表示器の値を読み取ります。 バッファからデータを読み取る前にバッファに残っている要素数を読み取るポーリングプログラミングアーキテクチャを使用します。
プログラム的に要素数を構成する前にFIFOを停止します。 FIFOを実行中にFIFOの深度を構成する場合、次に開始する際にFIFOがリセットし、FIFOからすべてのデータが消去されます。
複数チャンネルデータをインタリーブする場合、バッファに書き込む要素数がチャンネル数の整数倍数であることを指定します。 この設計により、各チャンネルから同量のデータを読み取ることができます。たとえば、8つのI/Oチャンネルがある場合に、FIFOプロパティダイアログボックスの要求する要素数制御器で80を指定すると、バッファには各チャンネルから10サンプル分のスペースがあります。
ホストでは、大量のデータを一度に読み取りまたは書き込みします。 DMA通信で計算上のオーバーヘッドが発生するため、コマンドや少量のデータを送信するとリソースが無駄になります。