FFT のスタティック パラメーターは、FFT の設定方法を定義し、FFT のサイズ、サイズを動的に変更可能にするか、インプリメンテーションをパイプライン処理するか radix_4_burst_io
を使用するかなどの固定パラメーターを指定します。
hls_fft.h ヘッダー ファイルでは、スタティック パラメーターのデフォルト値を設定するのに使用可能な hls::ip_fft::params_t
という構造体が定義されています。デフォルト値を使用する場合は、FFT 関数と共にパラメーター指定構造体を直接使用できます。
hls::fft<hls::ip_fft::params_t >
(xn1, xk1, &fft_status1, &fft_config1);
より一般的には、パラメーターの一部がデフォルト値以外の値に変更されます。これには、デフォルトのパラメーター指定構造体に基づく新しいユーザー定義のパラメーター指定構造体を作成し、一部のデフォルト値を変更します。
次の例では、新しいユーザー構造体 my_fft_config
を定義し、出力順序を新しい値 (natural_order
に変更) に変更しています。FFT のその他すべてのスタティック パラメーターにはデフォルト値が使用されます。
struct my_fft_config : hls::ip_fft::params_t {
static const unsigned ordering_opt = hls::ip_fft::natural_order;
};
hls::fft<my_fft_config >
(xn1, xk1, &fft_status1, &fft_config1);
次に、FFT 構造体 hls::ip_fft::params_t
に使用されるパラメーターについて説明します。パラメーターのデフォルト値および使用可能な値のリストを示します。
ヒント: FFT LogiCORE IP は、
data_format
パラメーターを使用して、fixed_point
または floating_point
の値を指定します。デフォルトは fixed_point
です。ただし、hls_fft.h ライブラリを使用すると、FFT 関数に渡される入力変数によって、パラメーターではなく data_format
が決まります。パラメーター | 説明 | C データ型 | デフォルト値 | 有効な値 |
---|---|---|---|---|
input_width | データ入力ポート幅。 | unsigned | 16 | 8 ~ 34 |
output_width | データ出力ポート幅。 | unsigned | 16 | input_width ~ (input_width + max_nfft + 1) |
status_width | 出力ステータス ポート幅。 | unsigned | 8 | FFT コンフィギュレーションによって異なる |
config_width | 入力コンフィギュレーション ポート幅。 | unsigned | 16 | FFT コンフィギュレーションによって異なる |
max_nfft | FFT データ セットのサイズを 1 << max_nfft に指定します。 | unsigned | 10 | 3 ~ 16 |
has_nfft | FFT のサイズをランタイムに設定できるようにするかどうかを指定します。 | bool | false | True、False |
channels | チャネル数。 | unsigned | 1 | 1 ~ 12 |
arch_opt | インプリメンテーション アーキテクチャ。 | unsigned | pipelined_streaming_io | automatically_select pipelined_streaming_io radix_4_burst_io radix_2_burst_io radix_2_lite_burst_io |
phase_factor_width | 内部位相係数の精度を設定します。 | unsigned | 16 | 8 ~ 34 |
ordering_opt | 出力順序モード。 | unsigned | bit_reversed_order | bit_reversed_order natural_order |
ovflo | オーバーフロー モードをイネーブルにします。 | bool | true | true false |
scaling_opt | スケーリング オプションを定義します。 | unsigned | scaled | scaled unscaled block_floating_point |
rounding_opt | 丸めモードを定義します。 | unsigned | truncation | truncation convergent_rounding |
mem_data | データ メモリにブロック RAM を使用するか分散 RAM を使用するかを指定します。 | unsigned | block_ram | block_ram distributed_ram |
mem_phase_factors | 位相係数メモリにブロック RAM を使用するか分散 RAM を使用するかを指定します。 | unsigned | block_ram | block_ram distributed_ram |
mem_reorder | 出力順序並べ替えメモリにブロック RAM を使用するか分散 RAM を使用するかを指定します。 | unsigned | block_ram | block_ram distributed_ram |
stages_block_ram | インプリメンテーションで使用されるブロック RAM の段数を定義します。 | unsigned | (max_nfft < 10) ? 0 : (max_nfft - 9) | 0 ~ 11 |
mem_hybrid | ブロック RAM がデータ、位相係数、または順序並べ替えバッファーに指定されている場合に、ブロック RAM と分散 RAM のハイブリッドを使用して特定のコンフィギュレーションでのブロック RAM 数を削減するかどうかを指定します。 | bool | false | true false |
complex_mult_type | 複素乗算器に使用する乗算器のタイプを定義します。 | unsigned | use_mults_resources | use_luts use_mults_resources use_mults_performance |
butterfly_type | FFT バタフライに使用されるインプリメンテーションを定義します。 | unsigned | use_luts | use_luts use_xtremedsp_slices |
重要: 整数またはブール型ではないパラメーター値を指定する際は、HLS FFT 名前空間を使用する必要があります。たとえば、次の表の
butterfly_type
パラメーターに使用可能な値は use_luts
および use_xtremedsp_slices
です。C プログラムでは butterfly_type =
hls::ip_fft::use_luts
および butterfly_type =
hls::ip_fft::use_xtremedsp_slices
を使用する必要があります。