FFT Express VI

1つ上のパレット: FPGA数学&解析VIおよび関数

インストールパッケージ: FPGAモジュール

高速フーリエ変換 (FFT) を計算します。 シングルチャンネル、1サンプル入力形式は、FFTをポイントごとに計算します。 シングルチャンネル、複数サンプル入力形式を使用すると、複数のサンプル/サイクルを使用して、データストリームに対するFFT解析を実行できます。 「スケールされた窓」Express VIを使用した後に、この Express VIのシングルチャンネル、1サンプル入力形式を使用して、切り捨てられた波形に関連するスペクトル漏れを最小化することができます。 また、シングルチャンネル、1サンプルを使用した場合は、「FFTをスペクトルに変換」VIを使用して、Express VIの出力を振幅スペクトルまたは累乗スペクトルに変換することができます。

詳細  サンプル

ダイアログボックスオプション
ブロックダイアグラム入力
ブロックダイアグラム出力

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

パラメータ説明
入力形式以下のオプションがあります。
  • シングルチャンネル、1サンプル—各入力が、1チャンネルからの1サンプルである場合に、このオプションを選択します。
  • シングルチャンネル、複数サンプル—各クロックサイクルの間に、1つのチャンネルから複数のサンプルを処理したい場合に、このオプションを選択します。 このオプションを選択すると、実データ入力虚データ入力実データ出力および虚データ出力は、各要素が1つのサンプルを表す配列になります。 これらの入力では、2、4、8、16の配列サイズがサポートされます。 データクロックサイクルごとに複数のサンプルを送信するハードウェアを使用している場合は、シングルチャンネル、複数サンプル入力形式を使用することで、FPGA I/Oからデータを直接処理することができます。 I/Oモジュールを使用していない場合は、このオプションを使用して、シングルチャンネル、1サンプル入力形式を使用したときと比べて高いデータスループットを達成することができます。
    メモ  シングルチャンネル、複数サンプル入力形式を選択すると、シングルチャンネル、1サンプル入力形式を使用したときと比べて大幅なFPGAリソースが使用されます。 FPGAターゲットのリソース不足でコンパイルが失敗する場合は、リソースを増やしてFPGAターゲットを使用することを検討してください。
パラメータを変換以下のオプションがあります。
  • FFTサイズ—このExpress VIで計算される変換の長さを指定します。 入力形式セクションでシングルチャンネル、1サンプルを選択した場合、有効なオプションは、8~8,192の2の累乗になります。 入力形式セクションでシングルチャンネル、複数サンプルを選択した場合、有効なオプションは、8~65,536の2の累乗になります。 デフォルトは64です。
  • 方向—順FFTまたは逆FFTのどちらを計算するかを指定します。
出力データタイプ以下のオプションがあります。
  • ソースに適応—このExpress VIが出力データタイプを決定するかどうかを指定します。 ワード長を使用して出力データタイプを決定する場合は、ソースに適応チェックボックスを無効にしてください。
  • ワード長—任意の出力ワード長を[8, 32]の範囲で指定します。 ワード長は、ソースに適応チェックボックスをオフにした場合にのみ使用できます。 入力が符号付きの場合、ワード長は入力ワード長~32の間である必要があります。 入力が符号なしの場合、ワード長は入力ワード長+1~32の間である必要があります。 実データ入力に配線されるデータによって、入力ワード長が決まります。

    ヒント  ワード長の値を減らすと、FPGAリソースを節約できますが、精度が低下します。 NIでは、所定の構成のシミュレーションを行って、得られる精度がお使いのFPGAリソースとタイミングのニーズを満たしていることを確認することをお勧めします。
  • 整数ワード長—このExpress VIが計算する出力整数ワード長を示します。
実行モード以下のオプションがあります。
  • シングルサイクルタイミングループの外側—このExpress VIをシングルサイクルタイミングループの外側で使用する場合は、このオプションを選択します。 このオプションは、入力形式セクションでシングルチャンネル、1サンプルを選択した場合にのみ使用可能です。

    シングルサイクルタイミングループの外側でこのExpress VIを使用すると、長さの2倍のレイテンシが生じます。つまり、Express VIが有効出力を返す前に、Express VIに対する呼び出しに、2倍の長さがかかることになります。 最初のレイテンシの後、このExpress VIは、LabVIEWがこのExpress VIを呼び出すたびに有効な出力を返します。
  • シングルサイクルタイミングループの内側—このExpress VIをシングルサイクルタイミングループの内側で使用する場合は、このオプションを選択します。 シングルサイクルタイミングループの内側を選択すると、スループットオプションが有効になります。 このExpress VIをシングルサイクルタイミングループの内側で実行する場合、ハンドシェイク信号を使用してデータのタイミンングスケジュールを作成できます。
  • クロックレート—このExpress VIが内部で使用するパイプラインステージのレベルを指定します。 ステージ数を増やすと、このExpress VIがシングルサイクルタイミングループの内側シングルサイクルタイミングループの外側の両方でコンパイル可能なクロックレートが向上します。 このオプションによってクロックレートが明示的に設定されることはありません。
    メモ クロックレートの値を調整すると、FPGAリソースの使用量とこのExpress VIのレイテンシが増えます。 レイテンシの増加は、このExpress VIが有効な結果を返すために必要な時間が長くなることを示します。
    入力形式セクションでシングルチャンネル、複数サンプルを選択した場合、クロックレートの値はHIGHになります。
  • スループット—連続した入力データの最小サイクル数を指定します。 シングルチャンネル、1サンプルシングルサイクルタイミングループの内側を選択した場合のみ、このオプションを使用できます。 シングルチャンネル、1サンプルを選択してからシングルサイクルタイミングループの外側を選択すると、スループットが1呼び出し/入力に設定されます。これは、Express VIが呼び出されるたびにデータの受信が可能になるということです。 シングルチャンネル、複数サンプルを選択した場合、LabVIEWによって設定されるスループットは1サイクル / 入力になります。これは、Express VIが新しいデータを各サイクルごとに受け入れることができるということです。
    ヒント  スループットを増やすと、FPGAリソースの消費量が大幅に増えます。 より高いスループットが必要な場合は1サイクル/入力のみを選択してください。
  • レイテンシ—入力フレームの最初のポイントと有効な出力フレームの最初のポイントの間のサイクル数を表示します。
実装目標このExpress VIを使用してFFT結果の確度を最適化するか、FPGAターゲットのリソース使用を最適化するかを指定します。 このオプションは、入力形式セクションでシングルチャンネル、複数サンプルを選択し、出力データタイプセクションでソースに適応を選択した場合にのみ使用可能です。 ソースに適応をオフにした場合は、確度のみが選択可能にあり、構成する出力ワード長によって、確度とFPGAリソース使用量が決定されます。 以下のオプションがあります。
  • 確度—FPGAリソースの使用量が増えても、出力データの最終ビットの確度を高めたい場合は、このオプションを選択します。 デフォルトは確度です。
  • リソース使用量—結果の確度が落ちても、FPGAリソースの使用量を減らしたい場合に、このオプションを選択します。
    メモ NIは、サイクルあたりの入力に16サンプルが含まれ、FFTの長さが16384、32768、または65536の場合に、リソース使用量を選択することをお勧めします。 サイクルごとの入力に16サンプルが含まれており、FFTの長さが16384、32768、65536の場合に確度を選択すると、FPGAリソース要件が大きくなります。
入力/出力指標パターン入力データと出力データのFFTフレームの指標間隔を指定します。 入力/出力指標パターンの下の画像は、選択した構成を表します。 以下のオプションがあります。
  • 連続入力指標/連続出力指標—FFTフレームの指標を入力データと出力データの両方で連続させたいときに、このオプションを選択します。 このオプションは、入力形式セクションでシングルチャンネル、1サンプルを選択した場合にのみ使用可能です。
  • 連続入力指標/M間隔出力指標—FFTフレームの指標を入力データで連続させ、FFTフレームの指標の出力データにMの間隔 (M=FFTサイズ/入力ごとのサンプル数) を持たせる場合に、このオプションを選択します。 このオプションは、入力形式セクションでシングルチャンネル、複数サンプルを選択した場合にのみ使用可能です。
    メモ  FFT Express VIのデータソースが、FFT結果で逆FFTを実行した場合などのように、別のFFT Express VIを起源とする場合は、2番目のFFT Express VIの入力パターンが、最初のFFT Express VIの出力パターンと同じであることを確認してください。 そうしないと、FFTの結果が不正確になってしまいます。
  • M間隔入力指標/連続出力指標—FFTフレームの指標の入力データにMの間隔 (M=FFTサイズ/入力ごとのサンプル数) を持たせ、さらにFFTフレームの指標を出力データで連続させたい場合に、このオプションを選択します。 このオプションは、入力形式セクションでシングルチャンネル、複数サンプルを選択した場合にのみ使用可能です。
    メモ  FFT Express VIのデータソースが、FFT結果で逆FFTを実行した場合などのように、別のFFT Express VIを起源とする場合は、2番目のFFT Express VIの入力パターンが、最初のFFT Express VIの出力パターンと同じであることを確認してください。 そうしないと、FFTの結果が不正確になってしまいます。
構成フィードバックこのExpress VIの実行方法に関する情報、およびその他の役立つ情報 (例: 警告、エラー) を表示します。

ブロックダイアグラム入力

パラメータ説明
リセットサイクルですべての内部状態、または信号がTRUEになる呼び出しをクリアします。 シングルサイクルタイミングループの外側実行モードでは、リセットがTRUEの同じ呼び出しでExpress VIが再度開始されます。 シングルサイクルタイミングループの内側実行モードでは、リセットがTRUEになった後、リセットがアサート解除される最初の呼び出しでExpress VIが再度開始されます。 さらに、リセットがアサートされるサイクル間、ハンドシェイク信号が以下の動作を行います。
  • 入力有効は無視されます。
  • 出力準備完了は無視されます。
  • 出力有効はFALSEです。
  • 入力準備完了はFALSEで、リセットが長時間TRUEになるケースを処理します。 リセットがアサートされる場合、Express VIの入力準備は完了していません。
  • 実データ入力入力信号の実部を指定します。 入力データは、最大ワード長が24ビットの固定小数点数か、最大ワード長が24ビットの固定小数点の1D配列になります。
    虚データ入力入力信号の虚部を指定します。 入力データは、最大ワード長が24ビットの固定小数点数か、最大ワード長が24ビットの固定小数点の1D配列になります。 実データを読み取り専用にするには、虚データ入力を未配線にしておきます。
    入力有効次の処理データポイントを受信したかどうかを示します。 先行ノードからこのExpress VIにデータを渡すには、先行ノードの出力有効入力有効に配線します。

    ハンドシェイク端子を表示するには、構成ダイアログボックスでシングルサイクルタイミングループの内側を選択します。
    出力準備完了後続ノードがこのExpress VIから返される新しい値を受信できる状態かどうかを示します。 デフォルトはTRUEです。 後続ノードの入力準備完了を現在のノードの出力準備完了に配線するには、フィードバックノードを使用します。
    メモ あるサイクルで出力準備完了がFALSEの場合、同クロックサイクルで出力有効はFALSEを返します。
    出力準備完了を表示するには、構成ダイアログボックスでシングルサイクルタイミングループの内側を選択します。

    ブロックダイアグラム出力

    パラメータ説明
    データ指標VIが返すFFTビンを示します。 データ指標を表示するには、構成ダイアログボックスの入力形式セクションでシングルチャンネル、1サンプルを選択します。
    データ出力指標VIが返すFFTビンを示します。 データ出力指標を表示するには、構成ダイアログボックスでシングルチャンネル、複数サンプルオプションを選択します。
    実データ出力FFT結果の実部を返します。
    虚データ出力FFT結果の虚部を返します。
    出力有効このExpress VIが後続ノードで使用できる結果を計算済みの場合、TRUEを返します。 このExpress VIから後続ノードにデータを転送するには、出力有効を後続ノードの入力有効に配線します。 出力有効を表示するには、構成ダイアログボックスでシングルサイクルタイミングループの内側を選択します。
    入力準備完了このExpress VIが新しい入力データを受信できる状態になるとTRUEを返します。 入力準備完了に先行ノードの出力準備完了を配線するには、フィードバックノードを使用します。
    メモ あるサイクルで入力準備完了がFALSEを返した場合、次の1サイクルでこのExpress VIに書き込まれるデータはすべて破棄されます。 LabVIEWは、次のサイクルで入力有効がTrueである場合もこのデータを破棄します。
    入力準備完了を表示するには、構成ダイアログボックスでシングルサイクルタイミングループの内側を選択します。

    FFTの詳細

    シングルサイクルタイミングループの外のタイミング図 (シングルチャンネル、1サンプル入力形式)

    以下の図は、このExpress VIをシングルサイクルタイミングループの外側で使用した場合のタイミングを示しています。

    スループットが1サイクル/入力の場合のシングルサイクルタイミングループ内のタイミング図

    以下の図は、このExpress VIをスループットが1サイクル/入力のシングルサイクルタイミングループの内部で使用した場合のタイミングを示しています。

    スループットが1サイクル/入力ではない場合のシングルサイクルタイミングループ内のタイミング図

    以下の図は、このExpress VIをスループットが1サイクル/入力ではないシングルサイクルタイミングループの内部で使用した場合のタイミングを示しています。

    FFTの計算中にデータの損失を防ぐ

    このExpress VIは、シングルサイクルタイミングループ内でFFTの計算中に値の受け渡しを行いません。 この間、システムや他のノードからこのExpress VIにデータが送信されると、データは破棄されます。 これは、このExpress VIが複雑で不均一な方法でデータを受信すると起こります。

    データの損失を防ぐため、FIFOを作成して、Express VIが値を再度受信可能になるまでデータを維持してください。 作成するFIFOが、FFTの計算を行っている間に収集されるすべてのデータポイントを保持するのに十分な大きさにしてください。 作成する必要のあるFIFOのサイズを概算するには、このExpress VIのレイテンシを平均のシステムスループットで乗算します。

    適切な入力/出力指標パターンを選択する (シングルチャンネル、複数サンプル入力形式)

    シングルチャンネル、複数サンプル入力形式を使用するときは、適切な入力/出力指標パターンを選択する必要があります。 FFT Express VIのデータソースがFPGA I/Oノードの場合は、連続入力指標/M間隔出力指標を選択します。 FFTの結果に対して逆FFTを実行するときなどのように、データソースが別のFFT Express VIの出力になる場合は、2番目のFFT Express VIの入力パターンが、最初のFFT Express VIの出力パターンと同じであることを確認してください。 そうしないと、FFTの結果が不正確になってしまいます。

    連続入力指標/M間隔出力指標 入力/出力指標パターン (M=1024とする) を使用した、入力ごとに4サンプルを持つ4096ポイントのFFTの場合、 入力サンプルの指標は、最初の有効入力サイクルでは0、1、2、3となり、2番目のサイクルでは4、5、6、7、という具合になります。 出力サンプルの指標は、最初の有効出力サイクルでは0、1024、2048、3072となり、2番目のサイクルでは、1、1025、2049、3073という具合になります。 以下の図は、そのような連続入力指標/M間隔出力指標 入力/出力指標パターンを視覚表示したものです。

    反対に、M間隔出力指標/連続入力指標 入力/出力指標パターンを選択すると、出力は連続パターンになります。 さきほどの例と比較すると、入力と出力のパターンが逆になります。 以下の図は、そのようなM間隔出力指標/連続入力指標 入力/出力指標パターンを視覚表示したものです。

    実装目標に関する考慮事項 (シングルチャンネル、複数サンプル入力形式)

    理論的には、固定小数点入力データ上でN ポイントのFFTを実行すると、入力データと比べてワード長がlog2(N)+1ビット多い出力データが生成されます。 構成ダイアログボックスの実装目標セクションで確度を選択すると、FFT Express VIはゼロを付加することによって入力データのワード長を出力ワード長に延長するため、すべての内部複素数の積の演算でこのワード長が使用されます。 反対に、リソース使用量を使用した場合、FFT Express VIは入力から出力までワード長を段階を踏んで増やします。 このため、複素乗算器のビット幅も段階単位で増えます。

    リソース使用量を選択した場合、確度を選択した場合よりも複素乗算器で保持されるビット数が少なくなるため、出力データでlog2(N)+1ビットが増えても、確度を選択したときと比べて確度が劣ることになります。 リソース使用量を選択すると、複素乗算器と内部レジスタのビット幅が、確度を選択したときに生じるビット幅よりも少なくなります。. リソース使用量を選択すると、複素乗算器で短いワード長が使用されるため、コンパイル時のFPGAクロックレートを高くすることができる可能性があります。

    サンプル

    FFTExpress VIの使用サンプルは、以下のVIで参照できます。

    • labview\examples\CompactRIO\FPGA Fundamentals\FPGA Math and Analysis\FFT\FFT.lvproj
    • labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\FFT (1 Channel, N Samples)\FFT (1 Channel, N Samples).lvproj
    • labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\Cross-correlation Using FFT (1 Channel, N Samples)\Cross-correlation Using FFT (1 Channel, N Samples).lvproj
    • labview\examples\R Series\FPGA Fundamentals\FPGA Math and Analysis\FFT\FFT.lvproj
    

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

    役に立たなかった