FIR フィルター IP ライブラリ - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

AMD FIR ブロックは、hls_fir.h ライブラリを使用すると C++ デザイン内で呼び出すことができます。このセクションでは、FIR を C++ コードで設定する方法を説明します。

C++ コードで FIR を使用するには、次の手順に従います。

  1. コードに hls_fir.h ライブラリを含めます。
  2. 定義済み構造体 hls::ip_fir::params_t を使用してスタティック パラメーターを設定します。
  3. FIR 関数を呼び出します。
  4. ランタイム入力コンフィギュレーションを定義してパラメーターの一部を動的に変更します (オプション)。

次のコード例に、これらの各手順の実行方法を示します。各手順の詳細は、次のとおりです。

まず、ソース コードに FIR ライブラリを含めます。このヘッダー ファイルは、Vitis HLS インストール ディレクトリの include ディレクトリにあります。このファイルは、Vitis HLS を実行すると自動的に検索されます。Vitis HLS 内でコンパイルする場合は、このディレクトリへのパスを指定する必要はありません。

#include "hls_fir.h"

FIR のスタティック パラメーターを定義します。これには、入力幅、係数、フィルター レート (singledecimationhilbert) などのスタティック属性が含まれます。FIR ライブラリにはパラメーター指定構造体 hls::ip_fir::params_t が含まれ、すべてのスタティック パラメーターをデフォルト値で初期化できます。

次の例では、係数を配列 coeff_vec として定義し、定義済み構造体に基づくユーザー定義構造体 myconfig を使用して、係数値、入力幅、および量子化モードのデフォルト値を変更しています。

struct myconfig : hls::ip_fir::params_t {
    static const double coeff_vec[sg_fir_srrc_coeffs_len];
    static const unsigned num_coeffs = sg_fir_srrc_coeffs_len;
    static const unsigned input_width = INPUT_WIDTH; 
    static const unsigned quantization = hls::ip_fir::quantize_only;
};

HLS 名前空間と定義済みスタティック パラメーター (この例では myconfig) を使用して FIR 関数のインスタンスを作成し、run メソッドで関数を呼び出して関数を実行します。関数引数は、順に入力データ、出力データです。

static hls::FIR<param1> fir1;
fir1.run(fir_in, fir_out);

オプションで、ランタイム入力コンフィギュレーションを使用できます。FIR のモードには、インターリーブされたチャネルで係数がどのように使用されるか、または係数の再読み込みがいつ必要かが、この入力のデータによって決定されるものがあります。これは動的に設定できるので、変数として定義されます。この入力コンフィギュレーションが必要なモードの詳細は、 『FIR Compiler LogiCORE IP 製品ガイド』 (PG149) を参照してください。

ランタイム入力コンフィギュレーションを使用する場合、FIR 関数を入力データ、出力データ、および入力コンフィギュレーションの 3 つの引数を使用して呼び出します。

// Define the configuration type
typedef ap_uint<8> config_t;
// Define the configuration variable
config_t fir_config = 8;
// Use the configuration in the FFT
static hls::FIR<param1> fir1;
fir1.run(fir_in, fir_out, &fir_config);
ヒント: 上の例はスカラー値と配列の使用を示していますが、FIR 関数には引数に hls::stream を使用できます。詳細は、 Vitis HLS Introductory Examples を参照してください。