FIR のスタティック パラメーターは、入力幅と出力幅、小数ビット数、係数値、補間レートおよび間引きレートなどの変化しない値を指定します。これらのほとんどにデフォルト値がありますが、係数にはデフォルト値はありません。
hls_fir.h ヘッダー ファイルでは、スタティック パラメーターのデフォルト値を設定するのに使用可能な struct hls::ip_fir::params_t
が定義されます。
重要: 係数にはデフォルト値は定義されないので、AMDでは、FIR を直接初期化するために定義済みの構造体を使用することはお勧めしていません。スタティック パラメーターを指定するには、係数を指定する新しいユーザー定義構造体を使用する必要があります。
次の例では、新しい係数値を指定する新しいユーザーの struct
my_config
を定義しています。係数は配列 coeff_vec
として指定されています。FIR のその他すべてのパラメーターにはデフォルト値が使用されます。
struct myconfig : hls::ip_fir::params_t {
static const double coeff_vec[sg_fir_srrc_coeffs_len];
};
static hls::FIR<myconfig> fir1;
fir1.run(fir_in, fir_out);
FIR の構造体パラメーター
次の表は、パラメーター構造体 hls::ip_fir::params_t
に使用されるパラメーターについて説明し、パラメーターのデフォルト値と使用可能な値を示しています。
パラメーター | 説明 | C データ型 | デフォルト値 | 有効な値 |
---|---|---|---|---|
input_width | データ入力ポート幅 | unsigned | 16 | 制限なし |
input_fractional_bits | 入力ポートの小数ビットの数 | unsigned | 0 | input_width のサイズにより制限 |
output_width | データ出力ポート幅 | unsigned | 24 | 制限なし |
output_fractional_bits | 出力ポートの小数ビットの数 | unsigned | 0 | output_width のサイズにより制限 |
coeff_width | 係数のビット幅 | unsigned | 16 | 制限なし |
coeff_fractional_bits | 係数の小数ビットの数 | unsigned | 0 | coeff_width のサイズにより制限 |
num_coeffs | 係数の数 | bool | 21 | フル |
coeff_sets | 係数セットの数 | unsigned | 1 | 1 ~ 1024 |
input_length | 入力データのサンプル数 | unsigned | 21 | 制限なし |
output_length | 出力データのサンプル数 | unsigned | 21 | 制限なし |
num_channels | 処理されるデータのチャネル数を指定 | unsigned | 1 | 1 ~ 1024 |
total_num_coeff | 係数の総数 | unsigned | 21 | num_coeffs * coeff_sets |
coeff_vec[total_num_coeff] | 係数配列 | double array | なし | 該当なし |
filter_type | フィルターに使用されるフィルター タイプをインプリメント | unsigned | single_rate | single_rate、interpolation、decimation、hilbert_filter、interpolated |
rate_change | 整数または小数レートの変更を指定 | unsigned | integer | integer、fixed_fractional |
interp_rate | 補間レート | unsigned | 1 | 1 ~ 1024 |
decim_rate | 間引きレート | unsigned | 1 | 1 ~ 1024 |
zero_pack_factor | 補間で使用される係数 0 の数 | unsigned | 1 | 1-8 |
rate_specification | レートを周波数または周期として指定 | unsigned | period | frequency、period |
hardware_oversampling_rate | オーバーサンプリングのレートを指定 | unsigned | 1 | 制限なし |
sample_period | ハードウェアのオーバーサンプリング周期 | bool | 1 | 制限なし |
sample_frequency | ハードウェアのオーバーサンプリング周波数 | unsigned | 0.001 | 制限なし |
quantization | 使用される量子化方法 | unsigned | integer_coefficients | integer_coefficients、quantize_only、maximize_dynamic_range |
best_precision | 最適な精度をイネーブルまたはディスエーブル | unsigned | false |
false true |
coeff_structure | 使用する係数構造のタイプ | unsigned | non_symmetric | inferred、non_symmetric、symmetric、negative_symmetric、half_band、hilbert |
output_rounding_mode | 出力で使用される丸めのタイプ | unsigned | full_precision | full_precision、truncate_lsbs、non_symmetric_rounding_down、non_symmetric_rounding_up、symmetric_rounding_to_zero、symmetric_rounding_to_infinity、convergent_rounding_to_even、convergent_rounding_to_odd |
filter_arch | シストリックまたは転置型アーキテクチャを選択 | unsigned | systolic_multiply_accumulate | systolic_multiply_accumulate、transpose_multiply_accumulate |
optimization_goal | 最適化目標を速度またはエリアに指定 | unsigned | area | area、speed |
inter_column_pipe_length | DSP 列間に必要なパイプライン長 | unsigned | 4 | 1-16 |
column_config | DSP モジュールの列数を指定 | unsigned | 1 | 使用される DSP マクロセルの数によって制限 |
config_method | DSP モジュール列のコンフィギュレーション方法を指定 | unsigned | single | single、by_channel |
coeff_padding | フィルターの先頭に 0 パディングを追加するかどうかを指定します。 | bool | false | false true |
重要: 整数またはブール型ではないパラメーター値を指定する際は、HLS FIR 名前空間を使用する必要があります。たとえば、
rate_change
に使用可能な値は、表で integer
および fixed_fractional
と示されており、C プログラムでは rate_change = hls::ip_fir::integer
および rate_change =
hls::ip_fir::fixed_fractional
を使用する必要があります。