ザイリンクス Inverse FFT ブロックは、逆高速フーリエ変換 (IDFT) を実行して、離散フーリエ変換 (DFT) のプロセスを元に戻します。Inverse FFT は、信号を周波数領域から時間領域にマップし直します。
シーケンス {F n} の IDFT は、次のように定義できます。
N は変換の長さ、k は周波数領域の序数、n は時間領域の序数を表します。
Inverse FFT (IFFT) は対応する正 FFT の位相係数を共役して計算されます。
Inverse FFT ブロックは、単純な逆フーリエ変換をインプリメントするのに理想的です。Inverse FFT のインプリメンテーションで AXI4-Stream 準拠のインターフェイス、Radix-4 Burst I/O、Radix-2 Lite Burst I/O などのより複雑な変換機能が使用される場合は、デザインに Inverse FFT ブロックではなく ザイリンクス Fast Fourier Transform 9.1 ブロックを使用してください。
Vivado® デザイン フローでは、コードの生成で Inverse FFT ブロックに LogiCORE™ IP Fast Fourier Transform v9.1 が推論されます。この LogicCore IP の詳細は、『Fast Fourier Transform v9.1 LogiCORE IP 製品ガイド』 (PG109) を参照してください。
ブロック パラメーター
Simulink® モデルでブロックのアイコンをダブルクリックすると、[Block Parameters] ダイアログ ボックスが開きます。
ザイリンクス Inverse FFT ブロック特定のパラメーターは、次のとおりです。
- [Transform Length]
- ポイント サイズを 8 ~ 65536 の値に設定します。
- [Scale Result by FFT length]
- [Transform Length] の設定値で決定されたスケーリング スケジュールを使用して、IFFT ステージ間のデータをスケーリングします。オフの場合、データはスケーリングされず、すべての整数ビット増分が出力に送信されます。
- [Natural Order]
- Inverse FFT ブロックの出力を自然な順序に並べます。オフの場合、Inverse FFT ブロックの出力はビット/桁の逆順に並べられます。
- [Optimize for]
- 生成されたハードウェアで、ブロックをスピード ([Performance]) で最適化するのか、エリア ([Resources]) で最適化するかを指定します。注記: Resources を選択し、入力サンプル周期がシステム サンプル周期よりも 8 倍遅い場合は、Radix-2 Burst I/O アーキテクチャがインプリメントされます。そうでない場合は、Pipeline Streaming I/O アーキテクチャが使用されます。
- [Optional Port]
-
- [Provide start frame port]
- ブロックに
start_frame_in
およびstart_frame_out
ポートを追加します。これらのポートの信号は、Inverse FFT ブロックの入力および出力でのフレームの同期化に使用できます。この 2 つのポートの操作の詳細は、開始フレーム ポートを同期フレームに追加 を参照してください。
コンテキスト ベースのパイプライン処理と基数のインプリメンテーション
Inverse FFT ブロックでは、Pipelined Streaming I/O および Radix-2 Burst I/O アーキテクチャがサポートされています。[Block Parameters] ダイアログ ボックスで Optimize for: Resources を選択していて、入力のサンプル レートがシステム レートよりも 8 倍遅い場合、Radix-4 Burst I/O アーキテクチャがインプリメントされます。それ以外の場合は、デフォルトで Pipeline Streaming I/O アーキテクチャがインプリメントされます。
入力データ型のサポート
スケーリングされないブロック設定では、Inverse FFT ブロックで、Fix_16_0 や Fix_30_10 など、2 進小数点の位置を変更可能なさまざまなビット幅の入力を使用できます。スケーリングされる設定では、Fast Fourier Transform 9.1 ブロックと同じフォーマットの入力がサポートされます。Fast Fourier Transform 9.1 ブロックは Fix_x_[x-1] というフォーマット (例: Fix_16_15) で正規化された形式の入力値のみを受信するので、入力は 1 符号/整数ビットの 2 の補数となります。
ブロックに表示されるレイテンシ値
レイテンシ値はユーザーが選択したパラメーターに依存し、対応するレイテンシ値は Simulink モデル内の Inverse FFT ブロック アイコンに表示されます。
固定小数点および浮動小数点の自動サポート
符号付きの固定小数点型および浮動小数点型がサポートされます。
浮動小数点型の入力には、Inverse FFT ブロックのパラメーターでスケーリングされたデータまたはされていないデータのいずれかを選択できます。Fast Fourier Transform 9.1 ブロックでは、スケーリング設定を選択した場合にのみ、浮動小数点型がサポートされます。
スケーリング設定でのオーバーフロー処理
Inverse FFT ブロックでは、オーバーフローを回避するため、慎重なスケジュールが使用されます。このスケジュールでは、オーバーフローが発生しないように、対応する FFT ステージのスケーリング値が設定されます。
開始フレーム ポートを同期フレームに追加
Inverse FFT ブロックの [Block Parameter] ダイアログボックスで Provide start frame
port を選択すると、Inverse FFT ブロックの入力と出力に start_frame_in
および start_frame_out
ポートが追加されます。これらのポートは、Inverse FFT ブロックの入力と出力のフレームの同期に使用されます。
start_frame_in
ポートに有効な入力を供給する必要があります。start_frame_in
信号がアサートされると、各フレームの開始時にインパルスが生成され、Inverse FFT ブロックにそのフレームの処理を開始するよう通知されます。フレーム サイズは、[Block Parameters] ダイアログ ボックスで入力した [Transform Length] になります。
start_frame_out
ポートは、出力フレームをいつ開始するかのタイミング情報を提供します。出力側の各フレーム開始時のインパルスは、ブロック動作を追跡するのに役立ちます。
Inverse FFT ブロックにはフレーム アライメント要件があり、これらのポートはその要件に従ってブロックが動作するようにするため使用されます。
次の図に、出力が Inverse FFT ブロックで処理されるとすぐに、start_frame_out
信号が High (1) になるところを示します。
Provide start frame port オプションと、このオプションをオンにしたときに FFT ブロックに追加される開始フレーム ポートには、次が適用されます。
- Provide start frame port オプションは、Pipelined Streaming I/O アーキテクチャにのみ選択可能です。Pipelined Streaming I/O アーキテクチャのインプリメンテーション条件の詳細は、コンテキスト ベースのパイプライン処理と基数のインプリメンテーション を参照してください。
- このオプションは、固定小数点型の入力にのみ有効です。
- 現在のところ、Provide start frame port オプションを選択すると、Verilog のネットリスト生成がサポートされます。
LogiCORE 資料
『Fast Fourier Transform LogiCORE IP 製品ガイド』 (PG109)