Songbird is a DDS card in EEM format, capable of generating up to 4 separate tones with individual control over the waveforms. Each waveform is described by a polynomial spline, allowing precise control over amplitude and frequency modulation.
A high-speed, high-dynamic range LTC2000 DAC allows the card to output up to 2.5 gigasamples per second, integrated to the ARTIQ/Sinara ecosystem through Sinara's EEM FMC Carrier, with associated Artix-7 FPGA capable of acting as a full DRTIO node.
Songbird is fully supported for use with ARTIQ kernels. Drivers are currently available for ARTIQ-9 (now in beta) and NAC3.
Key features:
- Advanced waveform synthesis - with 4 individually controlled tones, allows for complex, arbitrarily-defined waveforms,
- Up to 2.5GS/s, 16-bit DAC - provides clean output from near-DC to the Nyquist limit,
- Dynamic amplitude control - enabling complex amplitude modulation - linear, quadratic or cubic ramps,
- Linear frequency chirps - for precisely-controlled frequency sweeps,
- Synchronous multi-channel updates - triggering waveform updates across any channels, enabling perfect synchronization.
Examples:
A simple use case would be generating a single signal with 4 tones. Each tone is set with:
# channel 0 at 10, channel 1 at 20, channel 2 at 30, channel 3 at 40 MHz
freq_mu = config.frequency_to_mu(10.0 * MHz)
channel0.set_waveform(ampl_offset=volt_to_mu(1.0),
damp=0, ddamp=0, dddamp=0,
phase_offset=0,
ftw=freq_mu,
chirp=0,
shift=0)
# repeated for other channels
This would create a waveform looking like this:

A better look with the FFT function on an oscilloscope:

Another could be a frequency swipe:
freq_mu = config.frequency_to_mu(10.0 * MHz)
chirp_mu = 10 # each cycle increases ftw by 10mu
channel0.set_waveform(ampl_offset=volt_to_mu(0.5), damp=0, ddamp=0, dddamp=0,
phase_offset=0, ftw=freq_mu, chirp=chirp_mu)
Amplitude Modulated Signal (linear amplitude ramp), at 10MHz:
freq_mu = config.frequency_to_mu(10.0 * MHz)
channel0.set_waveform(ampl_offset=volt_to_mu(0.1), damp=ramp_rate_mu,
ddamp=0, dddamp=0, phase_offset=0, ftw=freq_mu, chirp=0)