このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

FFT HDL Optimized ブロックを使用した FPGA 用 FFT の実装

この例では、FFT HDL Optimized ブロックを使用して、ハードウェア用に FFT を実装する方法を説明します。

FFT HDL Optimized ブロックと IFFT HDL Optimized ブロックおよび System object は、多くのアプリケーションのシミュレーションおよび HDL コード生成をサポートします。これらは異なるユース ケース用に最適化された 2 つのアーキテクチャを提供します。

  • Streaming Radix 2^2 - 高スループット アプリケーション用です。ベクトル入力を使用する場合、毎秒ギガサンプル (GSPS) を実現します。

  • Burst Radix 2 - 低領域アプリケーション用です。1 つの複素バタフライのみを使用します。

この例には 2 つのモデルが含まれており、FFT HDL Optimized ブロックのストリーミング アーキテクチャおよびバースト アーキテクチャの使用方法をそれぞれ示しています。

Streaming Radix 2^2 アーキテクチャ

最新の ADC では、最大で毎秒数ギガサンプルというサンプルレートで信号をサンプリングできます。ただし、最速の FPGA のクロック速度でもこのサンプルレートには及びません。通常、FPGA は数百 MHz で実行されます。FPGA で GSPS 処理を実行する方法の 1 つは、複数のサンプルをはるかに低いクロック レートで同時に処理することです。多くの最新の FPGA では、GHz のクロック レートでスカラー入力を受け入れて低クロック レートでサンプル ベクトルを生成する、JESD204B 標準インターフェイスがサポートされています。そのため、最新の信号処理はベクトル処理を必要とします。

Streaming Radix 2^2 アーキテクチャは高スループットのユース ケースをサポートするように設計されています。このモデル例ではサイズ 8 の入力ベクトルを使用し、Streaming Radix 2^2 アーキテクチャを使用して FFT を計算します。タイミング図、サポートされる機能および FPGA リソースの使用方法の詳細については、FFT HDL Optimized を参照してください。

modelname = 'FFTHDLOptimizedExample_Streaming';
open_system(modelname);

InitFcn コールバック ([モデル プロパティ]、[コールバック]、[InitFcn]) でモデルのパラメーターを設定します。この例では、パラメーターによって FFT のサイズと入力データの特性を制御します。

FFTLength  = 512;

入力データは、それぞれ 1*2e6 Hz でサンプリングされた 200 KHz と 250 KHz の 2 つの正弦波です。入力ベクトルのサイズは 8 サンプルです。

FrameSize    = 8;
Fs           = 1*2e6;

データを連続して受信する必要がないことを示すために、この例では 1 サイクルおきに有効な入力を適用します。

ValidPattern = [1,0];

スペクトル ビューアーを開いて、モデル例を実行します。

open_system('FFTHDLOptimizedExample_Streaming/Spectrum Viewer/Power Spectrum viewer');
sim(modelname);

Burst Radix 2 (最小リソース) アーキテクチャ

FPGA リソースが限られたアプリケーションで、特に FFT 長が大きい場合に Burst Radix 2 アーキテクチャを使用します。このアーキテクチャは 1 つの複素バタフライのみを使用して FFT を計算します。この設計では ready がアサートされているときにデータを受け入れ、FFT フレーム全体がメモリに保存されると処理を開始します。この設計では処理の間データを受け入れることができないため、ready のアサートは解除されます。タイミング図、サポートされる機能および FPGA リソースの使用方法の詳細については、FFT HDL Optimized を参照してください。

modelname = 'FFTHDLOptimizedExample_Burst';
open_system(modelname);

InitFcn コールバック ([モデル プロパティ]、[コールバック]、[InitFcn]) でモデルのパラメーターを設定します。この例では、パラメーターによって FFT のサイズと入力データの特性を制御します。

FFTLength  = 512;

入力データは、それぞれ 1*2e6 Hz でサンプリングされた 200 KHz と 250 KHz の 2 つの正弦波です。データはすべてのサイクルで有効です。

Fs           = 1*2e6;
ValidPattern = 1;

スペクトル ビューアーを開いて、モデル例を実行します。

open_system('FFTHDLOptimizedExample_Burst/Spectrum Viewer/Power Spectrum viewer');
sim(modelname);

HDL コードとテスト ベンチの生成

この例の HDL を生成するには、HDL Coder™ ライセンスが必要です。

モデルを 1 つ選択して HDL コードとテスト ベンチを生成します。

systemname = 'FFTHDLOptimizedExample_Burst/FFT HDL Optimized Burst';

または

systemname = 'FFTHDLOptimizedExample_Streaming/FFT HDL Optimized Streaming';

このコマンドを使用して HDL コードを生成します。

makehdl(systemname);

このコマンドを使用して HDL シミュレーションの結果と Simulink シミュレーションの動作を比較するテスト ベンチを生成します。

makehdltb(systemname);