hls_dds.h
ライブラリを使用し、C++ デザイン内でAMD DDS (Direct Digital Synthesizer) IP ブロックを使用できます。このセクションでは、DDS IP を C++ コードで設定する方法を説明します。
重要: DDS IP コアの C IP インプリメンテーションでは、Phase_Increment および Phase_Offset パラメーターに fixed モードがサポートされ、Phase_Offset には
none
モードもサポートされますが、programmable
および streaming
モードはサポートされません。C++ コードで DDS を使用するには、次の手順に従います。
- コードに
hls_dds.h
ライブラリを含めます。 - 定義済み構造体
hls::ip_dds::params_t
を使用してデフォルト パラメーターを設定します。 - DDS 関数を呼び出します。
まず、ソース コードに DDS ライブラリを含めます。このヘッダー ファイルは、Vitis HLS のインストール ディレクトリの include ディレクトリに含まれています。このディレクトリは、Vitis HLS が実行されると自動的に検索されます。
#include "hls_dds.h"
DDS のスタティック パラメーターを定義します。たとえば、位相幅、クロック レート、位相およびインクリメントのオフセットを定義します。DDS C ライブラリにはパラメーター指定構造体 hls::ip_dds::params_t
が含まれ、すべてのスタティック パラメーターをデフォルト値で初期化できます。この構造体の値のいずれかを再定義することで、インプリメンテーションをカスタマイズできます。
次の例では、既存の定義済み構造体 hls::ip_dds::params_t
に基づくユーザー定義の構造体 param1
を使用して、位相幅、クロック レート、位相オフセット、チャネル数のデフォルト値を変更する方法を示しています。
struct param1 : hls::ip_dds::params_t {
static const unsigned Phase_Width = PHASEWIDTH;
static const double DDS_Clock_Rate = 25.0;
static const double PINC[16];
static const double POFF[16];
};
HLS 名前空間と定義済みのスタティック パラメーターを使用して、DDS 関数のインスタンス (param1
など) を作成します。その後、run メソッドを使用して関数呼び出して実行します。次の例では、データおよび位相関数引数が順に示されています。
static hls::DDS<config1> dds1;
dds1.run(data_channel, phase_channel);