LabVIEW FPGAアプリケーションプログラミングインタフェース (API) は、他のNI-Serial (VISAなど) およびCシリーズモジュールAPIとは本質的に異なります。I/Oノードの代わりに、FPGA I/Oメソッドノードの読み取りバイトメソッドと書き込みバイトメソッドがデータ転送に使用されます。

プロパティノードは、モジュール構成を動的に変更できます。また、VIをコンパイルおよび実行する前に、適切なモジュールを右クリックしてプロパティを選択することで、ほとんどのモジュール構成をプロジェクトエクスプローラウィンドウから直接実行できます。標準以外のボーレートを使用している場合は、この構成パネルを使用して、プロパティノードを使用して書き込む適切なボーレート分周器およびボーレートプリスケーラを計算することもできます。

このモジュール上の4つのポートはすべて、約128 KB/sの帯域幅を持つFPGAターゲットへの1つのインタフェースを共有しています。この共有インタフェースは、大量のデータを高レートで転送する際に注意すべきポイントになります。モジュールへのインタフェースが共有されているため、モジュールには一度に1つのLabVIEW FPGAノードからのみアクセスされます。FPGA VIのブロックダイアグラム上に同時に実行されるノードが複数存在する場合、LabVIEW FPGAモジュールは、ポート固有のプロパティノードおよびメソッドノードに対して、公平なラウンドロビン方式でモジュールへのアクセスを自動的に調停します。シリアル#、モジュールID#、ベンダID#などの一般的なモジュールプロパティノードは、調停方式において優先度が低く設定されています。

共有インタフェースを考慮すべきタイミングを理解するためには、ポートのボーレート (ボー) とデータスループットレート (秒あたりのバイト数) を区別して考えることが重要です。ボーレートは電気的な遷移の速度を示し、スタートビット、ストップビット、パリティビットなどのオーバーヘッドを含みます。一方、データスループットレートは、実際のデータがアプリケーション、ここではFPGAとの間でどれだけの速度でやり取りされるかを示します。

特定のボーレートにおける最大データスループットレートは、ボーレートをシリアルメッセージ内の総ビット数で割ることで計算できます。例えば、一般的な構成では、スタートビット1、データビット8、ストップビット1を使用し、合計で10ビットになります。この構成で9600 baudを設定した場合、1秒あたり最大960 (9600÷10) 件のデータメッセージ (バイト) を処理できます。同じ構成でボーレートが921,600 baudのシリアルポートでは、データスループットは平均で92.2 KB/sとなります。

4つすべてのポートのボーレートの合計が500,000 baudを超える場合、この共有インタフェースがパフォーマンスを制限し始める可能性があります。4つすべてのポートが460,800 baudで動作する構成を想定します。この設定では、各ポートあたりの最大データスループットは46.08 KB/sです。アプリケーションは、1つのポートに対して46.08 KB/s、または2つのポートに対してそれぞれ23.04 KB/sで、遅延なく同時にデータの読み取りと書き込みを行うことができます。ただし、2つのポートでそれぞれ46.08 KB/sの読み取りと書き込みを行おうとすると、転送サイズによっては多少の遅延が発生する可能性があります。

参考として、4つすべてのポートのボーレートが最大115,200 baudまでであれば、本モジュールはどのようなデータスループットでも正常に動作します。多くのシリアルアプリケーションでは、指定されたボーレートの全帯域幅を使用して大きな連続データブロックを転送することはほとんどありません。さらに、NI 987x Cシリーズモジュールには、各ポートごとに64バイトのUART FIFOバッファが搭載されており、送受信データの一時的な小さな増加を吸収できます。最後に、高いボーレートでタイムアウトが発生する場合は、タイムアウト値を増やす、またはプロパティノードなどの他のモジュールアクセス回数を減らすことで、タイムアウトの低減が期待できます。