The invention relates to an arbitrary waveform generator as well as to a method for operating such an arbitrary waveform generator.
Arbitrary waveform generators (AWGs) are devices adapted to generate one or more arbitrary analog electric waveforms. They are e.g. used in quantum computing applications for applying control signals to a quantum processor or in device testing for applying probe signals to a device under test.
US2015277906A1 describes an arbitrary waveform generator having a control flow architecture that forms a sequencer for controlling it. Instructions in the control flow architecture are executed sequentially. They can e.g. be used to play a specific waveform stored in the memory of a waveform source.
The problem to be solved by the present invention is to provide an AWG and a method for operating it that allows to quickly execute complex waveforms.
This problem is solved by the device and method of the independent claims.
Hence, in one aspect, the invention relates to arbitrary waveform generator comprising at least the following elements:
The sequencer is adapted to execute said “table execution instructions” (in addition to, potentially, other instructions, such as the branching and looping instructions mentioned above), with each table execution instruction specifying at least one command address. Upon execution of such a table execution instruction, the command table unit is triggered to cause the waveform source to play the waveform and apply the parameter as identified by the command(s) for the specified command address(es). The command address(es) may be provided directly as part of a table execution instruction, and/or a table execution instruction may specify to obtain the command address(es) form another source.
This design is based on the understanding that, in some cases, the sequencer instructions are advantageously not carried out directly, but rather they are used to identify commands in the command table, which are then applied to the hardware of the AWG. As explained below, this scheme can e.g. be used to compress several sequencer steps into a single one and/or to parametrize the operation of the AWG without changing the sequencer steps nor polling signals from the sequencer instructions explicitly.
In an advantageous embodiment, the “waveform source” of the AWG comprises at least the following elements:
In this case, the desired waveform in the waveform memory (i.e. the waveform to be played) can be selected by means of the waveform identifier of the commands in the command table, and then it can be processed using the parameter identifier in the commands in the command table. This reduces the number of waveforms that have to be stored in the waveform memory.
The AWG may further comprise a waveform player generating a time series of numerical values from the selected waveform. In this case, the signal processor is advantageously arranged, at least in part, between the waveform player and the DAC, but it may also, at least in part, be implemented in the waveform player itself, or it may preprocess the selected waveform before it is fed to the waveform player.
The signal processor may comprise a scaler, which is typically implemented as a numerical multiplier, for scaling the selected waveform with a scaling factor. In this case, the parameter identifier of the commands in the command table can describe the scaling factor and/or a change of the scaling factor. This allows to specify, by means of the command table, a scaling factor to be applied to the waveform.
The signal processor may also comprise a mixer for mixing the selected waveform with a carrier signal. In this case, the parameter identifier of the commands in the command table can describe the phase and/or frequency of the carrier signal. This allows to specify, by means of the command table, the phase or frequency of the carrier signal. The carrier signal may e.g. be generated by a numerical oscillator.
The signal processor may also comprise a delay unit generating a delay in the selected waveform. In this case, the parameter identifier of the commands in the command table can describe a delay time to be applied by the delay unit. This delay time may be a delay in integer multiples of the rate of samples in the waveform generated by the waveform player. It may also be a general delay, in which case the delay unit advantageously comprises a resampler for resampling the waveform at interpolated values.
The signal processor may also comprise a filter for filtering the selected waveform. In this case, the parameter identifier of the commands in the command table can describe at least one parameter of this filter.
Advantageously, the command table unit comprises a write port for modifying the commands in said command table memory. This allows the user to modify the available commands and to adapt them to a specific application.
In this case, the sequencer may be connected to the write port and adapted to interpret “table change instructions” for writing commands into the command memory,
Alternatively or in addition thereto, the AWG may comprise an input interface for external signals. The input interface may in this case be connected to the write port for writing commands into the command memory without using the sequencer. This allows the user to e.g. load the commands directly into the command memory from an external source, such as from the user’s computer.
As mentioned, the command address may be stored directly in the program memory of the sequencer as part of a table execution instruction, and/or a table execution instruction may specify to obtain the command address from another source. For the latter case, the AWG may comprise a (e.g. serial or parallel) input interface for applying a multibit data word to the arbitrary waveform generator, and the sequencer is adapted to interpret at least one of the table execution instructions as an instruction to use this data word for generating the command address. This allows to change the specified command without modifying the instructions in the sequencer by simply changing the data word.
In another advantageous embodiment, at least some of the commands comprise a condition specifier. The command table unit is adapted to check for a given condition in the AWG as specified by the condition specifier and to execute said command only if the given condition is met. This allows to conditionally execute a command without using multiple instructions in the sequencer.
As mentioned, the invention also relates to a method for operating the arbitrary waveform generator as described herein. This method comprises at least the following steps:
As mentioned above, the table execution instruction may identify such a command explicitly, e.g. by its table address, or it may state how to derive the table address from other information available to the waveform generator.
In all embodiments of the invention, it must be noted that some of the commands in the command table may e.g. contain a waveform identifier only but no parameter identifier or vice versa. Or they may contain neither but may specify other operations to be executed by the arbitrary waveform generator, such as operations for setting, changing or querying counters.
As described below, the present arbitrary waveform generator is advantageously used for sending signals to a quantum processor.
The invention will be better understood and objects other than those set forth above will become apparent when consideration is given to the following detailed description thereof. Such description makes reference to the annexed drawings, wherein:
The analog outputs 2a, 2b are generated by two digital-to-analog converters 4a, 4b. Optionally, there may be analog filters or other analog processing circuitry at the output side of the digital-to-analog converters 4a, 4b in order to filter and/or process the signals at the analog outputs 2a, 2b.
The input values for the digital-to-analog converters 4a, 4b are provided by a waveform source 6, which generates a series of numerical values to be fed to the converters.
Waveform source 6 may e.g. comprise a waveform memory 8, which stores data indicative of a plurality of different user-defined waveforms. For example, waveform memory 8 may store, for each or at least some of the waveforms, series of numbers of the values of the waveform at discrete time points.
For generating fast signals, waveform memory 8 advantageously comprises a caching mechanism including a cache manager 10, a main memory 12, and a cache memory 14, with main memory 12 having higher capacity but slower access than cache memory 14. When a given waveform is to be used, cache manager 10 is instructed to make it available in cache memory 14, if necessary, retrieving it from main memory 12.
The waveforms in waveform memory 8 can e.g. be identified by address or index and, if required, by its length.
Once a given waveform is selected and provided for playing, a waveform player 16 “plays” it, i.e. it generates values of the waveform at specific times, in particular at regular intervals. For example, waveform player 16 accesses the values in cache memory 14 (or, if timing allows, in another part of waveform memory 8), and makes them available, as a time series, at its outputs 18a, 18b.
Waveform source 6 further comprises a signal processor 20 for modifying the selected waveform. Signal processor 20 may comprise components between waveform player 16 and the digital-to-analog converter(s) 4a, 4b, but it may also comprise components arranged in the signal flow before waveform player 16 and/or components that are part of waveform player 16.
For example, signal processor 20 advantageously comprises a scaler 22 for scaling the selected waveform. Scaler 22 is advantageously arranged between waveform player 16 and digital-to-analog converter(s) 4a, 4b.
In the shown embodiment, scaler 22 comprises one or more multipliers 24a, 24b for multiplying values of the waveform with one or more scaling factors S1, S2.
In addition or alternatively thereto, signal processor 20 advantageously comprises one or more numerical oscillators 26a, 26b for generating one or more carrier signals C1, C2, which is/are fed to a mixer 28 for mixing the waveform with the carrier signal(s) C1, C2.
The carrier signal(s) is/are single frequency signals (such as a pure sine wave) with selectable frequency and/or phase and/or amplitude.
In the shown embodiment, the mixer 28 may comprise one or more multipliers 29a, 29b for multiplying values of the waveform(s) with the values of the carrier signals C1, C2.
The AWG further includes a sequencer 30 for controlling its operation.
Sequencer 30 comprises an instruction memory 32 for holding a series of instructions as well as an instruction interpreter 34 to interpret the instructions sequentially.
Sequencer 30 may cooperate with a load/store unit 36, which offers read-access and/or write-access ports to a variety of hardware signals and, optionally, storage locations within the AWG. These ports are addressable via port addresses that can be specified in the instructions stored in instruction memory 32.
It must be noted, though, that load/store unit 36 is an optional tool for providing an address-based programming model for the instructions in sequencer 30. Other means to access specific parts of the AWG by means of the instructions e.g. include providing dedicated instructions in the programming model for accessing these parts.
Sequencer 30 is typically adapted to execute various classes of instructions. These classes may e.g. include one or more of the following:
The AWG further includes a command table unit 40. Command table unit 40 comprises a command table memory 42, which holds a plurality of commands. Each command can be identified by a command address, which may e.g. correspond to the memory location where the command is stored in command table memory 42.
As will be described in more detail below, each command comprises a waveform identifier descriptive of (i.e. identifying) a waveform to be played and a parameter identifier descriptive of (i.e. it allows to derive) a parameter for modifying the waveform. The waveform identifier can be fed to waveform memory 8 for selecting one of the waveforms therein. The parameter identifier may be used to generate at least one parameter for signal processor 20.
Each table execution instruction that is executed by sequencer 30 specifies a (i.e. at least one) command address in command table memory 42, either explicitly or indirectly, as described below. When the table execution instruction is executed, command table unit 40 is triggered to play the waveform with the parameter as identified by the command at the specified command address.
This will be described in more detail in the next section.
The AWG further comprises an input interface 44 connecting one or more external signals 46 to the AWG. The external signal(s) may include analog or digital signals (with any analog signals being converted to digital signals by means of one or more analog-to-digital converter(s)). The external signals may be fed serially or in parallel to the AWG.
At least some of the external signal(s) 46 may be queried by the instructions in sequencer 30, e.g. via load/store unit 36.
Other of the external signal(s) 46 may be used in connection with command table unit 40 as described in more detail in the next section.
As mentioned, it comprises a command table memory 42 with locations 50-1 to 50-N for commands.
The number N of commands that can be stored in command table memory 42 is advantageously much larger than 1, e.g. at least 16, in particular at least 64, in particular at least 512.
In the shown embodiment, each command comprises the following entries:
The counter 47 may e.g. also be used count external signal pulses, and commands may e.g. be conditionally executed depending on the value of the counter.
Counter 47 may also be counting any event internal to the AWG.
As further shown in
Once the address 62 has been specified, the selected command is advantageously read out in a single step, i.e. in the course of a single clock operation.
Read port 60 has at least two outputs. A waveform specifier output 74 carries the waveform specifier (or data derived therefrom) of the selected command and a parameter specifier output 75 carries the parameter specifier (or data derived therefrom) of the selected output.
As also shown in
The present design allows the AWG to execute complex changes in its configuration with a single instruction from sequencer 30. For example, without command table unit 40, the following are the commands to be executed when playing several waveforms with different amplitudes and carrier phase:
Instruction 1 plays the waveform wave1 with the presently set parameters of signal processor 20.
Instructions 2-5 prepare the amplitude and phase of the next waveform (wave2) while wave1 is being played.
Instruction 6 plays wave2 with the new parameters.
Instructions 7 and 8 prepare the phase of yet another waveform (wave3) and instruction 9 plays it.
In contrast to this, with the present design, a command specifying wave2 and its phase and amplitude can be stored in location X of command table memory 42 and it can be invoked with a single table execution instruction of sequencer 30:
1: execute command X
Hence, this design saves memory in sequencer memory 32 and, more importantly, allows to change between different settings and processing parameters very quickly.
As mentioned above and as shown in
Signal processor 20 may, however, also comprise one or more other processing elements in addition or alternatively thereto, such as specified by reference numbers 90 - 94. These processing elements may be arranged at any suitable point along the signal path, and the locations shown in
For example, signal processor 20 may comprise a filter 90. This filter filters the selected waveform that is to be played or is being played. It may e.g. have one or more of the following functions:
a) It may be adapted to apply a kernel to the selected waveform by means of a convolution operation. In this case, parameter identifier 54 is descriptive of the kernel.
b) It may be adapted to apply a window function to the selected waveform. In this case, parameter identifier 54 is descriptive of at least one window parameter of said window function.
c) It may be a clipping filter limiting the amplitude of the desired waveform. In this case, parameter identifier 54 is descriptive of a maximum amplitude to be passed by the clipping filter.
d) It may add, for each sample value of the wave signal, a zero value or a value of opposite sign, e.g. before or after the sample value. In this case, parameter identifier 54 may comprise bits indicating which one (if any) of these operations is to be enabled.
e) It may add a constant value/offset to the waveform.
Filter 90 may have at least one memory cell that changes its value during a filtering operation. In this case, parameter identifier 54 may describe if this memory cell is to be reset to a predefined value in order to bring the filter into a defined state.
In addition or alternatively thereto, signal processor 20 may comprise a delay unit 92 for delaying the waveform. In this case, the command may, as part of parameter specifier 54, include a delay specifier for controlling settings of delay unit 92 as mentioned above.
Delay unit 92 may generate a delay in integer multiples of the rate of samples in the waveform. It may also generate a general delay, in which case delay unit 92 advantageously comprises a resampler for resampling the waveform at interpolated values.
In the example of
In addition or alternatively thereto, signal processor 20 may also comprise an interpolator 94 (which is, by way of examples, shown as being located between waveform memory 8 and waveform player 16, but it may also be located after waveform player 16). Interpolator 94 can interpolate the selected waveform at times outside the data points stored in waveform memory 8. In this case, the parameter identifier is descriptive of at least one parameter of interpolator 94, such as the number of interpolation points between the data points of the waveform.
Waveform player 16 is adapted to trigger parameter buffer 96, by means of a trigger signal 98, to forward the parameter identifier of a given command to signal processor 20 when waveform player 16 starts playing the waveform identified by the waveform identifier of the same command, thereby aligning the start of the waveform with feeding the new parameter settings to signal processor 20.
An important application of the present AWG is the control of a quantum processor, in particular the execution of “gate operations” in such a quantum processor.
The elementary operation in a quantum processor is called a gate operation. Examples are so-called X-gates, Y-gates or H-gates. Each gate operation is a combination of specific RF pulses, oscillator phase changes and amplitudes on one or more outputs of the AWG.
In this case, command table memory 42 may contain definitions of gate operations for the quantum processor such that a quantum program can be specified by referring to entries of the command table memory 42. This application-specific abstraction greatly reduces the size and complexity of a program for a quantum computer and increases the performance compared to general-purpose control systems.
For example, once a library of gates consisting of a waveform tables and command tables is available, an update of the sequences of references to command table memory 42 is sufficient to execute a different program on a quantum computer.
Another important application in context of a quantum processor lies in randomized benchmarking.
Command table memory 42 also allows for the real-time generation of gate sequences, for example to realize “randomized benchmarking”. A pseudo-random number generator is used to refer to random gate operations defined in the command table.
The present device can also be advantageously used for qubit-spectroscopy where the same waveform has to be repeatedly with a number of different amplitudes.
Even though the components of the AWG may be formed with any suitable technology, command table unit 40, sequencer 30, and at least parts of waveform source 6 are advantageously formed from an FPGA for fast execution, highly parallel operation, and easy redesign.
The various signal paths, e.g. between sequencer 30 and command table unit 40 or between cache manager 10 and waveform player 16, may include command queues to allow an asynchronous operation of the components.
As mentioned, the AWG may e.g. have one or two analog outputs. It may, however, also have even more analog outputs. In particular, it may have several independent output channels, each with its own waveform source and signal processor.
The two outputs 2a, 2b may, as mentioned, be the in-phase and quadrature components of a single signal, and they may be added in an analog adder. In yet another embodiment, the two signals from mixer 28 may be added to each other digitally before being fed to a single digital-to-analog converter.
In the embodiment of
Mixer 28 may also be implemented after the digital-to-analog converter(s) 2a, 2b as analog circuitry.
As described above, using a command table unit allows reducing the size of a sequencer program. A single instruction may trigger a play-command, a phase change, and an amplitude change at the same time. This can be extended easily to support additional signal conditioning functions or other functions to control the AWG.
Another advantage is that the total size and/or number of waveforms can be reduced. If a waveform is required in several scaled versions or modulated with different phase, the waveform may exist only once in waveform memory 8, and its scaling and modulation can be specified at playtime.
While there are shown and described presently preferred embodiments of the invention, it is to be distinctly understood that the invention is not limited thereto but may be otherwise variously embodied and practiced within the scope of the following claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/EP2020/068547 | 7/1/2020 | WO |