FPGAターゲットの入出力 (I/O) は、FPGAターゲットがその他のデバイスに接続されることを可能にします。FPGA I/Oリソースは、システムのさまざまな部分とデータ通信を行うために使用するFPGAターゲットの固定要素です。一部のFPGAターゲットでは、FPGA I/Oリソースは、フロントパネルコネクタ、PXIバックプレーン、またはRTSIコネクタのラインに対応します。その他のFPGAターゲットでは、FPGA I/Oリソースは、NIが設計したFPGAの一部と、ユーザがFPGA VIで設計したFPGAの一部を接続するFPGA内のノードです。コンポーネントレベルIP (CLIP) の場合、I/OリソースはCLIPをFPGA VIと接続するFPGA内のノードです。各FPGA I/Oリソースには、デジタルやアナログなど、特定のタイプがあります。FPGAターゲットには、同じか異なるタイプの複数のI/Oリソースが含まれる場合があります。FPGA I/O項目を作成して、使用するFPGAターゲットでI/Oリソースを決定した後に、使用するI/Oリソースに固有名を割り当てることができます。

メモ 使用するFPGAターゲットでサポートされる機能やI/Oの詳細については、FPGAターゲットハードウェアのドキュメントを参照してください。I/Oリソースの調整については、「共有リソースを管理する」を参照してください。

リソースは、物理量をFPGAモジュールソフトウェアで操作するデジタル値に変換します。I/Oリソースには、物理量を受信または生成するための1つまたは複数の端子があります。FPGAターゲットの多くのI/Oリソースには、システムの要素を直接接続することができる物理端子があります。

FPGA VIがFPGAターゲットで実行されると、I/O操作がハードウェアで実行されます。たとえば、FPGA I/Oノードをデジタルラインを読み取るように構成すると、FPGA I/Oノードはラインを読み取り、結果をFPGA VIに返します。FPGA VIはFPGAで実行されるため、VIはFPGAターゲットハードウェアで利用できる速度および確定性で入力値に反応できます。

アナログとデジタルの入出力を、ブロックダイアグラムの同じノードに一緒に配置することができます。FPGA VI要素のターゲット固有のプロパティとメソッドは、それぞれFPGA I/OプロパティノードおよびFPGA I/Oメソッドノードで使用できます。

デジタルI/O

FPGAターゲットは、デジタルI/Oリソースを個別のライン、またはポートと呼ばれるラインのグループにまとめる場合があります。一部のFPGAターゲットは、デジタルI/Oリソースへのアクセスをラインまたはポートとして排他的に提供します。その他のFPGAターゲットは、同じ物理ラインの両方を個別ラインまたはポートとして、アクセスを許可します。デジタルI/Oリソースには、入力の読み取り、出力の書き込み、そして両方を行うことができる3つのタイプがあります。デジタルI/Oのサポートについては、FPGAターゲットのハードウェアドキュメントを参照してください。

デジタル入力リソース

FPGA I/Oノードで、デジタル入力FPGAリソースを読み取ることができます。デジタル入力リソースを使用して、FPGAターゲットの外部の回路を監視します。

デジタル出力リソース

FPGA I/Oノードで、デジタル出力FPGAリソースを書き込むことができます。デジタル出力リソースを使用して、FPGAターゲットの外部の回路を管理します。

デジタル入出力リソース

一部のFPGAターゲットには、双方向 (トライステートとも呼ばれる) のデジタルI/Oリソースが含まれています。LabVIEW FPGAでは、トライステートのデジタルI/Oリソースはデジタル入出力リソースと呼ばれます。FPGA I/Oノードで、デジタル入出力リソースを読み書きできます。デジタル入出力リソースを使用して、FPGAターゲットの外にある回路を監視および制御することができます。トライステートリソースは、I/Oリソースを構成することによりデータフローの方向制御が可能です。出力有効化を設定メソッドで構成したFPGA I/Oメソッドノードを使用して、データフローの方向を変更します。TRUE値を有効入力に書き込むことで、トライステートI/Oリソースを出力リソースとして構成できます。FALSE値を有効入力に書き込むことで、トライステートI/Oリソースを入力リソースとして構成できます。

メモ デフォルトの方向は通常、入力です。

以下の図が示すように、出力有効信号は、ラインが入力または出力用に構成されるかどうかを制御します。

トライステートリソースは、以下の図で示すように出力有効化信号が制御するスイッチのような働きをします。

出力有効化信号がTRUEまたは1に設定されている場合、デジタルラインは出力として構成され、出力データに格納された値はデジタルラインで駆動されます。出力有効化信号がFALSEまたは0に設定されている場合、デジタルラインは高インピーダンス入力として構成され、ラインが外部デバイスで駆動されることを可能にします。

出力有効化信号の状態に関係なく、入力データを使用してデジタルラインの現在の状態を監視することができます。

FPGA I/Oノードを使用してDIOリソースを読み取りを行う場合、FPGA I/Oノードはリソースの方向を変更しません。DIOリソースを使用して出力の書き込みを行った場合、次に入力の読み取りを行うには、出力を無効にする作業が必要です。以下の図に示すように、出力有効化を設定メソッドで構成されたFPGA I/Oメソッドノードで出力を無効にしてから、DIOリソースで構成されたFPGA I/Oノードは外部信号の状態を読み取っています。無効にしない場合、FPGA I/OノードはFPGA VIによって書き込まれた最後の値を再度読み取るだけになります。

FPGA I/Oノードを使用してDIOリソースを書き込む場合、FPGA I/Oノードは出力用に端子を有効にする作業とデータの書き込みを両方行います。また、FPGA I/Oメソッドノードを出力データ設定メソッドで構成すれば、出力を有効にせずにデータを書き込むこともできます。FPGA I/O メソッドノードの「出力有効化を設定」メソッドで使用してデジタル端子を有効にすると、データが出力されます。出力データ設定メソッドを出力有効化を設定メソッドの前に使用して、出力が有効になった直後のDIOリソースの状態を指定します。たとえば、ブロックダイアグラムの一部で、内部信号を連続して生成させている場合、FPGA I/Oメソッドノードおよび出力有効化を設定メソッドをブロックダイアグラムの他の部分で使用して、内部信号が外部デバイスに実際に駆動されるタイミングを別で制御できます。

DIOリソースをシングルサイクルタイミングループに含めると、シングルサイクルタイミングループの1回の反復に相当する遅延が各同期レジスタで発生します。場合によっては、FPGAの外部の遅延がそのシステムで大きな影響を与えることもあります。FPGA VIを開発用コンピュータで実行して、アプリケーションの論理をテストする上でLabVIEWダイアグラムとFPGA間の遅延の正確なモデルが重要な場合、I/Oのシミュレーションデータは同期レジスタと同数であるI/Oノードへのコールの数だけ遅延します。

アナログI/O

アナログ入力

使用するFPGAターゲットにアナログ入力リソースが含まれている場合、アナロ入力値を読み取るようにFPGA I/Oノードを構成することができます。アナログ入力を読み取るようにFPGA I/Oノードを構成すると、FPGA I/Oノードは変換を行い、結果を待機後に、電圧のバイナリ表記を符号付き整数または固定小数点として返します。アナログ入力プロセスおよび結果のデータタイプは、FPGAターゲットにより異なります。多くのFPGAターゲットでは、アナログ入力FPGA I/Oノードによって返されたデータを使用するFPGA VIを作成します。また、ホストVIにデータを戻し、該当する場合はデータを電圧、またはFPGAターゲットアナログ入力にトランスデューサが取り付けられている場合はその他の物理量に変換することもできます。

バイナリ表記を物理量に変換する際に使用する式は、FPGAターゲットおよびトランスデューサにより異なります。たとえば、NI PXI-7831Rデバイスの場合、バイナリ表記を電圧に変換する際、「入力電圧 = (バイナリコード / 32768) x 10.0V」を使用します。詳細については、特定のFPGAターゲットのハードウェアドキュメントを参照してください。

アナログ出力

使用するFPGAターゲットにアナログ出力リソースが含まれている場合、アナログ出力値を書き込むようにFPGA I/Oノードを構成することができます。アナログ出力に書き込むようにFPGA I/Oノード構成すると、FPGA I/Oノードは電圧のバイナリ表記をアナログ出力電圧を設定するA/D変換器 (ADC) に書き込みます。データタイプは、FPGAターゲットにより異なります。ホストおよびFPGA VIの2つのソースから、電圧情報を生成できます。ホストVIは通常、FPGA VIに値を書き込む前に電圧を適切なバイナリ表記に変換します。FPGA VIで電圧を決定する場合、適切なバイナリ表記を使って計算を実行します。いずれの場合も、DACはバイナリ表記に対応する電圧を生成します。

電圧をバイナリ表記に変換する際に使用する式は、特定のFPGAターゲットによって異なります。たとえば、NI PXI-7831Rデバイスの場合、電圧をバイナリ表記に変換する際、「バイナリコード = (出力電圧 x 32768) / 10.0V」を使用します。詳細については、特定のFPGAターゲットのハードウェアドキュメントを参照してください。