Waveform data generator. More...

Public Member Functions | |
| def | plot_sequence (self) |
| Plots the pulse information for the configured DAC Channels. More... | |
| def | register_envelope (self, int envelope_id, Union[Envelope, np.ndarray] envelope) |
| Register a custom envelope for the pulse generator. More... | |
| def | register_frequency (self, frequency, frequency_id) |
| Registers the desired frequency for waveform data generation. More... | |
| def | register_pulse (self, float start_time_nanoseconds, float duration_nanoseconds, float amplitude, int frequency_id, float phase, int channel, int envelope_id=EnvelopeType.Rectangular, SignalType type=SignalType.Sine # Defaults to sine wave if not specified) |
| Register pulse information for desired DAC Channel. More... | |
| def | synthesis (self, List[DACChannel] dac_channels) |
| Generate/synthesize the waveform data. More... | |
| def | update_pulse (self, int channel, ChronosQPulse pulse, **kwargs) |
| Update a pulse object configuration. More... | |
Public Attributes | |
| dac_interval | |
| Interval between DAC sampling. More... | |
| dac_sr | |
| DAC Sampling rate. More... | |
| envelope_map | |
| Envelope types for pulse generation. More... | |
| fpga_sr | |
| FPGA sampling rate. More... | |
| sr_ratio | |
| Ratio of DAC and FPGA sampling rates. More... | |
Implements the functionality to set up and generate waveform data to be uploaded to ChronosQ. The class requires external python packages for its implementation:
| plot_sequence | ( | self | ) |
Plots the pulse information for the configured DAC Channels showing the pulse duration and their start times.
| register_envelope | ( | self, | |
| int | envelope_id, | ||
| Union[Envelope, np.ndarray] | envelope | ||
| ) |
Configures and registers a custom pulse envelope type to be used during waveform data generation.
| [in] | envelope_id | Assigned an ID to the custom envelope. |
| [in] | envelope | Envelope information in either static.Envelope or numpy's ndarray. |
| register_frequency | ( | self, | |
| frequency, | |||
| frequency_id | |||
| ) |
Registers the given frequency and assigned it an ID.
The ID will be used when generating pulses later when calling PulseGenerator.register_pulse.
| [in] | frequency | Frequency information in Hz |
| [in] | frequency_id | Assigned ID to the given frequency |
| register_pulse | ( | self, | |
| float | start_time_nanoseconds, | ||
| float | duration_nanoseconds, | ||
| float | amplitude, | ||
| int | frequency_id, | ||
| float | phase, | ||
| int | channel, | ||
| int | envelope_id = EnvelopeType.Rectangular, |
||
| SignalType | type = SignalType.Sine # Defaults to sine wave if not specified |
||
| ) |
Configures and registers the pulse information for the desired DAC channel. The information will be used later to generate the desired waveform data to be uploaded to ChronosQ RFSOC.
This function can be called multiple times to generate complex pulses for a single DAC channel.
| [in] | start_time_nanoseconds | Start time of the pulse in nanoseconds. | ||||||||
| [in] | duration_nanoseconds | Duration of the pulse in nanoseconds. | ||||||||
| [in] | amplitude | Amplitude of the pulse in the range of -1 to 1 (inclusive). The value will be remapped automatically to DAC's specifications. | ||||||||
| [in] | frequency_id | ID of the frequency to be used for this pulse. This ID shall be a valid ID previously registered via earlier calls to PulseGenerator.register_frequency. | ||||||||
| [in] | phase | Phase information (in radians) of the generated waveform. | ||||||||
| [in] | channel | DAC Channel ID associated with the registered pulse. | ||||||||
| [in] | envelope_id | Envelope type for the generated pulse. Valid envelope types are as defined in static.EnvelopeType or any additional envelope type registered via previous PulseGenerator.register_envelope calls. | ||||||||
| [in] | type | Signal type for the pulse as defined below:
|

| synthesis | ( | self, | |
| List[DACChannel] | dac_channels | ||
| ) |
Generates/synthesizes the wave form data from the frequency and pulse configuration information.
This function shall be called once all the DAC channels' pulse configurations are completed.
| [in] | dac_channels | A list of DAC channels of type DACChannel |
| update_pulse | ( | self, | |
| int | channel, | ||
| ChronosQPulse | pulse, | ||
| ** | kwargs | ||
| ) |
Updates the configuration of a previously defined pulse object.
| [in] | channel | Channel id that the pulse object is associated with. | ||||||||||||||||
| [in] | pulse | Reference to a pulse object of type ChronosQPulse to be updated. | ||||||||||||||||
| [in] | kwargs | Keyword based arguments of the pulse configuration to be modified. Valid values are:
|

| dac_interval |
The interval (in nanoseconds) between DAC sampling process.
| dac_sr |
The ChronosQ DAC sampling rate in Hz.
| envelope_map |
Dictionary containing either the supported envelope static.EnvelopeType or custom envelope type.
| fpga_sr |
ChronosQ FPGA sampling rate in Hz.
| sr_ratio |
The ratio of the DAC and FPGA sampling rates. Used during pulse configuration process.