プログラミングの概要
- 更新日2025-10-09
- 4分で読める
LabVIEW FPGAアプリケーションプログラミングインタフェース(API)は、他のNI-Serial(例えばVISA)やCシリーズモジュールAPIとは本質的に異なります。I/Oノードの代わりに、FPGA I/OメソッドノードのRead ByteメソッドおよびWrite Byteメソッドがデータ転送に使用されます。
プロパティノードによって、モジュールの構成を動的に変更できます。また、VIをコンパイルおよび実行する前に、適切なモジュールを右クリックしプロパティを選択することで、ほとんどのモジュール構成をプロジェクトエクスプローラウィンドウから直接実行できます。標準以外のボーレートを使用する場合は、この構成パネルを利用して、プロパティノードで書き込む際の適切なボーレート分周器およびボーレートプリスケーラを計算することもできます。
モジュールの4つのポートはすべて、約128 KB/sの帯域幅を持つFPGAターゲットへの1つのインタフェースを共有します。この共有インタフェースは、大量のデータを高レートで転送する場合に重要な考慮事項となります。モジュールへの共有インタフェースのため、モジュールにはLabVIEW FPGAノード1つのみが一度にアクセスできます。FPGA VIのブロックダイアグラム上で同時に実行される複数のノードが存在する場合、LabVIEW FPGAモジュールは、ポート固有のプロパティノードおよびメソッドノードへのアクセスに対して、公平なラウンドロビンアービトレーション方式で自動的にアービトレーションを行います。アービトレーションスキームにおいて、シリアル番号、モジュールID番号、ベンダID番号などの一般的なモジュールプロパティノードの優先度は低くなります。
この共有インタフェースについての考慮事項がいつ適用されるべきかを理解するためには、ポートのボーレート(ボー)とデータスループットレート(バイト/秒)を区別することが重要です。ボーレートは電気遷移のレート(スタートビット、ストップビット、パリティビットなどのオーバーヘッドを含む)を指し、データスループットレートは実際のデータがアプリケーションまたは本ケースではFPGAとの間でやり取りされる速度です。
与えられたボーレートでの最大データスループットレートは、ボーレートをシリアルメッセージの全ビット数で割ることで算出できます。例えば、一般的な構成は1スタートビット、8データビット、1ストップビットの合計10ビットです。この構成の9600ボーセットアップでは、1秒あたり最大960(9600を10で除算)のデータメッセージ(バイト)をサポートできます。同じ構成でボーレートが921,600ボーのシリアルポートは、データスループットとして平均92.2 KB/sとなります。
4つのポートすべてのボーレート合計が500,000ボーを超える場合、この共有インタフェースがパフォーマンスの制限となる場合があります。4つのポートがすべて460,800ボーで動作する構成を検討します。このセットアップでは、ポートあたり最大データスループットは46.08 KB/sです。アプリケーションは、レイテンシなく1つのポートに対して46.08 KB/s、または2つのポートに対して23.04 KB/sで同時にデータを読み書きできます。ただし、2つのポートで46.08 KB/sずつ読み書きしようとすると、転送サイズによりレイテンシが生じる可能性があります。
参考までに、4つのポートすべてでボーレートが115,200ボー以下の場合、モジュールはどのデータスループットレートでも正常に動作します。ほとんどのシリアルアプリケーションは、指定ボーレートの全帯域幅を使って大きな連続データブロックを転送することはありません。さらに、NI 987x Cシリーズモジュールは各ポートに個別の64バイトUART FIFOバッファを備えており、送信および受信データの小規模なサージに対応できます。最後に、高ボーレートでタイムアウトが発生した場合は、タイムアウト値を大きくするか、他のモジュール(プロパティノードなど)へのアクセス回数を減らすことで、タイムアウトの発生を抑制できる場合があります。