This is the documentation for the old Vivace API. For the newer API compatible with both the Vivace and the Presto microwave platforms, see here.
The image below shows a schematic, functional representation of one output channel of Vivace during
pulsed operation. The same configuration is then repeated independently on each of the 8 output channels. This
section provides a summary of how the methods of the
Pulsed interact with the hardware.
Each output has 16 slots to store output templates. Each template can be programmed with up to 4088 arbitrary values at
the full 4 GSamples/s sampling rate, equivalent to 1022 ns. The vertical resolution is 16 bits. Templates can be
output directly, or be used as envelopes to modulate the two carrier generators. The first 8 templates can modulate the
first carrier generator, the last 8 templates can modulate the second carrier generator. The method
setup_template is used to program the templates and to choose whether they
should be used as envelopes. The method also takes car of splitting templates that are too long into shorter,
concatenated templates. In the case of long but “flat” signals, the convenience method
setup_long_drive can be used to create arbitrarily long pulsed using as little as one template.
Templates can be output all together, or at different times, with 2 ns resolution using the
Each carrier generator has 40 bits frequency and phase resolution, equivalent to 4 mHz and 6 prad, respectively.
They can each be programmed with up to 512 frequencies and phases with the method
setup_freq_lut. During the experiment, the generators can quickly step through the programmed
frequencies and phases with the methods
next_frequency. The change can be made with 2 ns resolution.
The output of all active pulses is then summed, and there is a final scale stage. The output scaler has 17 bit
resolution and can be programmed with up to 512 values (also negative) with the method
setup_scale_lut. During the experiment the scale can be changed with 2 ns resolution with
global scale can be bypassed setting the optional argument use_scale=False in calls to