xを累算するか、または減分します。この関数は、複数チャンネル操作とフィードバックスケールをサポートします。

この関数は、ブール配列と整数および 固定小数点 データタイプです。


icon

ダイアログボックスオプション

パラメータ Description
固定小数点の構成 入力 x および出力 s のエンコーディングとワード長を指定します。出力sの小数部分ワード長は常に、入力xの小数部分ワード長と等しくなります。
  • xタイプ ―x 入力端子の固定小数点構成を指定します。
    • 符号付き―この端子が符号付きであることを指定します。
    • 符号なし―この端子が符号なしであることを指定します。
    • ワード長―この端子のワード長を指定します。
  • sタイプ ―s 出力端子の固定小数点構成を指定します。
    • 符号付き ―s が符号付きであることを指定します。このオプションを淡色表示にし、xのエンコーディングを一致させます。
    • 符号なし ―s が符号なしであることを指定します。このオプションを淡色表示にし、xのエンコーディングを一致させます。
    • ワード長 ―sのワード長を指定します。値は xのワード長以上である必要があります。この関数は、sの小数部分ワード長が xの小数部分ワード長と同じになるように、sの 整数ワード長を内部的に設定します。

      たとえば、xのデータタイプは<+, 8, 3>の場合、小数部分ワード長は5ビットです。sワード長11ビットに設定する場合、この関数は、sの整数ワード長を内部で6ビットに設定します。この設定により、xsの両方で5ビットの小数部分ワード長が維持されます。

アキュムレータ設定 アキュムレータの設定が含まれます。
  • フィードバックダウンスケール ―sxで累算/減分する前に、この関数が sの ビットパターンを右シフトするビット数を指定します。このバイナリシフトはsを2^n (nはこの制御器の値) で割り算する高効率の方法です。

    フィードバックダウンスケールは、sワード長および64よりも小さい値である必要があります。デフォルト値は0ビットで、シフトなしを示します。

    たとえば、3ビットの値は、sxで累算または減分する前にsを2^3または8で除算する演算に相当します。

  • チャンネル数―この関数が操作するデータのチャンネル数を指定します。この関数は、別々の内部レジスタで個別のチャンネルからのデータを保存します。複数のチャンネルを指定する場合、x入力端子に送信する値をインタリーブする必要があります。デフォルト値は1チャンネルです。を参照してください。 アキュムレータ 複数チャンネルアプリケーションでのこの関数の使用例については、詳細セクションを参照してください。
  • レジスタオーバーフロー―この関数が オーバーフロー 出力端子の前に内部レジスタを追加するかどうかを指定します。デフォルトでは、このチェックボックスはオフに設定されているため、この関数は、sの値の1クロックサイクル前にオーバーフローの結果を返します。

    sの値と同じクロックサイクル中にオーバーフローの値を返すには、このチェックボックスをオンにします。

    LabVIEWは、xおよびs符号付きである場合のみにこのオプションを表示します。

  • レジスタキャリーアウト/反転ボローアウト―この関数が キャリーアウト/反転ボローアウト 出力端子の前に内部レジスタを追加するかどうかを指定します。このチェックボックスは、デフォルトでオフに設定されており、sの値の1クロックサイクル前に、この関数がキャリーアウト/反転ボローアウトの結果を返すことを意味します。この状況は、「アキュムレータ」関数のカスケードしている場合に、この関数のキャリーアウト/反転ボローアウト端子と後続の関数のキャリーイン/反転ボローイン端子の間で遅延を発生させない場合に役立ちます。

    sの値と同じクロックサイクル中にキャリーアウト/反転ボローアウトの値を返すには、このチェックボックスをオンにします。

    LabVIEWは、xおよびs符号なしである場合のみにこのオプションを表示します。

リセット この関数の内部レジスタを0にリセットするためのオプションが含まれます。
  • 最初の呼び出し―実行中のFPGA VIの最初の呼び出しでこの関数がリセットされるように指定します。このオプションは、 コンパイルまたはロード オプションよりも若干多くのFPGAリソースを使用します。
  • コンパイルまたはロード―FPGA VIのコンパイル時、またはFPGAへのロード時にこの関数をリセットするように指定します。この関数は リセット メソッドを呼び出した場合はリセットします。このオプションは、最初の呼び出しオプションよりも少ないFPGAリソースを使用します。

    このオプションを使用して、FPGA VIの実行間でsの累積値を維持します。

構成フィードバック この関数の実行方法に関する情報を示します。この情報は、ユーザが指定する構成オプションに基づいています。

入力/出力

  • cunkn.png x

    sの値に加算またはこの値から減算するデータを指定します。

    xが固定サイズブール配列の場合、最初の配列要素は最下位ビット (LSB) を、最後の要素は最上位ビット (MSB) を表します。

    x の値は1つのチャンネルにのみ適用されます。詳細を参照してください。 アキュムレータ 複数チャンネルアプリケーションでのこの関数の使用例については、詳細セクションを参照してください。

  • cbool.png 減算? (F)

    この関数が減算または加算のどちらを実行するかを指定します。減算?がTRUEである場合、この関数はsxを計算します。減算?がFALSEである場合、この関数はs + xを計算します。この端子を使用して、この関数の操作をプログラム的に変更します。デフォルト値はFALSEです。

  • cbool.png ロード (F)

    新たに0から累算を開始するかどうかを指定します。デフォルト値はFALSEで、sの以前の値に対してxで足し算あるいは引き算します。ロードがTRUEである場合、この関数はsの以前の値を無視し、xの値をロードして新たに累算を開始します。

    ロードをTRUEに設定して新たに累算を開始するには、この端子を使用します。次に、sの累算を続行する場合は、ロードをFALSEに設定します。累算を0から再開するには、ロードをTRUEに再設定します。

    複数チャンネルアプリケーションでは、このパラメータは、ロードの値を変更するクロックサイクルで入力端子xに送信されるデータのチャンネルに影響を与えます。たとえば、8回のクロックサイクルに渡り2つのチャンネルを累算する場合、3回目のクロックサイクル中 (チャンネル1の2番目の値を受け取り時) にチャンネル1での累算を再開することができます。この変更はチャンネル2の累算に影響を与えません。

  • cbool.png 有効 (T)

    この関数がx入力端子の値で演算するかどうかを指定します。デフォルト値はTRUEで、この関数がxの現在の値を読み取り、その値を累算します。有効がFALSEである場合、この関数はxを無視して何もしません。適切なx値のみで演算するには、この端子を使用します。たとえば、aの 出力有効 出力端子に配線できます。 高スループット数学 関数をこの入力端子に接続します。この場合、アキュムレータは、高スループット数学関数が適切な結果値を出力する時のみに実行されます。

    複数チャンネルアプリケーションで、このパラメータは、有効の値を変更するクロックサイクルで入力端子xに送信されるデータのチャンネルに影響を与えます。たとえば、8回のクロックサイクルに渡り2つのチャンネルを累算する場合、xは1、3、5、および7回目のクロックサイクル中にチャンネル1からデータを受信します。3回目のクロックサイクル中に有効をFALSEに設定し、5回目のクロックサイクル中にこの値をTRUEに戻せば、チャンネル1の2番目の値だけスキップすることができます。この変更は、チャンネル2に影響を及ぼしません。

  • cbool.png キャリーイン/反転ボローイン (F)

    この関数が追加の最下位ビット (LSB) を含むかどうかを指定します。たとえば、このLSBは、先行の「アキュムレータ」関数のキャリーアウト/反転ボローアウト端子のビットパターンから来ている可能性があります。キャリーイン/反転ボローインのデフォルト値はFALSEで、この関数は減算?がTRUEの場合にsx – 1(LSB)を、減算?がFALSEの場合にs + xを計算することを意味します。キャリーイン/反転ボローインがTRUEである時、この関数は、減算?がTRUEの場合にsxを、減算?がFALSEの場合にs + x + 1(LSB)を計算します。

  • ibool.png キャリーアウト/反転ボローアウト

    sのデータタイプが符号なしの加算の結果値を表すことができない場合、TRUEを返します。sのデータタイプが符号なしの減算の結果値を表すことができない場合、この端子はFALSEを返します。この場合、この関数は sの値をラップします。LabVIEWは、エンコーディングが符号なしである場合のみにこの端子を表示します。

    この関数をカスケードする場合、この端子を使用して、後続の関数が値を持ち越す (キャリー) か、または借りる (ボロー) かどうかを指定することができます。後続の関数がこの値を使用することを指定するには、キャリーアウト/反転ボローアウト出力端子を後続の関数のキャリーイン/反転ボローイン入力端子に配線します。

  • オーバーフロー

    エンコーディングが符号付きで、sの理論上の演算値がsのデータタイプの有効範囲を超える場合、TRUEを返します。この場合、この関数は sの値をラップします。

    メモ 関数をカスケードする場合は、中間演算で符号なし関数を使用する必要があります。次に、最後の関数のエンコーディングを、カスケードされた全体の操作で必要なエンコーディングに設定します。
  • iunkn.png s

    この関数が計算する結果値を返します。この結果値はxの値だけでなく、他のブール入力端子の値によっても異なります。たとえば、sが累算されるのは、ロードがFALSEで、有効がTRUEである時のみです。

    sの値は1つのチャンネルのみに適用されます。複数チャンネルアプリケーションで、sは各チャンネルごとに累算されます。を参照してください。 アキュムレータ 複数チャンネルアプリケーションでのこの関数の使用例については、詳細セクションを参照してください。

    この関数は、以下のいずれかの状況で、オーバーフロー ラップ モードを s に適用します。
    • オーバーフローがTRUEを返す
    • 減算?がTRUEで、キャリーアウト/反転ボローアウトがFALSEを返す
    • 減算?がFALSEで、キャリーアウト/反転ボローアウトがTRUEを返す
  • 複数チャンネル操作

    この関数では常に、sの値を計算するのに1サイクルが必要です。この関数は各チャンネル用にsの別々の内部値を維持します。この動作には、複数チャンネルアプリケーションにとって重要な意味があります。たとえば、2チャンネルデータ収集操作から以下の6つのデータサンプルについて考えてみます。

    データサンプル番号 チャンネル1 チャンネル2
    1 6 8
    2 44 5
    3 2 3

    このデータをインタリーブするために、次の値を持つ1次元配列を作成します。[6 8 44 5 2 3]次に、以下の図が示すように、各クロックサイクルで1つの要素を「アキュムレータ」関数のx入力に配線します。

    上記の図で、「アキュムレータ」関数は7クロックサイクル実行されます。「アキュムレータ」関数は、1、3、5クロックサイクル中にチャンネル1のx値を取り込みます。1サイクルのレイテンシにより、関数は2、4、6クロックサイクル中に累算されたチャンネル1のs値を返します。

    チャンネル2の場合、関数は2、4、6クロックサイクル中にx値を取り込みます。関数は3、5、7クロックサイクルで累算されたチャンネル2のs値を返します。この動作は、関数がチャンネル1のx値を取り込む各サイクルで、関数がチャンネル2のs値を返すことを意味します。

    メモ 関数が値を返すクロックサイクル中に sの 値を読み取る必要があります。以下の例では、6回目のクロックサイクル中にチャンネル1からsの最終値を読み取る必要があります。7回目のクロックサイクル中に、この関数は、sのこの最終値をチャンネル2の最終値で上書きします。

    関数がs + xを計算する場合、以下の表はこのVIの操作の詳細を示します。

    クロックサイクル 入力x xの説明 出力s sの説明
    1 6 チャンネル1、データサンプル番号1 関数を実行するのに1クロックサイクルが必要なため、関数は最初のクロックサイクル中に結果を返しません。
    2 8 チャンネル2、データサンプル番号1 6 (チャンネル1の累算) このクロックサイクルではチャンネル2から入力データを取得しますが、関数は前回のクロックサイクル中に受信したデータを返します。このデータは、sが0で、xが6であった時のチャンネル1からのデータであるため、この関数はsに6を返します。
    3 44 チャンネル1、データサンプル番号2 8 (チャンネル2の累算) このクロックサイクルはチャンネル1から入力データを取得しますが、関数は前回のクロックサイクル中に受信したデータを返します。このデータはチャンネル2からのもので、s が0、x が8の場合、この関数は sに8を返します。
    4 5 チャンネル2、データサンプル番号2 50 (チャンネル1の累算) s = クロックサイクル2からの6、x = クロックサイクル3からの44
    5 2 チャンネル1、データサンプル番号3 13 (チャンネル2の累算) s= 8クロックサイクル3から、x= 5クロックサイクル4から
    6 3 チャンネル2、データサンプル番号3 52 (チャンネル1の累算) s= 50 (クロックサイクル4から)、x= 2 (クロックサイクル5から)
    7 チャンネル1からのデータなし 16 (チャンネル2の累算) s= 13 (クロックサイクル5から)、x= 3 (クロックサイクル6から)

    シミュレーションエクスポートの詳細

    FPGA VIのダウンロード、停止、実行時にこのノードを使用すると、シミュレーションの実行時間が大幅に増加する場合があります。

    サンプルプログラム

    LabVIEW FPGAモジュールに含まれている以下のサンプルファイルを参照してください。

    • labview\examples\CompactRIO\FPGA Fundamentals\FPGA Math and Analysis\High-Throughput Math\Multi-Channel Averaging\Multi-Channel Averaging.lvproj
    • labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\High-Throughput Math\Multi-Channel Averaging\Multi-Channel Averaging.lvproj
    • labview\examples\CompactRIO\FPGA Fundamentals\FPGA Math and Analysis\High-Throughput Math\Long Width Calculation\Long Width Calculation.lvproj
    • labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\High-Throughput Math\Long Width Calculation\Long Width Calculation.lvproj