入力値を指定されたループ反復数だけ遅らせて出力します。このVIはZ変換遅延ノード (Z^-n、nは固定または変数) と同様の動きをします。

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


icon

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

パラメータ 説明
一般

この関数の一般情報を入力します。

  • データタイプ ―D 入力端子のデータタイプに関する情報が含まれます。
    • ―Dのビット数を指定します。これは、この関数が作成する内部レジスタの数に影響します。
      整数または固定小数点データタイプをDに配線すると、このオプションが淡色表示になり、配線するデータタイプのワード長にその値が設定されます。ブール、クラスタ、または固定サイズ配列の場合、このオプションはLabVIEW表示になり、D はデータタイプのすべての要素の合計ワード長に設定されます。
      メモ Dのデータタイプはソースに適応されません。
  • オプション端子 ( Optional Terminal)―オプションの入力端子に関する情報が含まれます。
    • 有効化―LabVIEW有効 入力端子を表示するかどうかをLabVIEWします。このチェックボックスは、デフォルトでオフになっており、この端子の値はTRUEに設定されています。
  • 遅延設定―遅延に関連するオプションが含まれます。
    • 一定の遅延―この関数が一定の遅延を適用するように指定します。
      • 遅延―この関数が Dを遅延 させるクロックサイクル数を指定します。遅延は512サイクル以下である必要があります。デフォルト値は1サイクルです。
    • ダイナミック遅延―この関数が可変遅延を適用するように指定します。
      • 最大遅延―この関数がDを遅延させる最大クロックサイクル数を指定します。これにより、この関数が使用する内部レジスタの数を指定します。この値は16サイクル以上512サイクル以下の範囲である必要があります。n-1入力端子を使用して、出力端子Qに接続されるレジスタを指定します。
  • 結果の回路図―この関数のFPGA論理を表示します。回路図は、選択する構成オプションに基づいて変更されます。
初期値 この関数が使用する内部レジスタの初期値の設定が含まれます。
  • 初期化―内部レジスタをリセットまたは初期化するタイミングと方法を指定します。
    • 最初の呼び出しでゼロにリセット―この関数を最初に呼び出したとき、またはリセット メソッド、すべての内部レジスタは0にリセットされます。
    • コンパイルまたはロード時に初期化―この関数を含むVIをコンパイルまたはロードする際に、内部レジスタが 初期値 表で定義した値に初期化されるように指定します。リセットメソッドを使用してFPGAがリセットされた場合、この関数は何もしません。
  • 初期化VI―この関数の内部レジスタを初期化するためにLabVIEWが使用する初期化VIに関するオプションが含まれます。これらのオプションは、初期化セクションでコンパイルまたはロード時に初期化オプションを選択する場合のみに使用することができます。
    • VIパス―この関数に初期値を提供するVIへのパスを指定します。
    • テンプレートから新規VI―テンプレートVIのインスタンスを作成し、VIを開きます。初期化VIを作成するために、このテンプレートを使用することができます。このVIを編集するには、この構成ダイアログボックスを閉じる必要があります。
    • VIを開く―VI パス フィールドで指定したVIを開きます。このVIを編集するには、このダイアログボックスを閉じる必要があります。
    • VIを実行―VI パス フィールドで指定したVIを実行し、 初期値 表にVIが返す値を入力します。

      初期化VIの出力データタイプが離散遅延関数のデータタイプと異なる場合、LabVIEWは出力値を関数のデータタイプに強制変換しようとします。この強制変換に失敗すると、エラーメッセージが表示されます。

  • 初期値―この関数の初期値を16進数、10進数、またはバイナリ形式で指定します。この表は、初期化セクションでコンパイルまたはロード時に初期化オプションを選択する場合のみに使用することができます。

    クラスタまたはブール以外の固定サイズ配列をD入力端子に配線する場合、初期値の指定のためにこの表を使用することはできません。その代わり、最初の呼び出しでゼロにリセットオプションを選択するか、または初期化VIセクションを使用して、カスタム初期値を定義する必要があります。

構成フィードバック

この関数の実行方法に関する情報を示します。この情報は、ユーザが指定する構成オプションに基づいています。

入力/出力

  • cbool.png D

    遅延するデータを指定します。

    メモ Dのデータタイプはソースに適応されません。
  • n-1

    Q出力端子に接続される内部レジスタの指標を指定します。n–1の値は0とn–1の間の値です。ここで、nは構成ダイアログボックスの 最大遅延 制御器の値です。

    LabVIEWは、構成ダイアログボックスで動的遅延オプションを選択する場合のみにこの端子を表示します。

  • 有効

    この関数が入力端子Dを無視するかどうかを指定します。デフォルト値はTRUEで、この関数がすべての値を次の内部レジスタにシフトし、最初の内部レジスタにDの値を取り込むことを意味します。有効がFALSEである場合、この関数はDを無視して既存の値をシフトしません。これは、内部レジスタが前回のクロックサイクル中に持っていた値を保持することを意味します。

    適切なD値のみで演算するには、この端子を使用します。たとえば、aの出力有効出力端子に配線できます。高スループット数学 関数をこの入力端子に接続します。この場合、離散遅延関数は入力値が有効な場合にのみDの値を取り込みます。

    LabVIEWは、構成ダイアログボックスの有効チェックボックスがオンである場合のみに有効端子を表示します。この端子を表示しない場合、その値が内部でTRUEに設定されます。

  • ibool.png Q

    Dの遅延値を返します。この関数が一定遅延に設定されている場合、Qは最後の内部レジスタの値を返します。この関数がダイナミック遅延に設定されている場合、Qはn–1入力端子で指定したレジスタの値を返します。

  • この関数は、フリップフロップの代わりにシフトレジスタルックアップテーブル (SRL) を使用して、遅延を実装します。SRLは、多数の遅延を単一のルックアップテーブル (LUT) に統合するため、フリップフロップを使用する場合と比較してFPGAのリソース消費を大幅に減少することができます。

    離散遅延関数とフィードバックノードの差異

    フィードバックノード と離散遅延関数は似ていますが、いくつかの重要な違いがあります。以下の表には、これらのオブジェクトの差異に関する情報が記載されています。

    フィードバックノード 離散遅延関数 推奨事項
    目的および機能
    • 出力信号を入力に返送する。
    • 入力信号を一定のクロックサイクルだけ遅延させる。
    入力信号を一定またはいくつかのクロックサイクルだけ遅延させる。 プログラミング中の使用例を表す関数を使用します。
    初期化オプション
    • FPGA VIへの最初の呼び出しで、またはFPGA VIのリセット時に、内部レジスタをカスタム値に初期化する
    • FPGA VIのコンパイルまたはロード、またはFPGA VIのリセット時に、内部レジスタをカスタム値に初期化する
    • FPGA VIのリセットを無視し、FPGA VIのコンパイルまたはロード時に、内部レジスタをカスタム値に初期化する
    • FPGA VIへの最初の呼び出しで、またはFPGA VIのリセット時に、内部レジスタをゼロにリセットする
    • FPGA VIのリセットを無視し、FPGA VIのコンパイルまたはロード時に、内部レジスタをカスタム値に初期化する
    離散遅延は、フリップフロップの代わりに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–116を書き込む場合、関数はこの値を返します。値は、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