離散遅延
- 更新日2025-01-28
- 11分で読める
入力値を指定されたループ反復数だけ遅らせて出力します。このVIはZ変換遅延ノード (Z^-n、nは固定または変数) と同様の動きをします。
この関数は、整数、固定小数点、およびブールデータタイプのスカラおよび配列値、クラスタ、クラスタの配列をサポートします。

ダイアログボックスオプション
| パラメータ | 説明 |
|---|---|
| 一般 |
この関数の一般情報を入力します。
|
| 初期値 | この関数が使用する内部レジスタの初期値の設定が含まれます。
|
| 構成フィードバック |
この関数の実行方法に関する情報を示します。この情報は、ユーザが指定する構成オプションに基づいています。 |
入力/出力
D
—
遅延するデータを指定します。 メモ Dのデータタイプはソースに適応されません。
Q出力端子に接続される内部レジスタの指標を指定します。n–1の値は0とn–1の間の値です。ここで、nは構成ダイアログボックスの 最大遅延 制御器の値です。 LabVIEWは、構成ダイアログボックスで動的遅延オプションを選択する場合のみにこの端子を表示します。 この関数が入力端子Dを無視するかどうかを指定します。デフォルト値はTRUEで、この関数がすべての値を次の内部レジスタにシフトし、最初の内部レジスタにDの値を取り込むことを意味します。有効がFALSEである場合、この関数はDを無視して既存の値をシフトしません。これは、内部レジスタが前回のクロックサイクル中に持っていた値を保持することを意味します。 適切なD値のみで演算するには、この端子を使用します。たとえば、aの出力有効出力端子に配線できます。高スループット数学 関数をこの入力端子に接続します。この場合、離散遅延関数は入力値が有効な場合にのみDの値を取り込みます。 LabVIEWは、構成ダイアログボックスの有効チェックボックスがオンである場合のみに有効端子を表示します。この端子を表示しない場合、その値が内部でTRUEに設定されます。
Q
—
Dの遅延値を返します。この関数が一定遅延に設定されている場合、Qは最後の内部レジスタの値を返します。この関数がダイナミック遅延に設定されている場合、Qはn–1入力端子で指定したレジスタの値を返します。 |
この関数は、フリップフロップの代わりにシフトレジスタルックアップテーブル (SRL) を使用して、遅延を実装します。SRLは、多数の遅延を単一のルックアップテーブル (LUT) に統合するため、フリップフロップを使用する場合と比較してFPGAのリソース消費を大幅に減少することができます。
離散遅延関数とフィードバックノードの差異
はフィードバックノード と離散遅延関数は似ていますが、いくつかの重要な違いがあります。以下の表には、これらのオブジェクトの差異に関する情報が記載されています。
| フィードバックノード | 離散遅延関数 | 推奨事項 | |
|---|---|---|---|
| 目的および機能 |
|
入力信号を一定またはいくつかのクロックサイクルだけ遅延させる。 | プログラミング中の使用例を表す関数を使用します。 |
| 初期化オプション |
|
|
離散遅延は、フリップフロップの代わりにSRLを使用して、遅延を実装します。SRLは、多数の遅延を単一のルックアップテーブル (LUT) に統合するため、フリップフロップを使用する場合と比較してFPGAのリソース消費を大幅に減少することができます。 |
| 初期値の定義方法 | ダイアグラムで値を初期化端子に配線して、初期値を定義します。 | 初期値表またはカスタム初期化VIを使用して、初期値を定義します。 | 初期化VIをお持ちの場合、または固定サイズの配列を遅延させる必要がある場合、離散遅延関数を使用します。 |
| 動的遅延のサポート | ![]() |
![]() |
動的遅延が必要な場合、離散遅延関数を使用します。 |
| ブロックダイアグラムでのフィードバック表記のサポート | ![]() |
![]() |
ブロックダイアグラムにフィードバックを表記する必要がある場合、フィードバックノードを使用します。 |
一定遅延 vs.ダイナミック遅延
以下の例は、固定遅延と動的遅延の差異を示します。
固定遅延を20クロックサイクルに設定する場合、この関数は、D値を保存するために、0~19までの番号が付けられた20個の内部レジスタを作成します。有効端子の値がTRUEであると仮定すると、最初のクロックサイクルでDに書き込まれた値は、20回目のクロックサイクルまで保存されます。
Dに新しい値を書き込むと、関数は1つのレジスタから別のレジスタに値をシフトします。入力された元の値は、20回目のクロックサイクルで値がレジスタ19に到達するまで、レジスタ0からレジスタ1、レジスタ2と移動します。21回目のクロックサイクルで、出力端子Qは、最初のクロックサイクル中に入力された値を返します。値は20クロックサイクルの遅延後出力されました。
関数の動作は、動的遅延の場合でも同様です。最大遅延を20クロックサイクルに設定する場合も、関数は、値を保存するために20個のレジスタを作成します。Dに書き込まれる値は、連続するクロックサイクルが発生するごとに、レジスタ0からレジスタ19まで移動します。
ただし、この関数は内部レジスタの数を指定するn–1入力端子も表示します。Qは、最後のレジスタの値ではなく、この端子で指定されたレジスタ番号の値を返します。
たとえば、17クロックサイクルが経過した場合、最初のクロックサイクル中に送信したDの値はレジスタ16に存在します。18回目のクロックサイクル中にn–1に16を書き込む場合、関数はこの値を返します。値は、20クロックサイクルではなく、17クロックサイクル分遅延されました。
シミュレーションエクスポートの詳細
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
D
—
Q
—

