アキュムレータ(符号付き)

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

このノードは、ブール配列と整数および固定小数点データタイプのスカラ値のみをサポートします。

1378

入力/出力

datatype_icon

x

合計の値に加算またはその値から減算するデータです。xが固定サイズブール配列の場合、最初の配列要素は最下位ビット(LSB)を、最後の要素は最上位ビット(MSB)を表します。

複数チャンネルがあるアプリケーションでは、データをインタリーブし、クロックサイクルにつき1つの要素をxに接続します。
datatype_icon

減算?

減算または加算を実行するかどうかを指定するブールです。この入力を使用して、操作をプログラム的に変更します。

TRUE 合計 - xを計算します。
FALSE 合計 + xを計算します。

Default value: FALSE

datatype_icon

ロード

新規の累算を0から始めるかどうかを指定するブールです。

TRUE 合計の以前の値を無視し、xの値をロードして新たに累算を開始します。
FALSE 以前の実行から累算を継続します。

Default value: FALSE

指定のチャンネルから累算を再開する

マルチチャンネルアプリケーションで、この入力は、ロードが変化した場合、クロックサイクル中にxで受信したデータのチャンネルに影響します。たとえば、8回のクロックサイクルに渡り2つのチャンネルからのデータを累算する場合、xは1、3、5、および7回目のクロックサイクル中にチャンネル1からデータを受信します。チャンネル1の累算を再開するには、任意のクロックサイクル中にロードをTrueに設定します。チャンネル2からの累算は変化がないままです。

datatype_icon

有効

xの値に演算するかどうか指定するブールです。適切なx値のみで演算するには、この入力を使用します。たとえば、高スループット数学ノードの出力有効出力をこの入力に配線して、先行ノードが有効な結果を生成した場合にのみアキュムレータが確実に動作するようにできます。

TRUE xの現在値を累積します。
FALSE xを無視し、合計を変更しません。

Default value: TRUE

特定のチャンネルからの値を無視する

マルチチャンネルアプリケーションで、この入力は、有効が変化した場合、クロックサイクル中にxで受信したデータのチャンネルに影響します。たとえば、8回のクロックサイクルに渡り2つのチャンネルからのデータを累算する場合、xは1、3、5、および7回目のクロックサイクル中にチャンネル1からデータを受信します。3回目のクロックサイクル中に有効をFalseに設定し、5回目のクロックサイクル中にこの値をTrueに戻せば、チャンネル1の2番目の値だけを無視することができます。チャンネル2からの累算は変化がないままです。

datatype_icon

キャリーイン/反転ボローイン

合計の計算時にアキュムレータが追加の最下位ビット(LSB)を含むかどうかを指定するブールです。

たとえば、このLSBは、先行のアキュムレータノードのキャリーアウト/反転ボローアウト出力のビットパターンから来ている可能性があります。
TRUE

減算?もTrueの場合—sum - xを計算します。

減算?がFalseの場合—sum + x + 1(LSB)を計算します。

FALSE

減算?がTrueの場合—sum - x - 1(LSB)を計算します。

減算?もFalseの場合—sum + xを計算します。

datatype_icon

合計

このノードが計算した結果です。

この結果はxの値だけでなく、ロード有効など、ノードの他のブール入力の値によっても異なります。マルチチャンネルアプリケーションで、合計は各チャンネルごとに累算されます。

合計に対するオーバーフローの影響

オーバーフローがTrueを返す場合、LabVIEWは値が出力タイプの範囲内になるまで 合計の上位ビットを破棄します。

datatype_icon

オーバーフロー

合計の理論上の演算値がそのデータタイプの有効な範囲を超えているかどうかを示すブールです。

この出力は、符号付き数値をxおよびyに配線した場合に使用できます。
Trueこのノードは合計値を破棄します。
Falseこのノードは合計値を破棄しません。
メモ ノードをカスケードする場合、中間の操作で符号なしバージョンのノードを使用する必要があります。最後のノードのエンコーディングを、カスケードされた全体の操作で必要なエンコーディングに設定します。

オーバーフロー前にレジスタを追加

このノードがオーバーフローの前に内部レジスタを追加するかどうかを指定します。

このチェックボックスは、デフォルトでオフに設定されており、合計の値の1クロックサイクル前に、このノードがオーバーフローの結果を返すことを意味します。

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

Examples

以下の表は、2つのチャンネルからのインタリーブされたデータを累積するアプリケーションで、このノードが合計 + xを計算する例を示します。

クロックサイクル x入力 xの説明 合計出力 合計の説明
1 6 チャンネル1サンプル1 - アキュムレータを実行するのに1クロックサイクルが必要なため、アキュムレータは最初のクロックサイクル中に合計を返しません。
2 8 チャンネル2サンプル1 6(チャンネル1の累算) このxはチャンネル2からデータを受信しますが、合計は前回のクロックサイクル1中に受信したチャンネル1からの計算結果を返します。サイクル1中、合計は0で、xは6なので、このノードは6を返します。
3 44 チャンネル1サンプル2 8(チャンネル2の累算) このxはチャンネル1からデータを受信しますが、合計は前回のクロックサイクル2中に受信したチャンネル2からの計算結果を返します。サイクル2中、チャンネル2の合計は0で、xは8なので、このノードは8を返します。
4 5 チャンネル2サンプル2 50(チャンネル1の累算) 6(クロックサイクル2からの合計)+ 44 (クロックサイクル3からのx
5 2 チャンネル1サンプル3 13(チャンネル2の累算) 8(クロックサイクル3からの合計)+ 5 (クロックサイクル4からのx
6 3 チャンネル2サンプル3 52(チャンネル1の累算) 50(クロックサイクル4からの合計)+ 2 (クロックサイクル5からのx
7 - チャンネル1からのデータはこれ以上ありません。 16(チャンネル2の累算) 13(クロックサイクル5からの合計)+ 3 (クロックサイクル6からのx

累算をリセットする

新たに累算を開始するには、ロード入力を設定します。次に、合計で値の累算を続行する場合は、ロードをFalseにリセットします。

複数チャンネル操作

このノードが複数チャンネルからのデータを操作する方法は2つの要素で定義されます。

  • このノードでは常に、合計の値を計算するのに1サイクルが必要です。
  • 各チャンネルに対して、このノードは合計の別々の内部値を維持します。

2つのチャンネルからのインタリーブされたデータセットがあると、サイクル中のxがサイクル1からの場合、ノードはチャンネル2の合計値を返します。この動作の詳細な例については、このノードのサンプルタブを参照してください。

シミュレーションにおけるパフォーマンスの影響

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