Vector FFT - 2022.1 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2022-05-26
Version
2022.1 日本語

Vector FFT ブロックは、ベクター型入力の FFT 処理をサポートします。

説明

入力データの実数部を in_re ポートに、虚数部を in_im port ポートに供給する必要があります。

in_valid が High の場合、入力データが有効であることを示します。out_valid が High の場合、出力データが有効であることを示します。有効なインジケーターは、入力と出力のサンプルのセットごとに供給されます (例: R 個のサンプルごと)。バック プレッシャー フロー制御はないため、一度 FFT 変換が始まったら、連続する N/R 個のクロック間、毎クロック R 個のデータ サンプルをコアに入力する必要があります。N は FFT の長さです。ただし、連続変換の場合は、有効な制御入力はギャップなしで High に保持できます。

in_scale 入力ポートは、スケーリングが必要な場合に使用されます。内部オーバーフローがある場合は、out_scale が使用されます。

データ型サポート

  • in_scale ビットの数は log2(FFT length) に等しくなる必要があります。
  • in_valid および out_valid のデータはブール型です。

ブロック パラメーター

FFT の長さ (N) は変換のサイズであり、2^3 から 2^16 までの 2 のべき数である必要があります。SSR はスーパー サンプル レートの略語で、1 クロックごとに並列処理されるサンプル数を指します。N=1024、SSR=4 の典型的な例では、コアは 256 クロックごとに 1K FFT を計算し、クロックごとに入力サンプルを 4 つ処理します。

固定小数点出力データ サイズは 27 ビット以下にする必要があり、これは DSP48 の乗算器 A ポート サイズによって制限されます。

BRAM_THRESHOLD は、機能的には意味のないインプリメンテーション パラメーターで、遅延ラインをインプリメントする際に分散 RAM とブロック RAM の使用を制御します。これら 2 種類のリソース間で使用数をトレードするのに使用できます。この値が大きいほど、ブロック RAM よりも分散 RAM の方が多く使用されます。一般的によく使用される値は、258、514、1026 です。

[Scaling Ports]

スケーリング ポートは SI および SO と呼ばれます。これらのポートの幅は FFT のサイズ N と同じで、常に log2(N) になります。SI ビットは、内部オーバーフローが発生する可能性のある加算/減算ステージごとに 1 つずつあります。ビットが 0 の場合、スケーリングは実行されず、ビット増加は、内部データ サイズのビットを各ステージごとに 1 ビットずつ増加させることにより処理されます。ビットが 1 の場合は、ステージは 2 分割され、オーバーフローを回避するために内部データを増加させる必要は必要はなくなります。

通常、出力データ サイズが入力サイズより log2(N) ビット大きい場合、スケーリングは不要で、SI はすべて 0 に設定されます。入力と出力のデータ サイズが等しい場合は、各ステージでスケーリングが必要で、SI はすべて 1 に設定されます。実際には、スケーリングはデータに依存し、出力サイズの増加と 0 でない SI ビットの組み合わせが使用されます。部分的なスケーリングが使用される場合は、SI の 0 でないビットは MSB である必要があります。SI はスタティックである必要があり、コアがデータを処理している間 (VI が High のとき) は変更できません。

内部オーバーフローを回避するために重要なもう 1 つの要件は、データ入力が 1 つの MSB マージン ビットを持つようにすることです。つまり、I.RE と I.IM の 2 つの MSB は同じである必要があります。これにより、複素乗算器のオーバーフローが回避されます。前述の 2 つの規則に従えば、内部オーバーフローは設計上発生しません。

SO ポートは内部オーバーフローが発生しているかを示すインジケーターであり、通常は使用されず、サイズが log2(N) の符号なしの信号に接続されます。