最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

IFFT HDL Optimized

HDL コードの生成用に最適化された逆フーリエ高速変換

ライブラリ

DSP System Toolbox/変換

dspxfrm3

説明

IFFT HDL Optimized ブロックは、スループットまたは領域のいずれかを最適化するために 2 つのアーキテクチャを提供します。高スループット アプリケーションには Streaming Radix 2^2 アーキテクチャを使用します。このアーキテクチャでは、スカラーまたはベクトルの入力データをサポートします。ベクトル入力を使用して毎秒ギガサンプル (GSPS) のスループットを実現できます。最小リソースの実装には、特にサイズの大きい FFT を使用する場合には Burst Radix 2 アーキテクチャを使用します。システムは集中データおよび高レイテンシを許容できなければなりません。このアーキテクチャでは、スカラーの入力データのみをサポートします。このブロックは実数または複素数を受け入れ、ハードウェア親和型の制御信号を提供します。オプションで出力フレームの制御信号も備えています。

信号属性

この IFFT HDL Optimized ブロック アイコンには、利用可能なすべてのオプションの端子が表示されています。

端子方向説明データ型
dataIn入力実数または複素数の入力データのスカラーまたは列ベクトル。ベクトル入力は、[Streaming Radix 2^2] アーキテクチャのみでサポートされます。ベクトルのサイズは、FFT 長を超えない 1 から 64 までの 2 のべき乗でなければなりません。

  • fixdt()

  • int64/32/16/8

  • uint64/32/16/8

double/single はシミュレーションには使用できますが、HDL コード生成には使用できません。

validIn入力入力データが有効であることを示します。validIntrue の場合、ブロックは dataIn の値を取得します。boolean
reset入力オプションです。内部状態をリセットします。resettrue の場合、ブロックは現在の計算を中止し、内部状態をすべてクリアします。resetfalse の場合は新規の計算を開始し、validIn で新しいフレームが開始されます。boolean
dataOut出力周波数チャネル出力データ。出力順序は、既定の設定ではビット反転です。dataIn と同じです。スケーリングが無効な場合、出力語長はオーバーフローを回避するように増加します。[Divide butterfly outputs by two] パラメーターを参照してください。
validOut出力出力データが有効であることを示します。ブロックは dataOut の有効なサンプルごとに validOuttrue に設定します。boolean
ready出力この端子は、バースト アーキテクチャを選択すると表示されます。ブロックに新しい入力データで利用可能なメモリがあるときに通知します。boolean
startOut出力オプションです。この端子が有効な場合、ブロックは出力データのフレームの最初の有効なサイクルで startOuttrue に設定します。boolean
endOut出力オプションです。この端子が有効な場合、ブロックは出力データのフレームの最後の有効なサイクルで endOuttrue に設定します。boolean

パラメーター

メイン

FFT length

1 回の IFFT 計算に使用するデータ点の数を指定します。既定値は 1024 です。HDL コード生成に使用する場合、FFT 長は 23 ~ 216 の範囲の 2 のべき乗でなければなりません。

Architecture
  • Streaming Radix 2^2 (既定) — 低レイテンシ アーキテクチャ。ベクトル入力を使用する場合は毎秒ギガサンプル (GSPS) のスループットをサポートします。

  • Burst Radix 2 — 最小リソース アーキテクチャ。このアーキテクチャを選択する場合ベクトル入力はサポートされません。

両方のアーキテクチャの詳細については、Algorithmsを参照してください。

Complex Multiplication

複素数乗算器の HDL 実装を選択します。各乗算は、3 つの乗算器と 5 つの加算器か 4 つの乗算器と 2 つの加算器のいずれかで実装されます。高速または少量になるオプションは、合成ツールやターゲット デバイスによって異なります。このオプションは、[Architecture][Streaming Radix 2^2] に設定した場合にのみ適用されます。

Output in bit-reversed order

このチェック ボックスをオンにすると、出力要素が入力順序に対してビット反転されます。出力要素を線形順にする場合はチェック ボックスをオフにします。既定では、このチェック ボックスはオンになっています。IFFT アルゴリズムでは、入力とは逆の順序で出力を計算します。入力と同じ順序で出力を指定すると、アルゴリズムでは追加で反転演算を実行します。詳細は、Linear and Bit-Reversed Output Orderを参照してください。

Input in bit-reversed order

このチェック ボックスをオンにすると、ブロックは入力データの順序がビット反転されていると想定します。既定では、このチェック ボックスはオフになっており、入力は線形順であると想定されます。IFFT アルゴリズムでは、入力とは逆の順序で出力を計算します。入力と同じ順序で出力を指定すると、アルゴリズムでは追加で反転演算を実行します。詳細は、Linear and Bit-Reversed Output Orderを参照してください。

Divide butterfly outputs by two

このチェック ボックスを選択すると、ブロックは各バタフライ乗算の出力を 2 で除算することによって全体の 1/N のスケール係数を実装します。この調整により、IFFT の出力の振幅範囲が入力と同じに維持されます。スケーリングを無効にすると、ブロックはオーバーフローを回避するために語長を各バタフライ乗算後に 1 ビットずつ増やします。ビット増加は、両方のアーキテクチャで同じです。既定では、このチェック ボックスはオンになっています。

データ型

Rounding Method

内部固定小数点計算の既定の丸め手法[Floor] です。IFFT アルゴリズムが内部計算に固定小数点演算を使用するのは、入力のデータ型が整数または固定小数点のいずれかの型である場合です。このオプションは、入力の型が単精度または倍精度の場合は適用されません。丸めは回転因子の乗算およびスケーリング演算に適用されます。

制御端子

Enable reset input port

reset 端子を有効にするには、このチェック ボックスをオンにします。resettrue の場合、ブロックは現在の計算を中止し、内部状態をすべてクリアします。resetfalse の場合は新規の計算を開始し、validIn で新しいフレームが開始されます。既定では、チェック ボックスはオフになっています。

Enable start output port

startOut 端子を有効にするには、このチェック ボックスをオンにします。この ral> 端子はブロック アイコンに表示され、この出力信号が出力フレームの最初のサイクルでアサート (true) されます。既定では、チェック ボックスはオフになっています。

Enable end output port

endOut 端子を有効にするには、このチェック ボックスをオンにします。この l> 端子はブロック アイコンに表示され、この出力信号が出力フレームの最後のサイクルでアサート (true) されます。既定では、チェック ボックスはオフになっています。

アルゴリズム

Streaming Radix 2^2

Streaming Radix 2^2 アーキテクチャは、低レイテンシ アーキテクチャを実装します。FFT 方程式の因子分解とグループ化により、Streaming Radix 2 実装と比較してリソースの節約になります。アーキテクチャには log4(N) の段階があります。各段階には、メモリ コントローラーを備える 2 つの単一パス遅延フィードバック (SDF) のバタフライが含まれます。ベクトル入力を使用すると各段階は少ない入力サンプル上で動作するため、一部の段階は SDF を使用せず単一バタフライに簡約されます。

最初の SDF 段階は通常のバタフライです。2 番目の段階は、入力の実数部と虚数部を入れ替え、出力の虚数部を入れ替えて、–j で乗算されます。各段階は、回転因子の乗算の結果を入力語長に丸めます。回転因子と入力データのビット幅は同じです。これらは 2 つの整数ビットを使用し、剰余は小数部ビットです。

スケーリングを有効にすると、アルゴリズムは各バタフライ段階を 2 で除算します。各段階でスケーリングを行うとオーバーフローが回避され、語長が入力と同じになり、全体のスケール係数は 1/N になります。スケーリングが無効な場合、アルゴリズムはオーバーフローを回避するために語長を各段階で 1 ビットずつ増やします。次の図は各段階のバタフライと内部語長を示しますが、メモリは含まれません。

Burst Radix 2

Burst Radix 2 アーキテクチャは、1 つの複素バタフライ乗算器を使用して FFT を実装します。アルゴリズムは入力フレーム全体を格納するまで開始できません。また、計算が完了するまで次のフレームを受け取ることができません。ready 出力信号は、アルゴリズムが新しいデータの準備ができると通知します。次の図は、パイプライン レジスタを使用したバースト アーキテクチャを示します。

制御信号

validIn が高い場合、アルゴリズムは入力データのみを処理します。出力データは validOut が高い場合にのみ有効です。

オプションの reset 入力信号が高い場合、アルゴリズムは現在の計算を中止し、内部状態をすべてクリアします。reset が低い場合は、アルゴリズムは新規の計算を開始し、validIn で新しいフレームが開始されます。

タイミング ダイアグラム

次の図は、連続するスカラー入力データに対する validIn 信号と validOut 信号および Streaming Radix 2^2 アーキテクチャを示しています。FFT 長は 1024 で、ベクトル サイズは 16 です。

この図には、フレーム境界を示すオプションの startOut 信号と endOut 信号も示してあります。startOut を有効にすると、フレームの最初の validOut で 1 サイクルのパルスが出力されます。endOut を有効にすると、フレームの最後の validOut で 1 サイクルのパルスが出力されます。

連続する入力フレームを適用する場合は、出力も初期のレイテンシの後は連続になります。

validIn 信号は不連続でもかまいません。validIn 信号を伴うデータは到着と同時に処理され、フレームがいっぱいになるまで格納されます。次に、アルゴリズムは N (FFT 長) サイクルのフレームで連続する出力サンプルを返します。次の図は、不連続の入力と連続する出力を示しています。FFT 長は 512 で、ベクトル サイズは 16 です。

バースト アーキテクチャを使用すると、メモリ領域が利用可能になるまで入力データの次のフレームを提供できません。ready 出力信号は、アルゴリズムが新しい入力データを受け入れられることを通知します。

レイテンシ

レイテンシは FFT 長と入力ベクトル サイズによって変化します。モデルを更新すると、ブロック アイコンにレイテンシが表示されます。入力が連続しているものとして、最初の有効な入力から最初の有効な出力までのサイクルの数がレイテンシとして表示されます。このレイテンシをプログラムによって取得する場合は、Automatic Delay Matching for the Latency of FFT HDL Optimized Blockを参照してください。

連続する入力を使用するバースト アーキテクチャを使用するときに、設計で validIn のアサートを解除する前に ready=0 を待機する場合は、データのサイクルが 1 つ余分に入力に到着します。このデータ サンプルは、次のフレームの最初のサンプルです。アルゴリズムは現在のフレームを処理している間 1 つのサンプルを保存できます。サンプルが 1 つ先行するため、その後のフレームの観測されるレイテンシ (validIn から validOut) は、報告されるレイテンシより 1 サイクル分短くなります。ready が低い部分と validOut が高い部分の間のサイクル数は常に latency – FFTLength です。

HDL コード生成

このブロックは、HDL Coder™ を使用した HDL コードの生成をサポートします。HDL Coder は、HDL の実装および合成ロジックに影響を与える、追加の構成オプションを提供します。HDL コード生成の実装、プロパティおよび制限についての詳細は、HDL Coder ドキュメンテーションの「IFFT HDL Optimized」を参照してください。

パフォーマンス

以下のリソースとパフォーマンスのデータは、Xilinx® Virtex®-6 (XC6VLX75T-1FF484) FPGA を対象として生成された HDL からの合成結果です。以下の表に示す例の構成は次のとおりです。

  • 1024 の FFT 長 (既定)

  • 4 つの乗算器と 2 つの加算器を使用する複素数乗算

  • 有効な出力スケーリング

  • 自然な順序の入力、ビット反転した出力

  • 16 ビットの複素数入力データ

  • 最小化されたクロック イネーブル (HDL Coder のパラメーター)

合成された HDL コードのパフォーマンスは、ターゲットや合成のオプションによって変わります。たとえば、既定のビット反転された出力よりも自然な順序の出力への並べ替えの方がより多くの RAM を使用し、実数入力の方が複素数入力よりも少なく使用します。

スカラー入力の基数 2^2 の構成では、設計におけるクロック周波数は 326 MHz になります。レイテンシは 1116 サイクルです。この設計で使用されるリソースは次のとおりです。

リソース使用される数
LUT4597
FFS5353

Xilinx LogiCORE® DSP48

12
ブロック RAM (16K)6

基数 2^2 の同じ実装をベクトル化して 16 ビットの 2 つの入力サンプルを並行して処理する場合、設計におけるクロック周波数は 316 MHz になります。レイテンシは 600 サイクルです。この設計で使用されるリソースは次のとおりです。

リソース使用される数
LUT7653
FFS9322

Xilinx LogiCORE DSP48

24
ブロック RAM (16K)8

バースト基数 2 の実装では、スカラー入力データのみがサポートされます。バースト設計のクロック周波数は 309 MHz になります。レイテンシは 5811 サイクルです。この設計で使用されるリソースは次のとおりです。

リソース使用される数
LUT971
FFS1254

Xilinx LogiCORE DSP48

3
ブロック RAM (16K)6

拡張機能

R2014a で導入