高スループット乗算 (関数)

1つ上のパレット: 高スループット数学関数

インストールパッケージ: FPGAモジュール

xyの積を計算します。

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

詳細  サンプル

ダイアログボックスオプション
ブロックダイアグラム入力
ブロックダイアグラム出力

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

パラメータ説明
固定小数点の構成この関数の入力端子と出力端子のエンコーディング、ワード長、整数ワード長を指定します。 指定する構成によって端子の値の範囲が決定されます。
  • xタイプx入力端子の固定小数点構成を指定します。

    この端子に固定小数点データタイプを配線すると、このセクションは淡色表示となり、ワイヤからの情報が使用されます。
    • 符号付き—この端子を符号付きに指定します。
    • 符号なし—この端子を符号なしに指定します。
    • ワード長—この端子のワード長を指定します。
    • 整数ワード長—この端子の整数ワード長を指定します。
  • yタイプy入力端子の固定小数点構成を指定します。

    この端子に固定小数点データタイプを配線すると、このセクションは淡色表示となり、ワイヤからの情報が使用されます。
    • 符号付き—この端子を符号付きに指定します。
    • 符号なし—この端子を符号なしに指定します。
    • ワード長—この端子のワード長を指定します。
    • 整数ワード長—この端子の整数ワード長を指定します。
  • x*yタイプx*y出力端子の固定小数点構成を指定します。
    • ソースに適応オーバーフローエラーと丸め込みエラーを回避するために、出力データタイプの固定小数点構成を自動調整するかどうかを指定します。 デフォルトでは、このチェックボックスはオンに設定され、以下のオプションが淡色表示になっています。
      メモ LabVIEWは、最大64ビットのワード長および最大2047ビットの整数ワード長をサポートします。 このチェックボックスをオンにすると、これらの最大値を超えるワード長を必要とする出力データタイプに対してオーバーフローエラーや丸め込みエラーが発生する可能性があります。
    • 符号付き—この端子を符号付きに指定します。
    • 符号なし—この端子を符号なしに指定します。
    • ワード長—この端子のワード長を指定します。
    • 整数ワード長—この端子の整数ワード長を指定します。
    • オーバーフローステータスを含む—出力端子にオーバーフローステータスが含まれるかどうかを示します。 LabVIEWはこのステータスを後続ノードに伝達します。 このステータスを追加するには、より多くのFPGAリソースが必要となります。 このチェックボックスは、デフォルトでオフになっています。

      このチェックボックスをオンにすると、以下のいずれかの場合においてオーバーフローステータスがTRUEとなります。
      • 入力端子のオーバーフローステータスがTRUEの場合。
      • この関数の実行中にオーバーフローが発生した場合。


      ソースに適応チェックボックスをオンにすると、入力端子にこのステータスが含まれるかどうかに応じてオーバーフローステータスを含むが設定されます。
  • オーバーフローモード—この関数によるオーバーフローの処理方法を指定します。 切り捨て (デフォルト) または飽和を選択できます。
    メモ  飽和オプションは、より多くのFPGAリソースと切り捨てオプションより長い組み合わせパスを必要とします。 このような場合、飽和を選択すると、この関数がコンパイルできる最大クロックレートが低くなる可能性があります。
  • 丸め込みモード—この関数による丸め処理の方法を指定します。 切り下げ (デフォルト)、四捨五入 - 中間値は切り上げ四捨五入-最下位ビットを特定のいずれかを選択できます。 丸め処理が発生すると、このオプションによってこの関数が必要とするリソースの量が影響をうける可能性があります。
実行モードこの関数の実行方法を指定します。
  • シングルサイクルタイミングループの外側—このExpress VIをシングルサイクルタイミングループの外で実行するよう構成します。

    このオプションを選択してこのExpress VIをシングルサイクルタイミングループの内側に配置すると、FPGA VIのコンパイル時にコード生成エラーウィンドウにエラーが表示されます。
  • シングルサイクルタイミングループの内側—このExpress VIをシングルサイクルタイミングループ内で実行するよう構成します。

    このオプションを選択してこのExpress VIをシングルサイクルタイミングループの外側に配置すると、FPGA VIのコンパイル時にコード生成エラーウィンドウにエラーが表示されます。
パイプラインオプションこの関数の内部的なパイプラインのオプションを指定します。 これらのオプションは関数の最大クロックレートに影響します。 これらのオプションと最大クロックレートの関係については、パイプラインによって関数のパフォーマンスを向上させるのトピックを参照してください。
  • パイプラインのステージ数—この関数が内部で使用するパイプラインのステージ数を指定します。 ステージ数を増加させると、この関数がコンパイルできるクロックレートが向上しますが、必要となるFPGAリソースの量も増加します。 デフォルト値は0ステージで、パイプラインの指定なしです。 最大12ステージまで設定できます。12ステージ以上追加しても関数がコンパイルできる最大クロックレートは向上しません。
  • 実装リソース—乗算器の実装方法を指定します。 このオプションを有効にするには、パイプラインのステージ数を0より大きい値に設定します。

    以下のオプションから選択できます。
    • 自動 (デフォルト)―コンパイラが自動的に組込ブロック乗算器を使用するかルックアップテーブル (LUT)によって乗算器を実装するかを決定するよう指定します。
    • ルックアップテーブル―関数がLUTを使用して乗算器を実装するよう指定します。 このオプションを選択すると、関数がコンパイルできる最大クロックレートが向上します。
レジスタ関数の入力、出力に内部レジスタを追加するかどうかを指定します。 これらのレジスタは、ブロック乗算器またはDSP48Eスライスなどの組込リソースの外側に配置されます。 このセクションはシングルサイクルタイミングループの内側を選択した場合のみ使用できます。
メモ  レジスタを追加すると組み合わせパスの長さが減少し、長い組み合わせパスが原因で起こるコンパイルエラーが回避できる場合があります。 ただし、レジスタの追加によって関数のレイテンシが増加するため、有効な結果を返すために余分なクロックサイクルが必要となることになります。
  • 入力後にレジスタを追加—この関数の入力の後に内部レジスタを追加します。 このオプションを選択すると、関数のレイテンシが1サイクル分増加します。
  • 出力前にレジスタを追加—この関数の出力の前に内部レジスタを追加します。 このオプションを選択すると、関数のレイテンシが1サイクル分増加します。
オプション端子オプションのブロックダイアグラム端子の表示設定を指定します。
  • 演算オーバーフロー—この関数のブロックダイアグラムに演算オーバーフロー出力端子を表示するかどうかを指定します。 この端子は、この関数の実行中にオーバーフローが発生してかどうかを示します。
構成フィードバックこの関数の実行方法に関する情報を示します。 この情報は、ユーザが指定する構成オプションに基づいています。

ブロックダイアグラム入力

パラメータ説明
x被乗数を指定します。
y乗数を指定します。
入力有効次の処理データポイントを受信したかどうかを示します。 先行ノードからこのノードにデータを渡すには、先行ノードの出力有効出力をこの入力に配線します。

ハンドシェイク端子を表示するには、シングルサイクルタイミングループの内側オプションを選択して、以下のいずれかの操作を実行します。
  • 入力後にレジスタを追加または出力前にレジスタを追加チェックボックスのいずれかをオンにします。
  • パイプラインのステージ数を1以上に設定します。
これらのオプションは、構成ダイアログボックスにあります。
出力準備完了後続ノードがこのノードから返される新しい値を受信できる状態かどうかを示します。 デフォルトはTRUEです。 後続ノードの入力準備完了出力を現在のノードのこの入力に配線するには、フィードバックノードを使用します。
メモ あるサイクルでこの端子がFALSEの場合、同サイクルで出力有効端子もFALSEになります。
この端子を表示するには、シングルサイクルタイミングループの内側オプションを選択して、以下のいずれかの操作を実行します。
  • 入力後にレジスタを追加または出力前にレジスタを追加チェックボックスのいずれかをオンにします。
  • パイプラインのステージ数を1以上に設定します。
これらのオプションは、構成ダイアログボックスにあります。

ブロックダイアグラム出力

パラメータ説明
x*yxyの積を返します。
演算オーバーフロー理論上の演算値が出力データタイプの有効な範囲を超える場合、TRUEを返します。 演算オーバーフローからTRUEが返された場合、関数が返す値はオーバーフローモードオプションによって決定されます。

演算オーバーフロー端子は、演算オーバーフローチェックボックスをオンにした場合にのみ表示されます。 このチェックボックスは、構成ダイアログボックスのオプション端子セクションに表示されます。
出力有効ノードが後続ノードで使用できる結果を計算済みの場合、TRUEを返します。 ノードのデータを後続ノードに送信するには、この出力を後続の入力有効入力に配線します。

この端子を表示するには、シングルサイクルタイミングループの内側オプションを選択して、以下のいずれかの操作を実行します。
  • 入力後にレジスタを追加または出力前にレジスタを追加チェックボックスのいずれかをオンにします。
  • パイプラインのステージ数を1以上に設定します。
これらのオプションは、構成ダイアログボックスにあります。
入力準備完了このノードが新しい入力データを受信できる状態になるとTRUEを返します。 この出力を先行ノードの出力準備完了入力に配線するには、フィードバックノードを使用します。
メモ あるサイクルでこの端子がFALSEを返した場合、次のサイクルで別のノードがこのノードに送信するデータはすべて破棄されます。 LabVIEWは、次のサイクルで入力有効端子がTRUEである場合もこのデータを破棄します。
この端子を表示するには、シングルサイクルタイミングループの内側オプションを選択して、以下のいずれかの操作を実行します。
  • 入力後にレジスタを追加または出力前にレジスタを追加チェックボックスのいずれかをオンにします。
  • パイプラインのステージ数を1以上に設定します。
これらのオプションは、構成ダイアログボックスにあります。

高スループット乗算の詳細

この関数は、出力有効から最初のTRUEが返される前のサイクル中にFPGAターゲットとホストコンピュータで異なる結果を返す場合があります。 出力有効から初めてTRUEが返された後は、結果は同一になります。

パイプラインによって関数のパフォーマンスを向上させる

パイプラインのステージ数を調整することで、FPGAターゲットでの関数のタイミングパフォーマンスを向上させることができます。 パイプラインが実装された乗算器は、複数のレジスタでカスケード化されたパイプラインを実装しない乗算器と同じ働きをします。 レジスタの数はパイプラインのステージ数に相当します。

一般に、パイプラインのステージ数を増やすことで、この関数の最大クロックレートを高めることができます。 ただし実際のクロックレートは、以下をはじめとするさまざまな要素によって決定されます。

  • 使用するFPGAターゲット
  • 乗算器のサイズ
  • 使用する丸め込みモードとオーバーフローモード
  • 使用する実装リソース
  • 乗算器以外のFPGA論理

以下のグラフは、パイプラインのステージ数とXilinx Virtex-II、Virtex-5、Spartan-3 FPGAの各予想最大クロックレートの関係を示しています。

メモ  これらの予想最大クロックレートは、丸め込みモード、オーバーフローモード、経路設定の影響を無視したシンセシス後の数値です。 したがって、これらの予想値は実際の最大クロックレートよりも高い可能性があります。

上の図では、各ラインは特定の実装リソースを使用する一定のサイズの乗算器を表します。 たとえば、I32*I32ブロックラインは組込ブロック乗算器を使用して2つの符号付き32ビット整数を乗算する乗算器です。 このラインでは、符号付き64ビット整数である<+/–,32,32>*<+/–,32,32> = <+/–,64,64>が得られます。 Virtex-II FPGAターゲットでパイプラインのステージを1つ使用する場合、このタイプの乗算器によって約51 MHzの最大クロックレートを得られます。 パイプラインのステージを3つ使用する場合、最大クロックレートは約76 MHzになります。

以下の図は、その他のFPGAターゲットにおける情報を示しています。



サンプル

高スループット乗算関数の使用サンプルは、以下のVIで参照できます。

  • labview\examples\CompactRIO\FPGA Fundamentals\FPGA Math and Analysis\High-Throughput Math\Vector Normalization\Vector Normalization.lvproj
  • labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\High-Throughput Math\Vector Normalization\Vector Normalization.lvproj


この記事は役に立ちましたか。

役に立たなかった