AN ARBITRARY WAVEFORM GENERATOR WITH ADVANCED COMMAND CONTROL
20230280780 · 2023-09-07
Assignee
Inventors
Cpc classification
G06F1/0321
PHYSICS
International classification
Abstract
An arbitrary waveform generator includes at least one analog output, a digital-to-analog converter connected to the analog output and a waveform source connected to the digital analog converter. The waveform source includes a waveform memory, a signal player and a signal processor. The waveform generator is controlled by a sequencer having an instruction memory for instructions and an instruction interpreter adapted to sequentially execute the instructions. A command table unit, in addition to the sequencer, is connected to the waveform source and includes a command table memory holding a plurality of commands. The commands include a waveform identifier for a waveform to be played and a parameter identifier describing how to modify the waveform in the signal processor. The sequencer can trigger the command table unit to execute a command therein, thereby playing the waveform with the parameter as identified by the command.
Claims
1. An arbitrary waveform generator comprising at least one analog output, a digital-to-analog converter connected to the analog output, a waveform source connected to said digital-to-analog converter, and a sequencer adapted to control the waveform generator, wherein said sequencer comprises an instruction memory for instructions and an instruction interpreter adapted to sequentially execute said instructions, wherein said waveform generator further comprises a command table unit in addition to the sequencer, and wherein said command table unit is connected to the waveform source and comprises a command table memory holding a plurality of commands identifiable with command addresses, with at least some of said commands comprising a waveform identifier descriptive of a waveform to be played and/or a parameter identifier descriptive of a parameter for modifying said waveform, wherein said sequenceris adapted to execute table execution instructions, with each table execution instruction specifying at least one command address, wherein, upon execution of such a table execution instruction, the command table unit is triggered to cause the waveform source to play the waveform with the parameter as identified by the command at the specified command address.
2. The arbitrary waveform generator of claim 1, wherein said waveform source comprises; a waveform memory holding a plurality of waveforms, wherein a desired waveform in the waveform memory is selectable by the waveform identifier of the commands, and a signal processor structured to modify the desired waveform, wherein said signal processor is at least partially controllable by the parameter identifier of the commands.
3. The arbitrary waveform generator of claim 2, further comprising a waveform player generating a time series of values from the selected waveform.
4. The arbitrary waveform generator of claim 3, further comprising a parameter buffer for buffering the parameter identifier, wherein said waveform player is adapted to trigger the parameter buffer to forward the parameter identifier of a given command to the signal processor in synchronization to starting playing a waveform identified by the waveform of the given command.
5. The arbitrary waveform generator of claim 2,wherein said signal processor comprises a scaler adapted to scale the selected waveform with a scaling factor, and wherein said parameter identifier is descriptive of said scaling factor and/or a change in said scaling factor.
6. The arbitrary waveform generator of claim 2, wherein said signal processor comprises a mixer for mixing the waveform of the waveform player with a carrier signal, and wherein said parameter identifier is descriptive of a phase and/or frequency of the carrier signal.
7. The arbitrary waveform generator of claim 2, wherein said signal processor comprises a delay unit generating a delay in the signal of the waveform player, wherein said parameter identifier is descriptive of a delay time to be applied by the delay unit.
8. The arbitrary waveform generator of claim 2, wherein said signal processor comprises a filter filtering the selected waveform, wherein said parameter identifier is descriptive of at least one parameter of said filter.
9. The arbitrary waveform generator of claim 2, wherein said signal processor comprises an interpolator for interpolating the selected waveform, wherein said parameter identifier is descriptive of at least one parameter of said interpolator.
10. The arbitrary waveform generator of claim 1,wherein said command table unit comprises a write port for modifying the commands in said command table memory.
11. The arbitrary waveform generator of claim 10, wherein said sequencer is connected to said write port and adapted to interpret table change instructions for writing commands into said command table memory.
12. The arbitrary waveform generator of claim 10, further comprising an input interface for external signals, wherein said input interface is connected to said write port for writing commands into said command table memory without using the sequencer.
13. The arbitrary waveform generator of claim 1, further comprising an input interface for applying a multibit data word to said arbitrary waveform generator, wherein the sequencer is adapted to interpret at least one of said table execution instructions as an instruction to use the data word for generating the command address.
14. The arbitrary waveform generator of claim 1, wherein at least some of said commands comprise a condition specifier, wherein said command table unit is adapted to check for a given condition specified by the condition specifier and to execute said command only if the given condition is met.
15. The arbitrary waveform generator of claim 1, further comprising at least one counter, wherein at least one of said commands comprises a counter operation identifier, wherein said command table unit is adapted to access a value of said counter as a function of said counter operation identifier.
16. A method for operating the arbitrary waveform generator of claim 1, further comprising: interpreting, in said sequencer, a table execution instruction, identifying, using said table execution instruction, a command in the command table memory to be executed, choosing a waveform to be played using the waveform identifier in the command to be executed, and playing the waveform to be played and modifying it using the parameter identifier of the command to be executed.
17. Use of the arbitrary waveform generator of claim 1 for sending signals to a quantum processor.
18. The arbitrary waveform generator of claim 8, wherein said filter is adapted to at least one of: apply a kernel to the selected waveform by a convolution, wherein said parameter identifier is descriptive of said kernel, apply a window function to the selected waveform, wherein said parameter identifier is descriptive of at least one window parameter of said window function, and add, for each sample value of the selected waveform, a zero value or a value of opposite sign to the sample value.
19. The arbitrary waveform generator of claim 8, wherein said filter is a clipping filter limiting an amplitude of the selected waveform, wherein said parameter identifier is descriptive of a maximum amplitude to be passed by the clipping filter.
20. The arbitrary waveform generator of claim 8, wherein said filter has at least one memory cell that changes its value during a filtering operation, wherein said parameter identifier is descriptive of resetting said memory cell to a predefined value.
21. The arbitrary waveform generator of claim 14, further comprising an input interface for external signals, wherein said given condition depends on a signal at said input interface.
22. The arbitrary waveform generator of claim 15, wherein said command table unit is adapted to execute, as a function of said counter operation identifier, at least one of: setting said counter to a specified value, increasing or decreasing said counter, and querying a value of said counter and executing a command only if the value fulfills a given condition.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0036] 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:
[0037]
[0038]
MODES FOR CARRYING OUT THE INVENTION
Overview
[0039]
[0040] 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.
[0041] 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.
[0042] 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.
[0043] 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.
[0044] The waveforms in waveform memory 8 can e.g. be identified by address or index and, if required, by its length.
[0045] 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.
[0046] 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.
[0047] 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.
[0048] 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.
[0049] 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.
[0050] The carrier signal(s) is/are single frequency signals (such as a pure sine wave) with selectable frequency and/or phase and/or amplitude.
[0051] 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.
[0052] The AWG further includes a sequencer 30 for controlling its operation.
[0053] 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.
[0054] 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.
[0055] 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.
[0056] Sequencer 30 is typically adapted to execute various classes of instructions. These classes may e.g. include one or more of the following: [0057] “Play-Wave instructions”: These instructions directly select a waveform in waveform memory 8 directly and have it played by means of waveform player 16 as it is known from conventional systems. [0058] “Wave-Parameter instructions”: These instructions allow to set parameters of signal processor 20 (the respective data flow arrows are not shown in
[0062] 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.
[0063] 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.
[0064] 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.
[0065] This will be described in more detail in the next section.
[0066] 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.
[0067] 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.
[0068] 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.
Command Table Unit
[0069]
[0070] As mentioned, it comprises a command table memory 42 with locations 50-1 to 50-N for commands.
[0071] 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.
[0072] In the shown embodiment, each command comprises the following entries: [0073] A waveform specifier 52: The waveform specifier may e.g. comprise a multibit value (e.g. of 16 - 64 bit) indicative of the waveform, e.g. the address of a waveform to be specified in waveform memory 8 and, optionally, a multibit value specifying its length and/or other attributes, such as data indicative of the analog outputs it is to be played on. It may also comprise “enable information” indicating if the command is to trigger playing the specified waveform or not. This enable information may e.g. be encoded in a separate bit or as a “special” bit pattern (e.g. all 0) in the multibit value. The waveform in waveform memory 8 may contain a single time-series of values to be played, or it may e.g. contain two time-series of numbers representing the values at the outputs 18a, 18b of waveform player 16. In yet another example, waveform specifier 52 may specify the addresses of two separate waveforms in waveform memory 8, each of which specifies the time-series to be played at a respective one of the outputs 18a, 18b. For an AWG with N > 2 outputs, waveform specifier 52 may e.g. specify N waveforms, or it may specify a single waveform comprising a N time-series of values for the N outputs. [0074] A parameter specifier 54: This specifies how the played waveform is to be modified. It is typically used to generate one or more parameters to be fed to signal processor 20. In particular, parameter specifier 54 may include at least one of the following: [0075] a) A phase specifier 56: This value specifies the phase of the carrier signal(s) C1, C2. Since, in the embodiment of
[0087] 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.
[0088] Counter 47 may also be counting any event internal to the AWG.
[0089] As further shown in
[0092] 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.
[0093] 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.
[0094] As also shown in
[0097] 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: [0098] 1: play wave1 [0099] 2: set phase sine gen 0 [0100] 3: set phase sine gen 1 [0101] 4: set amplitude 0 [0102] 5: set amplitude 1 [0103] 6: play wave2 [0104] 7: set phase sine gen 0 [0105] 8: set phase sine gen 1 [0106] 9: play wave3
[0107] Instruction 1 plays the waveform wave1 with the presently set parameters of signal processor 20.
[0108] Instructions 2-5 prepare the amplitude and phase of the next waveform (wave2) while wave1 is being played.
[0109] Instruction 6 plays wave2 with the new parameters.
[0110] Instructions 7 and 8 prepare the phase of yet another waveform (wave3) and instruction 9 plays it.
[0111] 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:
[0112] 1: execute command X
[0113] Hence, this design saves memory in sequencer memory 32 and, more importantly, allows to change between different settings and processing parameters very quickly.
Signal Processor
[0114] As mentioned above and as shown in
[0115] 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
[0116] 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:
[0117] 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.
[0118] 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.
[0119] 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.
[0120] 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.
[0121] e) It may add a constant value/offset to the waveform.
[0122] 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.
[0123] 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.
[0124] 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.
[0125] In the example of
[0126] 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.
[0127]
[0128] 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.
Applications
[0129] 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.
[0130] 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.
[0131] 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.
[0132] 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.
[0133] Another important application in context of a quantum processor lies in randomized benchmarking.
[0134] 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.
[0135] 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.
Notes
[0136] 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.
[0137] 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.
[0138] 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.
[0139] 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.
[0140] In the embodiment of
[0141] Mixer 28 may also be implemented after the digital-to-analog converter(s) 2a, 2b as analog circuitry.
[0142] 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.
[0143] 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.
[0144] 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.