高スループット数学関数をシングルサイクルタイミングループに配置する (FPGAモジュール)

高スループット数学関数はすべてシングルサイクルタイミングループの内側に配置できます。ただし、その場合以下の点に注意してください。

  • 高スループット数学関数は通常マルチサイクルです。これは、関数が有効な結果を返すのに複数サイクル必要であるということです。マルチサイクルな高スループット数学関数をシングルサイクルタイミングループの内側に配置しても、関数は入力パラメータに対する適切な返り値をそのクロックサイクル内で返しません。関数のスループットレートおよびハンドシェイク端子の値により、どのクロックサイクルで関数が有効な値を生成するかが決定します。
  • 複数の高スループット数学関数をシングルサイクルタイミングループの内側に配置すると、組み合わせパスが長くなり、FPGA VIのコンパイル時にタイミング違反が起こる可能性があります。このため、高スループット数学関数では、さまざまな方法で組み合わせパスの長さを短縮することができます。

シングルサイクルとマルチサイクル関数

高スループット「加算」、「減算」、および「固定小数点に変換」関数はシングルサイクル関数です。これらの関数は、1FPGAクロックサイクルで実行します。その他のすべての高スループット数学関数はマルチサイクル関数です。これらの関数の実行には複数回のクロックサイクルが必要です。複数のマルチサイクル関数をシングルサイクルタイミングループに配置すると、組み合わせパスが1クロックサイクルで実行する上で長すぎます。

高スループットレートを確立する

シングルサイクルタイミングループ内のマルチサイクル高スループット数学関数には、関数の構成ダイアログボックスにあるスループット制御器で関数のスループットレートを指定します。スループットレート (サイクル/サンプル) は、関数が有効な入力データを受信するまでに経過する必要のあるFPGAクロックサイクルの最小数です。そのため、スループット制御器の値が小さい場合、関数で有効な入力データの受信準備が完了するまでに経過するクロックサイクル数がより少ないため、関数の実行がより速くなります。

メモ  シングルサイクルタイミングループのスループット値は、常に1サイクル/サンプルです。

スループット制御器の重要性を理解するためには、ハンドシェイク端子で接続される3つのマルチサイクル高スループット数学関数を使用してください。この3つの接続された関数の中で、最遅スループットレート (最大値が含まれるスループット制御器) が接続されたすべての関数で確立される最速スループットレートとなります。シングルサイクルタイミングループ内で接続される関数のすべてにこのような制約があります。

メモ  関数のスループット制御器は、関数をシングルサイクルタイミングループの内側に配置した場合のみにしか使用できません。関数をシングルサイクルタイミングループの外側に配置すると、スループット制御器は淡色表示され、>1呼び出し/サンプルの定数値が表示されます。この定数値は、VIが関数を呼び出すたびに関数で有効な入力データが受信可能になるということです。

ハンドシェイク

マルチサイクル高スループット数学関数は、シングルサイクルタイミングループの各クロックサイクルで実行しますが、毎サイクルで有効な値を返すわけではありません。これらの関数を構成して、関数アイコンに4つのハンドシェイク端子を表示できます。これらの端子を使用して以下の動作が起こるタイミングを決定します。

  • 関数が先行の関数からのデータを破棄する。
  • 関数が先行の関数からのデータを受け入れる。
  • 後続の関数が関数からのデータを破棄する。
  • 後続の関数が関数からのデータを受け入れる。
メモ  関数により、ハンドシェイク端子が表示されるかどうかの条件が異なります。たとえば、「高スループット除算」のアイコンには、シングルサイクルタイミングループの内側を選択すると端子が表示されます。これらの端子を「高スループット加算」関数で有効にするには、出力前にレジスタを追加チェックボックスをオンにする必要があります。

組み合わせパスの長さを短縮する

複数の高スループット数学関数をシングルサイクルタイミングループの内側に配置すると、組み合わせパスの長さが原因で、FPGA VIが必要なクロックレートでコンパイルできない場合があります。この場合、コンパイルステータスウィンドウでFPGA VIのコンパイル時にエラーが返されます。パイプラインステージ数を増やす入力および/または出力レジスタを関数に追加することで、エラーを防ぐことができます。

パイプラインステージ数を増やす

高スループット複素数の乗算」関数または「高スループット乗算」関数をシングルタイミングループの内側に配置し、大きなパイプラインステージ数を指定することで、組み合わせパスの長さを短縮できます。大きなパイプラインステージ数を指定する場合、関数が必要なクロックレートでコンパイルできる可能性がLabVIEWで高くなります。

入出力レジスタを追加する

関数の入力および/または出力にレジスタを追加して、組み合わせパスの長さを短縮することもできます。レジスタを追加することでコンパイルエラーを防ぐことができます。ただし、レジスタの各セットは関数のレイテンシを1クロック増加するため、有効な出力値の受信時に余分に1サイクル待機する必要があります。

メモ  「高スループット減算」関数などの一部の関数では、1セットのレジスタのみしか追加できません。

以下の図は、データがこれらの内部レジスタが追加された関数をどのように通過するかを示します。

構成ダイアログボックスのレジスタセクションを使用して、入力および/または出力レジスタを追加します。

メモ  シングルサイクルタイミングループの外側に関数を配置すると、VIのコンパイル時にレジスタが関数の出力に自動的に追加されます。


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

役に立たなかった