Functional description#

Pulsed output#

The image below shows a schematic, functional representation of one output channel of Vivace/Presto during pulsed operation. The same configuration is then repeated independently on each of the 8/16 output channels. This section provides a summary of how the methods of the Pulsed class interact with the hardware.

Alternative text

Each output has 16 slots to store output templates, divided in two groups of 8 templates each. Each template can be programmed with up to 1022 ns of data at get_fs('dac') sampling rate. That is 1022 complex-valued data points (IQ pairs) at 1 GS/s when using digital upconversion (dac_mode is one of DacMode.Mixedxx), or 2044 real-valued data points at 2 GS/s when not using digital upconversion (dac_mode is DacMode.Direct). 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 (group 0), the last 8 templates can modulate the second carrier generator (group 1). The method setup_template is used to program the templates into one of the groups and to choose whether they should be used as envelopes. The method also takes care 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 pulses using as little as one template. Another advantage of a LongDrive is that it can be resized with the set_total_duration method. Templates can be output all together, or at different times, with get_clk_T resolution (typically 2 ns) using the output_pulse method.

Each carrier generator has 40 bits frequency and phase resolution, equivalent to 2 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 select_frequency and next_frequency. The change can be made with get_clk_T resolution (typically 2 ns).

The output of all active pulses in each group is then summed, and there is a dedicated 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 get_clk_T resolution (typically 2 ns) with select_scale and next_scale.

The output of each group scaler is finally combined and sent to the output digital-to-analog converter (DAC) for further processing.