You can use the Xilinx Direct Digital Synthesizer (DDS) IP block within a C++ design using the hls_dds.h
library. This section explains how to configure DDS IP in your C++ code.
none
mode for Phase_Offset, but it does
not support programmable
and streaming
modes for
these parameters.To use the DDS in the C++ code:
- Include the
hls_dds.h
library in the code. - Set the default parameters using the pre-defined struct
hls::ip_dds::params_t
. - Call the DDS function.
First, include the DDS library in the source code. This header file resides in the include directory in the Vitis HLS installation area, which is automatically searched when Vitis HLS executes.
#include "hls_dds.h"
Define the static parameters of the DDS. For example, define the phase width,
clock rate, and phase and increment offsets. The DDS C library includes a
parameterization struct hls::ip_dds::params_t
,
which is used to initialize all static parameters with default values. By redefining
any of the values in this struct, you can customize the implementation.
The following example shows how to override the default values for the phase
width, clock rate, phase offset, and the number of channels using a user-defined
struct param1
, which is based on the existing
predefined struct hls::ip_dds::params_t
:
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];
};
Create an instance of the DDS function using the HLS namespace with the defined
static parameters (for example, param1
). Then, call
the function with the run method to execute the function. Following are the data and
phase function arguments shown in order:
static hls::DDS<config1> dds1;
dds1.run(data_channel, phase_channel);
To access design examples that use the DDS C library, select
.