The following code example shows how the DDS/Mixer graph class can be used within a user super-graph to use an instance configured as a mixer.
#include <adf.h>
#include "dds_mixer_lut_graph.hpp"
namespace dds_lut_example {
#define DDS_DATA_TYPE cint16
#define DDS_INPUT_WINDOW_VSIZE 1024
#define MIXER_MODE 1
#define SFDR 90
#define USE_WINDOW_API 0
#define USE_PHASE_RELOAD 0
using namespace adf;
class test_dds_lut : public graph {
public:
port<input> in;
port<output> out;
static constexpr unsigned int phaseInc = 0xD6555555;
static constexpr unsigned int initialPhaseOffset = 0;
test_dds_lut() {
xf::dsp::aie::mixer::dds_mixer::dds_mixer_lut_graph<DDS_DATA_TYPE, MIXER_MODE, SFDR, USE_WINDOW_API,
DDS_INPUT_WINDOW_VSIZE>
mixer(phaseInc, initialPhaseOffset);
connect<>(in, mixer.in1[0]);
connect<>(mixer.out[0], out);
kernel* kernels = mixer.getKernels();
runtime<ratio>(*kernels) = 0.5;
};
};
};