離散遅延
- 更新日2023-02-17
- 6分で読める
離散遅延
入力値を指定の値分、遅延します。 このノードは、整数、固定小数点、およびブールデータタイプのスカラおよび配列値、クラスタ、クラスタの配列をサポートします。
入力/出力

D
遅延するデータです。

n-1
Q出力に接続される内部レジスタの指標です。n-1の値の範囲は0~n-1です。ここで、nは項目タブの最大遅延の値です。

初期値
このノードが使用する内部レジスタの初期値の設定です。

有効
このノードがDへの入力を無視するかどうかを示すブールです。
| TRUE | このノードはすべての値を次の内部レジスタにシフトし、最初の内部レジスタにDの値を取り込みます。 |
| FALSE | このノードはDを無視して既存の値をシフトしません。これは、内部レジスタが前回のクロックサイクル中に持っていた値を保持することを意味します。 |
Default value: TRUE

Q
Dの遅延値です。Qは、n-1入力で指定したレジスタの値を返します。
最大遅延
このノードがDの値の出力を遅延させるクロックサイクルの最大数を指定します。その値は同時にこのノードが使用する内部レジスタの数を指定します。この値は16サイクル以上512サイクル以下の範囲でなければいけません。n-1入力を使用して、Q出力に接続されるレジスタを指定します。
Examples
最大遅延を20クロックサイクルに設定する場合も、関数は、値を保存するために20個のレジスタを作成します。Dに書き込まれる値は、連続するクロックサイクルが発生するごとに、レジスタ0からレジスタ19まで移動します。ただし、n-1を使用して特定の内部レジスタを指定する場合、Qは、最後のレジスタの値ではなく、その端子で指定されたレジスタ番号の値を返します。たとえば、17クロックサイクルが経過した場合、最初のクロックサイクル中に送信したDの値はレジスタ16に存在します。18回目のクロックサイクル中にn–1に16を書き込む場合、ノードはこの値を返します。値は、20クロックサイクルではなく、17クロックサイクル分遅延されました。離散遅延とフィードバックノードの選択
離散遅延とフィードバックノードは類似していますが、これらには大きな違いがあります。以下の表に、2つのノードのいずれかを選択する場合の推奨事項を示します。
| フィードバックノード | 離散遅延 | 推奨事項 | |
|---|---|---|---|
| 目的および機能 | 設計目的
|
入力信号を一定またはいくつかのクロックサイクルだけ遅延させる。 | プログラミング中の使用例を表すノードを使用します。 |
| 初期化オプション | 以下の状況で、内部レジスタをカスタム値に初期化します。
|
|
離散遅延は、フリップフロップの代わりにシフトレジスタルックアップテーブル(SRL)を使用して、遅延を実装します。SRLは、多数の遅延を単一のルックアップテーブル(LUT)に統合するため、フリップフロップを使用する場合と比較してFPGAのリソース消費を大幅に減少することができます。 |
| 初期値の定義方法 | ダイアグラムで値を初期値入力に配線して、初期値を定義します。 | 初期値入力を使用して、初期値を定義します。 | 初期化VIをお持ちの場合、または固定サイズの配列を遅延させる必要がある場合、離散遅延を使用します。 |
| 動的遅延のサポート | なし | あり | 動的遅延が必要な場合、離散遅延を使用します。 |
| ブロックダイアグラムでのフィードバック表記のサポート | あり | なし | ブロックダイアグラムにフィードバックを表記する必要がある場合、フィードバックノードを使用します。 |
このノードが遅延を実装する方法がパフォーマンスに与える影響
このノードは、フリップフロップの代わりにシフトレジスタルックアップテーブル(SRL)を使用して、遅延を実装します。SRLは、多数の遅延を単一のルックアップテーブル(LUT)に統合するため、フリップフロップを使用する場合と比較してFPGAのリソース消費を大幅に減少することができます。
シミュレーションにおけるパフォーマンスの影響
FPGA VIのダウンロード、停止、実行時にこのノードを使用すると、シミュレーションの実行時間が大幅に増加する場合があります。