シングルサイクルタイミングループを使用してFPGA VIを最適化する
- 更新日2025-03-06
- 3分で読める
LabVIEWは、シングルサイクルタイミングループの内側のコードを自動的に最適化します。結果、Whileループの内側にある同じコードと比較すると高速でFPGAターゲットの使用領域が少なくて済みます。FPGAターゲットでWhileループを使用する場合、Whileループは有効チェーンレジスタを含むため、Whileループで各反復を実行するには複数のクロックサイクルを必要とします。Whileループで各反復にかかるクロックサイクル数は、ループ内のコードに依存します。FPGAターゲットでSCTLを使用する場合、SCTLはループの内側にあるすべての関数をシングルクロックサイクル内で実行します。FPGAターゲットでSCTLを使用すると、主にSCTLに有効チェーンレジスタが含まれないことが理由で、実行サイクルの削減およびリソースの節約が可能になります。SCTLに初期化されたシフトレジスタがある場合は、最初の反復がシフトレジスタ値を初期化する前に1クロックサイクルかかります。SCTLはHDLでの1クロック処理に似ています。
以下のブロックダイアグラムは、同じコードをWhileループとSCTLで実行した場合の相違点を示しています。
以下のリストには、前のダイアグラムについての重要な情報が記載されています。
| Whileループの内側にあるコードの実行に4クロックサイクルかかります。 (Whileループの実行を行うためさらに2クロックサイクルのオーバーヘッドがあります。) |
| 赤の垂直ラインは、Whileループの内側で各クロックサイクルが終了する位置を示します。 |
| SCTLで実行した場合、その論理に対してクロック周期が十分長ければ、同じコードは1クロックサイクル内に終了します。 |
また、以下のブロックダイアグラムに示されているように、FPGA VIで実行サイクルを減らしてコードを最適化するために、SCTLにコードを追加することもできます。
前述のダイアグラムブロックに示されているように、Whileループの内側でSCTLを使用する場合、TRUE定数を条件端子に配線し、タイミングループ内のコードがWhileループの各反復につき一度だけ実行されるようにします。