アキュムレータ
- 更新日2025-01-28
- 15分で読める
xを累算するか、または減分します。この関数は、複数チャンネル操作とフィードバックスケールをサポートします。
この関数は、ブール配列と整数および 固定小数点 データタイプです。

ダイアログボックスオプション
| パラメータ | Description |
|---|---|
| 固定小数点の構成 | 入力 x および出力 s のエンコーディングとワード長を指定します。出力sの小数部分ワード長は常に、入力xの小数部分ワード長と等しくなります。
|
| アキュムレータ設定 | アキュムレータの設定が含まれます。
|
| リセット | この関数の内部レジスタを0にリセットするためのオプションが含まれます。
|
| 構成フィードバック | この関数の実行方法に関する情報を示します。この情報は、ユーザが指定する構成オプションに基づいています。 |
入力/出力
x
—
sの値に加算またはこの値から減算するデータを指定します。 xが固定サイズブール配列の場合、最初の配列要素は最下位ビット (LSB) を、最後の要素は最上位ビット (MSB) を表します。 x の値は1つのチャンネルにのみ適用されます。詳細を参照してください。 アキュムレータ 複数チャンネルアプリケーションでのこの関数の使用例については、詳細セクションを参照してください。
減算? (F)
—
この関数が減算または加算のどちらを実行するかを指定します。減算?がTRUEである場合、この関数はs – xを計算します。減算?がFALSEである場合、この関数はs + xを計算します。この端子を使用して、この関数の操作をプログラム的に変更します。デフォルト値はFALSEです。
ロード (F)
—
新たに0から累算を開始するかどうかを指定します。デフォルト値はFALSEで、sの以前の値に対してxで足し算あるいは引き算します。ロードがTRUEである場合、この関数はsの以前の値を無視し、xの値をロードして新たに累算を開始します。 ロードをTRUEに設定して新たに累算を開始するには、この端子を使用します。次に、sの累算を続行する場合は、ロードをFALSEに設定します。累算を0から再開するには、ロードをTRUEに再設定します。 複数チャンネルアプリケーションでは、このパラメータは、ロードの値を変更するクロックサイクルで入力端子xに送信されるデータのチャンネルに影響を与えます。たとえば、8回のクロックサイクルに渡り2つのチャンネルを累算する場合、3回目のクロックサイクル中 (チャンネル1の2番目の値を受け取り時) にチャンネル1での累算を再開することができます。この変更はチャンネル2の累算に影響を与えません。
有効 (T)
—
この関数がx入力端子の値で演算するかどうかを指定します。デフォルト値はTRUEで、この関数がxの現在の値を読み取り、その値を累算します。有効がFALSEである場合、この関数はxを無視して何もしません。適切なx値のみで演算するには、この端子を使用します。たとえば、aの 出力有効 出力端子に配線できます。 高スループット数学 関数をこの入力端子に接続します。この場合、アキュムレータは、高スループット数学関数が適切な結果値を出力する時のみに実行されます。 複数チャンネルアプリケーションで、このパラメータは、有効の値を変更するクロックサイクルで入力端子xに送信されるデータのチャンネルに影響を与えます。たとえば、8回のクロックサイクルに渡り2つのチャンネルを累算する場合、xは1、3、5、および7回目のクロックサイクル中にチャンネル1からデータを受信します。3回目のクロックサイクル中に有効をFALSEに設定し、5回目のクロックサイクル中にこの値をTRUEに戻せば、チャンネル1の2番目の値だけスキップすることができます。この変更は、チャンネル2に影響を及ぼしません。
キャリーイン/反転ボローイン (F)
—
この関数が追加の最下位ビット (LSB) を含むかどうかを指定します。たとえば、このLSBは、先行の「アキュムレータ」関数のキャリーアウト/反転ボローアウト端子のビットパターンから来ている可能性があります。キャリーイン/反転ボローインのデフォルト値はFALSEで、この関数は減算?がTRUEの場合にs – x – 1(LSB)を、減算?がFALSEの場合にs + xを計算することを意味します。キャリーイン/反転ボローインがTRUEである時、この関数は、減算?がTRUEの場合にs – xを、減算?がFALSEの場合にs + x + 1(LSB)を計算します。
キャリーアウト/反転ボローアウト
—
sのデータタイプが符号なしの加算の結果値を表すことができない場合、TRUEを返します。sのデータタイプが符号なしの減算の結果値を表すことができない場合、この端子はFALSEを返します。この場合、この関数は sの値をラップします。LabVIEWは、エンコーディングが符号なしである場合のみにこの端子を表示します。 この関数をカスケードする場合、この端子を使用して、後続の関数が値を持ち越す (キャリー) か、または借りる (ボロー) かどうかを指定することができます。後続の関数がこの値を使用することを指定するには、キャリーアウト/反転ボローアウト出力端子を後続の関数のキャリーイン/反転ボローイン入力端子に配線します。 エンコーディングが符号付きで、sの理論上の演算値がsのデータタイプの有効範囲を超える場合、TRUEを返します。この場合、この関数は sの値をラップします。 メモ 関数をカスケードする場合は、中間演算で符号なし関数を使用する必要があります。次に、最後の関数のエンコーディングを、カスケードされた全体の操作で必要なエンコーディングに設定します。
s
—
この関数が計算する結果値を返します。この結果値はxの値だけでなく、他のブール入力端子の値によっても異なります。たとえば、sが累算されるのは、ロードがFALSEで、有効がTRUEである時のみです。 sの値は1つのチャンネルのみに適用されます。複数チャンネルアプリケーションで、sは各チャンネルごとに累算されます。を参照してください。 アキュムレータ 複数チャンネルアプリケーションでのこの関数の使用例については、詳細セクションを参照してください。 この関数は、以下のいずれかの状況で、オーバーフロー ラップ モードを s に適用します。
|
複数チャンネル操作
この関数では常に、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 + 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
x
—
減算? (F)
—
キャリーアウト/反転ボローアウト
—
s
—