Robust Tensorized Shaped Setpoint Waveform Streaming Control
Patent Information
- Application Number
- JP2024524631
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-10-25
- Filing Date
- 2022-10-18
- Publication Date
- 2025-10-30
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] Aspects of the present disclosure generally relate to control systems, including control systems for radio frequency (RF) generators. [Background technology]
[0002] Control systems have important applications in many technology areas, including plasma applications; semiconductor processing and other material processing; robotics; vehicle control systems for automobiles, aircraft, and spacecraft; and other electronic, manufacturing, and industrial systems. Semiconductor processing and other advanced material processing rely on increasingly sophisticated plasma processes. Such plasma processes in turn require increasingly sophisticated power and control systems to subject the inherently unstable and nonlinear plasma to increasing precision and consistency. Such plasmas are used for processes such as plasma etch processes, plasma enhanced chemical vapor deposition (CEPVD) processes, plasma enhanced atomic layer deposition (PEALD) processes, plasma assisted atomic layer deposition (PA-ALD), RF sputtering deposition, and other plasma applications.
[0003] After substantial technological advances, one typical plasma power and control system may include an inductively coupled plasma (ICP) reactor, which is powered by an RF generator connected through an RF impedance matching network, with a measurement instrument that detects signals and physical conditions from the matching network and the plasma reactor and sends the data to the RF generator. The matching network performs fast and precise matching of the plasma's rapidly changing chaotic nonlinear impedance and protects the RF generator from other detrimental effects of those rapid nonlinear impedance changes. The RF generator amplifies the power and converts it from a basic input form to a form optimized for powering the plasma. The RF generator includes an RF power amplifier, a user interface, and a controller, such as a measurement and control multiprocessor system on chip (M&CMPSoC), which controls the RF generator. Summary of the Invention [Means for solving the problem]
[0004] Various aspects disclosed herein provide novel setpoint waveform streaming systems, devices, and methods that can enable and provide robust shaped setpoint waveform streaming control, and novel processors, controllers, RF generators, systems, devices, and methods incorporating such novel setpoint waveform streaming systems, devices, and methods. Various novel systems of the present disclosure may extend the concept of a setpoint modifier to setpoint waveform streaming that provides virtually instantaneous or real-time control, instead of averaged control, i.e., control signals based on quantities averaged over time, among other novel and inventive systems, devices, and methods.
[0005] Various illustrative aspects are directed to a system comprising a setpoint waveform streaming prototyping module configured to receive an input indicative of a desired setpoint waveform and output a data package based at least in part on the input indicative of the desired setpoint waveform, the data package comprising a plurality of points, an interpolation method, and one or more interpolation parameters. The system further comprises a setpoint waveform streaming processing module configured to receive the data package from the setpoint waveform streaming prototyping module and output a streaming setpoint waveform based at least in part on the data package.
[0006] Various illustrative aspects are directed to a method. The method includes receiving, by one or more processors, an input indicative of a desired setpoint waveform. The method further includes generating, by the one or more processors, a data package based at least in part on the input indicative of the desired setpoint waveform, the data package comprising a plurality of points, an interpolation method, and one or more interpolation parameters. The method further includes generating, by the one or more processors, the setpoint waveform based at least in part on the data package.
[0007] Various illustrative aspects are directed to a computing system. The computing system comprises one or more processing devices, one or more tangible computer-readable memory devices, and one or more tangible computer-readable data storage devices. The computing system further comprises program instructions, the program instructions for receiving an input indicative of a desired setpoint waveform stored on the one or more data storage devices for execution by the one or more processing devices using the one or more memory devices. The computing system further comprises program instructions stored on the one or more data storage devices for execution by the one or more processing devices using the one or more memory devices, the program instructions for generating a data package based at least in part on the input indicative of the desired setpoint waveform, the data package comprising a plurality of points, an interpolation method, and one or more interpolation parameters. The computing system further comprises program instructions stored on the one or more data storage devices for execution by the one or more processing devices using the one or more memory devices, the program instructions for generating a setpoint waveform based at least in part on the data package.
[0008] Various additional aspects are depicted in and will become more apparent based on the accompanying figures and described below. Throughout this disclosure, the term "system" may be used generally to refer to or incorporate a system, device, method, process, apparatus, technique, or another potential category of invention, unless otherwise specified. It is noted that references such as "systems, devices, and methods" do not void or affect the present intended generic meaning of the term "system." [Brief description of the drawings]
[0009] Various features and advantages of the disclosed technology will be apparent from the following description of specific embodiments of those technologies, as illustrated in the accompanying drawings. The drawings are not necessarily to scale, with emphasis instead being placed on illustrating the principles of the technological concepts. In the drawings, like reference characters may refer to the same parts throughout the different views. The drawings depict only illustrative embodiments of the disclosure and are therefore not to be considered limiting in scope.
[0010] [Figure 1] FIG. 1 illustrates a conceptual block diagram of a setpoint waveform streaming system according to an aspect of the present disclosure.
[0011] [Diagram 2] FIG. 2 illustrates a conceptual block diagram of an exemplary plasma processing environment incorporating a set-point waveform streaming system according to an aspect of the present disclosure.
[0012] [Diagram 3] FIG. 3 shows a graph of amplitude over time for a single example set point waveform 300 for a single state or pulsing level in accordance with an aspect of the present disclosure.
[0013] [Figure 4] FIG. 4 shows a graph of a desired set point waveform as indicated by user input in accordance with an illustrative example.
[0014] [Diagram 5] FIG. 5 shows a graph of a seed waveform in accordance with an illustrative example.
[0015] [Figure 6] FIG. 6 shows a graph of a set point waveform in accordance with an illustrative example.
[0016] [Figure 7] FIG. 7 shows a graph of a set point waveform in accordance with another illustrative example.
[0017] [Figure 8]FIG. 8 shows a graph of a set point waveform in accordance with another illustrative example.
[0018] [Figure 9] FIG. 9 shows a graph of a set point waveform in accordance with another illustrative example.
[0019] [Figure 10] FIG. 10 depicts a flow chart for an exemplary method for operation of a controller that may comprise a setpoint waveform streaming prototype module and a setpoint waveform streaming processing module in another aspect of the disclosure.
[0020] [Figure 11] FIG. 11 depicts a block diagram of an example computing system that may embody, control, or execute any of the various embodiments of the setpoint waveform streaming system in the various embodiments of the present disclosure, as well as the other systems, methods, and apparatus disclosed herein.
[0021] [Figure 12] FIG. 12 depicts a conceptual block diagram of example physical components that may implement, perform, or embody one or more aspects of the setpoint waveform streaming system in various embodiments of the present disclosure, as well as other systems, methods, and apparatuses disclosed herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0022] Aspects of the present disclosure provide novel setpoint waveform streaming systems, devices, and methods that enable and may provide robust shaped setpoint waveform streaming control, and novel control systems, devices, and methods that incorporate such novel setpoint systems, devices, and methods. Various novel systems of the present disclosure may extend the concept of a setpoint modifier to setpoint waveform streaming that provides virtually instantaneous or real-time control instead of averaged control or control signals (based on quantities averaged over time). For purposes of this disclosure, and in light of the understanding of one of ordinary skill in the art, virtually "instantaneous" or "real-time" may refer to time scales that are very short relative to the typical time scales of physical phenomena specific to the system, device, machine, or environment to be controlled by the control system (such as in various examples, plasma processing chambers, in some examples, the plasma to be controlled in plasma processing chambers may typically exhibit nonlinear and even chaotic behavior with fast changes in very short time scales). The setpoint streaming system of the present disclosure may be used in series with, in parallel with, or independently of setpoint modifier adaptive nonlinear processing and / or filtering, which is the subject of another patent application of the present assignee in preparation in parallel with this application.
[0023] The setpoint waveform streaming system of the present disclosure may offload computationally intensive pseudo real-time operations to the relatively slower CPU, essentially dedicating the operations on the FPGA to real-time operations or only real-time operations, in various examples, thus enabling more available processing capacity and extending the life of the SoC and / or FPGA / CPU system, which may then be more fully devoted to next generation control. The setpoint streaming system of the present disclosure may thus achieve new breakthroughs in performance without requiring redesign or modification of the control system to incorporate more expensive high performance hardware features.
[0024] The setpoint waveform streaming system of the present disclosure may help enable a distributed, modular architecture of control systems and may also help enable incorporation into control systems and may serve as a potential stepping stone and building block for a novel Tensor Signal Processing Unit (TSPU) and its data flows that are the subject of another patent application of the present assignee in preparation in parallel with this application.
[0025] The setpoint waveform streaming system of the present disclosure may generalize the concept of a "reference model" to a more generalized concept of an arbitrarily shaped and trackable reference setpoint waveform that may benefit from the repetitive nature of the power waveform on the plasma. The setpoint streaming system of the present disclosure may allow adaptive control to be much more robust and stable (including when operating in highly nonlinear and chaotic loads). The setpoint streaming system of the present disclosure may therefore provide a tremendous advantage over prior art systems that rely on the old MIT-MRAC rules (Massachusetts Institute of Technology-Model Reference Adaptive Control Rules), including those with feedforward, adaptive rate lookup, and single-input single-output (SISO) transfer functions, in which the more nonlinear the system to be controlled, the more delayed and fragile the performance of the control system becomes, and the higher the chance that the control system will reach its limits, become unstable, and destroy its hardware.
[0026] FIG. 1 illustrates a conceptual block diagram of a setpoint waveform streaming system 100 according to an aspect of the disclosure. The setpoint waveform streaming system 100 comprises a setpoint streaming user interface (UI) system (SSUIS) 102, a pseudo real-time processor 104 (e.g., a CPU), and a real-time processor 106 (e.g., an FPGA). For purposes of this description, the term "real-time" may be generally construed as familiar in the applicable art, and in some examples may include adaptability to a processor routinely capable of processing instructions and reacting to inputs with reaction times typical of an FPGA, while the term "pseudo real-time" may in some examples include adaptability to a processor routinely capable of processing instructions and reacting to inputs with reaction times typical of a CPU. The pseudo real-time processor 104 comprises a setpoint waveform streaming prototype module 112 configured and / or executing on the pseudo real-time processor 104, and may optionally include a setpoint modifier 114 configured and / or executing on the pseudo real-time processor 104. The real-time processor 106 comprises a setpoint waveform streaming processing module 122 and a control module 124 configured and / or executed thereon.
[0027] The setpoint control UI system 102 may comprise a computer or any other device capable of executing a setpoint control UI and allowing a user to enter user input that indicates a desired setpoint waveform to the setpoint control UI. The setpoint control UI may interact with a setpoint control application that may be running at least in part on the same device or devices as the setpoint control UI system 102, in the cloud, and / or on any other accessible computing resource.
[0028] The setpoint waveform streaming prototype module 112 and the setpoint waveform streaming processing module 122 together form, and together may be considered as, a distributed setpoint waveform streaming core system 130. Different components, functions, and / or aspects of the distributed setpoint waveform streaming core system 130 may be distributed in different ways, in various examples, across the setpoint waveform streaming prototype module 112 and the setpoint waveform streaming processing module 122, and across the pseudo real-time processor 104, the real-time processor 106, and / or additional processors, devices, or components. In various examples, the distributed setpoint waveform streaming core system 130 may implement, perform, and / or embody the inventive aspects of the present disclosure by, within, and independently of any other components or aspects of the setpoint waveform streaming system 100, as shown in FIG. 1 . In some examples, the distributed set point waveform streaming core system 130 may be incorporated within a single controller, which may incorporate the pseudo real-time processor 104 and the real-time processor 106 as an integrated component, as described further below.
[0029] The setpoint streaming UI system 102 may allow a user or system to input inputs, process those inputs for delivery to the setpoint waveform streaming prototyping module 112, and output those processed inputs to the setpoint waveform streaming prototyping module 112. The setpoint modifier 114 may output a setpoint modifier output to the setpoint streaming prototyping module 112. The setpoint waveform streaming prototyping module 112 may generate a tensorized seed waveform and corresponding waveform parameters based at least in part on the processed user input, and in some examples also based at least in part on the setpoint modifier signal. That is, the setpoint waveform streaming prototyping module 112 may encode all of the data for the seed waveform in the form of tensors, which may advantageously be rapidly processed by the setpoint waveform streaming processing module 122. The setpoint waveform streaming prototyping module 112 may output the tensorized seed waveform and corresponding parameters to the setpoint waveform streaming processing module 122 on the real-time processor 106. The setpoint waveform streaming processing module 122 may receive output from the setpoint waveform streaming prototype module 112, such as a tensorized setpoint waveform signal indicative of the setpoint waveform streaming prototype, and may use and process the data from the output to generate and output a complete setpoint waveform that can be streamed.
[0030] The control module 124 may comprise, in different examples, a MRAC (Model Reference Adaptive Control) control module, a PID (Proportional-Integral-Derivative) control module comprising one or more PID modules, a gain parameterized control module, or another type of control module. The control module 124 may receive setpoint waveforms streaming from the setpoint waveform streaming processing module 122 and may also receive other inputs such as error signals and system sensor readings. The control module 124 may apply intermediate operations such as error correction if and when the control module 124 determines a need to perform such actions. The control module may generate and output control signals based at least in part on the streaming setpoint waveforms output by the setpoint waveform streaming processing module 122.
[0031] The setpoint waveform streaming system 100 allows a user, via the setpoint control UI system 102, to input a desired shape of an output power waveform for a plasma in a plasma reactor or other type of plasma chamber. The setpoint waveform streaming system 100, in some examples, may allow the setpoint waveform to be of any shape and type with very high resolution, such as up to eight times (8x) the sampling rate of the real-time processor 106 (e.g., an FPGA). In one example, the real-time processor 106 may comprise an FPGA with a sampling rate of 100 megahertz (MHz), and the resolution of the setpoint waveform enabled by the setpoint waveform streaming system 100 may be 12.5 MHz. In another example of the setpoint waveform streaming system 100 incorporated into another exemplary RF generator, the resolution of the setpoint waveform enabled by the setpoint waveform streaming system 100 may be 100 MHz.
[0032] The setpoint waveform streaming system 100 may allow a user to simply input desired multi-level pulsing set points or multi-state set points with desired waveform shape and timing specifications for each state via the setpoint control UI system 102, and the setpoint waveform streaming system 100 may, in various examples, produce, generate or transmit setpoint waveforms with multiple pulsing levels or states and according to other desired waveform shape and timing specifications for each pulsing level or state. While some conventional exemplary plasma processing systems have requirements for one or two states or one or two level pulsing in a setpoint signal provided to a control module of a controller for the plasma processing system as an exemplary application for the setpoint waveform streaming system 100, some emerging exemplary systems may have requirements for four states or four level pulsing which the setpoint waveform streaming system 100 may accommodate, thereby providing the novel advantage of being able to meet requirements for up to four states. The setpoint waveform streaming system 100 is also upgradeable or can be upgraded in some examples with the same hardware to provide, for example, up to 8 or 16 states with a simple software parameter upgrade. The setpoint waveform streaming system 100 may be capable of providing more than 16 states or other numbers of states in other examples. The setpoint waveform streaming system 100 uses setpoint streaming with multiple desired inputs and multiple desired outputs as part of the desired setpoint waveform, and as an inherent feature of its tensorized nature, may result in a corresponding multiple-input multiple-output (MIMO) setpoint waveform.
[0033] 2 illustrates a conceptual block diagram of an example plasma processing environment 242 incorporating the setpoint waveform streaming system of the present disclosure. In particular, the plasma processing environment 242 includes an RF generator 252, which incorporates an RF power amplifier 256 and a controller 203. The controller 203 includes a distributed setpoint waveform streaming core system 230. The plasma processing environment 242 further includes, in this example, a power supply 260, a matching network 270, a plasma chamber 280, and a sensor system 290. Various examples of the distributed setpoint waveform streaming core system 230 may include and / or function as examples of the setpoint waveform streaming system of the present disclosure.
[0034] Plasma processing environment 242 illustrates an example application context in which various example set point waveform streaming systems of the present disclosure may provide novel advantages. In various examples, controller 203 may be configured to implement distributed set point waveform streaming core system 230 and generate and output control signals based at least in part on set point waveform streaming as presented in this disclosure, and output those control signals to drive RF power amplifier 256, thereby controlling the RF power output by RF power amplifier 256 to an RF load comprising matching network 270 and plasma chamber 280.
[0035] The controller 203 incorporates a pseudo real-time processor 204 and a real-time processor 206, which are operatively connected together and which together constitute a distributed setpoint waveform streaming core system 230. The pseudo real-time processor 204 may be, for example, a CPU in some examples, and the real-time processor 206 may be, for example, an FPGA in some examples. The pseudo real-time processor 204 and the real-time processor 206 may be included in a single integrated processing chip in some examples, with an integrated interconnect communication channel or infrastructure. The pseudo real-time processor 204 of the controller 203 includes a setpoint waveform streaming prototype module 212, such as in the form of computer executable software instructions loaded and / or executed thereon and / or configured to be executed thereon. The real-time processor 206 of the controller 203 includes a setpoint waveform streaming processing module 222, such as in the form of computer executable software instructions loaded and / or executed thereon and / or configured to be executed thereon. The setpoint waveform streaming original module 212 is configured to send, deliver, or transmit an output to the setpoint waveform streaming processing module 222. The setpoint waveform streaming processing module 222 is configured to receive an input, signal, or transmission from the setpoint waveform streaming original module 212. The setpoint waveform streaming original module 212 and the setpoint waveform streaming processing module 222 together form, or are included within, a distributed setpoint waveform streaming core system 230.
[0036] The controller 203 also includes a control module 224 configured to receive input from the setpoint waveform streaming processing module 222 and generate and output control signals to the RF power amplifier 256 for driving an RF load including a matching network 270 and a plasma chamber 280. The controller 203 is also operatively connected to a setpoint control UI system 202 from which the setpoint waveform streaming prototype module 212 receives inputs including user inputs that define or specify waveform shapes, waveform pulsing level shapes or state shapes, points, waveform parameters, and / or other data or information indicative of one or more desired setpoint waveforms.
[0037] FIG. 3 illustrates a graph of amplitude over time for a single exemplary setpoint waveform 300 for a single state or pulsing level in accordance with aspects of the present disclosure. The setpoint waveform 300 may be expandable to multiple setpoint waveforms and / or setpoint waveform states or pulsing levels simultaneously. The setpoint waveform streaming system 100 may allow a user to input data, parameters, and / or information indicative of a desired setpoint waveform (such as the exemplary desired setpoint waveform 300 as shown in FIG. 3). The setpoint waveform streaming system 100 may allow a user to set any parameter for a desired setpoint waveform (such as the exemplary desired setpoint waveform 300), and in the example of a waveform with multiple states, may allow a user to set any parameter for any state of the desired setpoint waveform. For example, the setpoint waveform streaming system 100 may allow a user to input each of the following waveform parameters indicative of a desired setpoint waveform (such as the exemplary setpoint waveform 300 shown in FIG. 3): -Set point - Percentage Overshoot (PO): The percentage of the setpoint that the setpoint waveform overshoots the setpoint on its initial rise (i.e., peaks at an amplitude of 1+PO). - Start time (t0): the time when the set point waveform starts -10% time (t 10): The time after start time t0 when the setpoint waveform first reaches 10% of the setpoint -90% time (t 90 ): The time after start time t0 when the setpoint waveform first reaches 90% of the setpoint - Rise time (t r ): For example, if the setpoint waveform is 10% of the setpoint (t 10 ) and when the set point waveform rises from 90% (t 90 ) may be defined as the duration of time between when - Overshoot time (t 100 ): The time after start time t0 when the setpoint waveform first reaches the setpoint (100% of the setpoint value) and begins its overshoot above the setpoint (for setpoint waveforms where such overshoot is applicable). - Peak time (t peak ): The time after start time t0 at which the setpoint waveform reaches its peak (i.e., its setpoint plus its percentage overshoot) -Inflection point time (TiN f ): The time after the start time t0 when the setpoint waveform reaches its inflection point from its peak to settling at the setpoint, i.e., the time after the peak when the setpoint waveform goes from a convex point to a concave point - Fixation time (t settle ): The time after start time t0 at which the setpoint waveform reaches and settles at the setpoint, remaining at the setpoint from that time until a later time at which it leaves the setpoint (not shown in FIG. 2) - State time (t state ): The time after the start time t0 when the setpoint waveform leaves a particular state
[0038] These are merely illustrative examples of setpoint waveform parameters that may be received by the setpoint waveform streaming system of the present disclosure as user input indicative of a desired waveform, which may be used by the setpoint waveform streaming system of the present disclosure to generate and output streaming setpoint waveforms that correspond to and adhere to the waveform parameters and / or any other data or information indicative of the desired setpoint waveform as indicated by the received user input. The setpoint waveform streaming system of the present disclosure may also be configured to receive and process any other mathematically defined parameters, data, or information that may be used to help specify or define a waveform, in other examples.
[0039] The term "setpoint waveform" may refer to the entire waveform that includes and encompasses the amplitude delivered at the desired fixed set point itself. The setpoint waveform may therefore include the rise, overshoot, post-set point fall, and states, portions, or segments of the setpoint waveform where the setpoint waveform is set to a fixed amplitude at the fixed set point itself, as well as any other potentially arbitrary waveform components, waveform segments, waveform states, waveform pulsing levels, or any other elements that a user may envision or envision to include in a desired setpoint waveform.
[0040] In some examples, the received user data may define a setpoint waveform comprising multiple states (such as two or more consecutive states or pulsing levels in a setpoint waveform). In some examples, the setpoint waveform streaming system 100 (e.g., the setpoint waveform streaming prototyping module 112 of the setpoint waveform streaming system 100) may stitch together a complete setpoint waveform by combining together all of several sub-waveform states as indicated by user input received via the setpoint control UI system 102. The setpoint waveform streaming prototyping module 112 may use normalized amplitudes for the level-normalized waveform for each state, and for each time point within each state or waveform, and may use a scale factor that allows repeated use of the setpoint of the previous state as the starting amplitude for the current state. As may be applicable in some examples, this is shown in Equation 1:
number
[0041] The setpoint waveform streaming prototype module 112 may obtain the timing for each state relative to the start time from the normalized waveform and take into account a scale factor that allows the time waveform for one state to seamlessly connect with the time waveform for another state. This is shown in Equation 2, for some examples:
number
[0042] The setpoint waveform streaming prototype module 112 may thus use normalization and scaling to allow itself to function as a universal streaming setpoint waveform prototype for arbitrarily different conditions and inputs, regardless of timing or amplitude, and generate setpoint waveforms of practically any shape. The setpoint waveform streaming prototype module 112 may also avoid the shortcomings of prior art reference models that lack the waveform control and shaping features of the present disclosure and are based on second-order linear system criteria. The setpoint waveform streaming prototype module 112 may thus avoid the shortcomings of prior art reference models, in which various parameters such as, for example, overshoot time and settle time, cannot be directly controlled, but are only indirectly generated, often inaccurately, and often induce undesirable side effects such as ringing (where the waveform oscillates around the setpoint instead of settling on it). The setpoint waveform streaming prototype module 112 may therefore avoid shortcomings of the prior art reference models, which sometimes give rise to instability modes in a highly nonlinear and / or chaotic plasma that can often cause the plasma chamber to enter unavoidable limit cycles or cause other destructive or catastrophic malfunctions or failure modes.
[0043] Referring again to the example of FIG. 1, in some examples, the setpoint control UI system 102 of the setpoint waveform streaming system 100 may allow a user to specify a desired setpoint level using an averaged metric or metrics, and the setpoint control UI system 102 may output one or more of those averaged metrics to an optional setpoint modifier module 114 (which may be optionally included in some examples of the setpoint waveform streaming system 100). The setpoint modifier module 114 may automatically synthesize original parameters based on these one or more metrics and send the synthesized original parameters to the setpoint waveform streaming original module 112, so that the setpoint waveform streaming original module 112 may achieve and generate the desired metric in real time based on the synthesized original parameters generated and output by the setpoint modifier module 114. Thus, the setpoint modifier module 114 may be configured to output setpoint modifier information to the setpoint waveform streaming original module 112. Both the setpoint modifier module 114 and the setpoint waveform streaming prototype module 112 may be included in the pseudo real-time processor 104, and both the setpoint modifier module 114 and the setpoint waveform streaming prototype module 112 may be configured to receive input from the setpoint control UI system 102. Further description of examples of the optional setpoint modifier module 114 may be found in co-pending patent application Ser. No. 17 / 494,383 of the same applicant and inventor as this disclosure.
[0044] The setpoint control UI system 102 may also allow the user to select among various options for each state and combine them together in the specification data for a single desired setpoint waveform. The setpoint waveform streaming prototyping module 112 may execute the selected options and combinations for each state in generating the setpoint waveform in response to user input. In particular, after the user enters inputs indicating the desired setpoint waveform shape and parameters via the setpoint control UI system 102, the setpoint control UI system 102 may output those setpoint waveform shape and parameter inputs to the distributed setpoint waveform streaming core system 130, and in particular to the setpoint waveform streaming prototyping module 112 initially running or executing on the pseudo real-time processor 104.
[0045] The setpoint waveform streaming prototype module 112 may receive user input from the setpoint control UI system 102 defining a desired setpoint waveform shape and parameters, and in response thereto, generate a seed waveform. In generating the seed waveform, the setpoint waveform streaming prototype module 112 may use an optimized number of uniformly and / or non-uniformly sampled points, which may correspond to a number of points that may minimize the regression or interpolation processing burden (and thus time and resources) in the real-time processor 106 (e.g., FPGA). The seed waveform generated by the setpoint waveform streaming prototype module 112 may, in some examples, correspond to points that define a single entire setpoint waveform pulse cycle for the next two interrupts of the pseudo real-time processor 104, and may omit any repetitive or redundant data for constructing the setpoint waveform. One interrupt may have a duration of approximately eight milliseconds (8 ms), in one illustrative example. The setpoint waveform streaming prototype module 112 may transmit the set of seed waveform data to the setpoint waveform streaming processing module 122.
[0046] The setpoint waveform streaming prototype module 112, in some examples, may compare a user input indicating a desired waveform to a reference waveform and also select sample points and an interpolation method, which determines how the reference waveform should be modified or deflected to the desired waveform. In some examples, the method helps to make the nonlinearity conform to the desired waveform, thereby countering the effects of this nonlinearity.
[0047] The setpoint waveform streaming prototype module 112 may use interpolation methods including any of the following, as well as additional interpolation methods beyond those examples listed here: -nearest neighbor -Next Neighbor -Front Neighborhood -Hold Sample -linear -Exponential -Sine sum -Fourier series -Tertiary -Chebyshev polynomial -Hermite polynomial -Gaussian -Weibull -spline
[0048] Thus, the setpoint waveform streaming prototype module 112 may use and prescribe any of the following example interpolation methods, as well as any of a wide range of additional interpolation methods, in the seed waveform tensor or tensorized seed waveform or other waveform data package that it generates and outputs: the setpoint waveform streaming prototype module 112 may use and prescribe, in various examples, nearest neighbor interpolation, next nearest neighbor interpolation, previous nearest neighbor interpolation, hold sample interpolation, linear interpolation, exponential interpolation, sum of sines interpolation, Fourier series interpolation, cubic interpolation, Chebyshev polynomial interpolation, Hermite polynomial interpolation, Gaussian interpolation, Weibull interpolation, spline interpolation, or any other applicable interpolation method. The setpoint waveform streaming prototype module 112 may also use and define any applicable seed waveform points and any interpolation parameters that are applicable to a selected interpolation method for inclusion in and definition of a seed waveform tensor or other waveform data package that the setpoint waveform streaming prototype module 112 generates, outputs, and sends or transmits to the setpoint waveform streaming processing module 122. The term "seed waveform" may be used to refer to a seed waveform data package or data package that includes (comprises or constitutes) data that defines (or is indicative of) a seed waveform of the present disclosure.
[0049] After the setpoint waveform streaming prototype module 112 generates the points, the setpoint waveform streaming prototype module 112 may combine the points along with the corresponding interpolation parameters and an identifier or indicator of the selected interpolation method, along with the time waveform, in a tensorized seed waveform signal or other waveform data package that incorporates the aforementioned information about the setpoint waveform. A "seed waveform tensor" may refer to a tensorized seed waveform signal, or information for a seed waveform, and the setpoint waveform streaming prototype module 112 may process the information for the seed waveform into the form of a tensor, after which the setpoint waveform streaming prototype module 112 may generate and output a signal or transmission that physically encodes or embodies the tensor and the information represented by the tensor. The setpoint waveform streaming prototype module 112 generates and transmits signals that may encode a tensorized seed waveform; the description of transmitting a seed waveform tensor may not be intended to describe transmitting a purely mathematical tensor itself, as opposed to a physical signal that encodes or represents such a tensor. The tensor encoding the seed waveform may be at least a second-order tensor in various examples, although the setpoint waveform streaming prototype module 112 may also encode the seed waveform information in a first-order or zeroth-order tensor in some examples. The waveform points, interpolation methods, and interpolation parameters that the setpoint waveform streaming prototype module 112 packages together in a tensorized waveform signal to transmit to the setpoint waveform streaming processing module 122 may contain, in various examples, all data that may be necessary, in sufficient bandwidth, for the setpoint waveform streaming processing module 122 to perform its functions (described below) and generate the desired setpoint waveform to the limits of the resolution that the real-time processor 106 is capable of. Then, at the next communication interrupt between the pseudo real-time processor 104 and the real-time processor 106 (e.g., in some examples, once every 8 milliseconds), the setpoint waveform streaming prototype module 112 may send this tensorized setpoint waveform signal incorporating the seed waveform, the interpolation parameters, and the interpolation method identifier to the setpoint waveform streaming processing module 122.
[0050] The setpoint waveform streaming processing module 122 may receive the tensorized setpoint waveform signal from the setpoint waveform streaming prototype module 112 and may generate the complete setpoint waveform in tensorized form by using the time data, cycle duration, amplitude, and interpolation method, and / or other instruction data of the setpoint waveform without having to perform any reshaping or decompression of data from the tensorized setpoint waveform signal. The setpoint waveform streaming processing module 122 may perform fully inherent and scalable parallel processing of inputs and interpolations, allowing for superior processing performance and control accuracy, especially for desired setpoint waveforms with relatively more states and relatively more desired control inputs. The setpoint waveform streaming processing module 122 may use the illustrated interpolation method and single pulse timing to interpolate the seed waveform tensor over a uniform time grid corresponding to the control rate of the real-time processor 106 (e.g., in one example, about 4.125 megahertz (MHz), or in some examples, higher or lower frequencies), and the uniform time grid may be shifted in time for each subsequent repetitive power cycle.
[0051] The setpoint waveform streaming processing module 122 responds to the pseudo real-time processor 104 interrupt by checking whether there is any new user input indicating any change in the desired setpoint waveform, and may either update the data for the seed waveform according to any new user input, or keep the same data for the seed waveform in the absence of any new user input indicating a change in the desired setpoint waveform. If the seed waveform data is kept the same, this may help to allow the pseudo real-time processor 104 and the real-time processor 106 to interleave some mathematical operations that are used for other purposes, thereby maximizing processing performance and minimizing processing resource usage. In many applications, it is expected that ongoing user updates to the desired setpoint waveform will occur only a small percentage of the time (e.g., 10% or less). In one exemplary RF environmental control application, the distributed setpoint waveform streaming core system 130 may typically use a single setpoint waveform shape to begin controlling an RF generator (such as RF generator 252 of FIG. 2) from the time it receives a radio frequency on (RF-ON) signal, and continue to use the same setpoint waveform shape all the way until it receives a radio frequency off (RF-OFF) signal to deactivate the RF generator. By typically using a single setpoint waveform shape and allowing for interleaving of mathematical operations, the distributed setpoint waveform streaming core system 130 may enable substantial enhancements to the performance and resource usage of a real-time processor executing the setpoint waveform streaming processing module 122, such as the real-time processor 106 of FIG. 1 or the real-time processor 206 of FIG. 2.
[0052] 4-6 show graphical data for an example of a desired setpoint waveform indicated by user input (FIG. 4) and its processing by the distributed setpoint waveform streaming core system 130 or 230 into a seed waveform (500) and then a full setpoint waveform (FIG. 6). FIG. 4 shows a graph of a desired setpoint waveform 400 indicated by user input according to an illustrative example, the desired setpoint waveform 400 comprising three states: a first waveform state 1 (410) during a first period of the desired setpoint waveform 400, a second waveform state 2 (420) during a second first period of the desired setpoint waveform 400, and a third waveform state 3 (430) during a third first period of the desired setpoint waveform 400. This series of three consecutive states 410, 420, 430 may be repeated indefinitely.
[0053] FIG. 5 shows a graph of a seed waveform 500 (not a precise graph, but an illustrative conceptual depiction) according to an illustrative example. The setpoint waveform streaming prototype module 112 of the distributed setpoint waveform streaming core system 130 in the example of FIG. 1 may receive user data indicative of a desired setpoint waveform 400, process the user data, and generate a seed waveform tensor that comprises all the information necessary to define the seed waveform 500 shown in FIG. 5, including the waveform points (as shown in the seed waveform 500), the interpolation method (not shown in FIG. 5) defined for each state, and the interpolation parameters (not shown in FIG. 5). In this example, the waveform points are as shown in the graph of the seed waveform 500. That is, the interpolation method for each state may be shown as spline interpolation for state 1 (510), nearest neighbor interpolation for state 2 (520), and nearest neighbor interpolation again for state 3 (530), as each state or pulsing level is shown in FIG. 5. The interpolation parameters may comprise a specification of the duration of the time duration for a waveform cycle time of 16 milliseconds, which in this example may be approximately equal to two interrupt cycles.
[0054] The setpoint waveform streaming prototype module 112 may transmit data for the seed waveform 500 to the setpoint waveform streaming processing module 122. The setpoint waveform streaming prototype module 112 (e.g., executed by a CPU) may transmit the data for the seed waveform 500 in a form that may maximize (or may attempt to maximize or may promote) information characteristics such as information density, accuracy, and / or precision. The setpoint waveform streaming prototype module 112 may transmit data for the seed waveform 500 in a form that may not be equally spaced in time and may not be normalized, as these characteristics may not be important or significant in how the setpoint waveform streaming prototype module 112 packages the data for the seed waveform. The setpoint waveform streaming processing module 122 (e.g., implemented by an FPGA) may process the data received for the seed waveform 500 to generate the setpoint waveform 600 as shown in Figure 6, which may scale and interpolate the data, process the seed waveform data uniformly and in real time, and generate a complete waveform (including with normalization and with uniformly distributed and high time density resolution) that accurately and precisely reproduces the desired waveform.
[0055] 6 shows a graph of a setpoint waveform 600 (in an illustrative conceptual depiction, not an exact graph) according to an illustrative example. As shown in FIG. 6, the setpoint waveform streaming processing module 122 may generate the setpoint streaming waveform 600 as a function of processing the waveform points, interpolation method, and interpolation parameters sent to it by the setpoint waveform streaming prototyping module 112. The setpoint waveform streaming prototyping module 112 may include an indicator in the seed waveform tensor or other form of waveform data package to use a spline interpolation method for state 1 of the setpoint waveform and a nearest neighbor interpolation method for both states 2 and 3 of the setpoint waveform, as described above with reference to FIG. 5. The setpoint waveform streaming processing module 122 may read or decode the seed waveform tensor or other waveform data package from the setpoint waveform streaming prototyping module 112 and may determine from the information in the seed waveform tensor or other waveform data package to generate a setpoint waveform from the provided waveform points. The setpoint waveform streaming processing module 122, according to information from the seed waveform tensor or other waveform data package from the setpoint waveform streaming prototyping module 112, may apply spline interpolation with accompanying interpolation parameters to the waveform points in state 1 (610) of the waveform, and nearest neighbor interpolation with accompanying interpolation parameters to the waveform points in both state 2 (620) and state 3 (630) of the setpoint waveform, as shown in Figure 6. Thus, the points, interpolation method, and one or more interpolation parameters included in the seed waveform tensor or other waveform data package generated by the setpoint waveform streaming prototyping module 112 comprise sufficient information for the waveform streaming processing module 122 to output a setpoint waveform, such that the setpoint waveform output by the setpoint waveform streaming processing module 122 matches, to within a nominal resolution, the desired setpoint waveform as indicated by an input indicative of the desired setpoint waveform as received (e.g., from a user) and communicated to the setpoint waveform streaming prototyping module 112 by the setpoint control UI system 102.
[0056] The setpoint waveform streaming processing module 122 may also generate setpoint waveform state segments and complete setpoint waveforms by processing the interpolation according to any of the interpolation methods listed above or other interpolation methods together with the seed waveform points and interpolation parameters as transmitted to the setpoint waveform streaming processing module 122 by the setpoint waveform streaming original module 112 in other examples. The setpoint waveform streaming processing module 122 may generate a setpoint waveform 600 in the form of a series of points at different times at different amplitudes, but the setpoint waveform 600 may comprise a time density point that is substantially greater than the seed waveform 500. The quantization or time density points of the setpoint waveform 600 may match or match, within a nominal resolution, the desired setpoint waveform as indicated by the original user input as received via the setpoint control UI system 102, and the quantization or time density points of the setpoint waveform 600 may, in some examples, represent a hardware limit of the resolution at which the setpoint waveform may be generated by the hardware controlled by the setpoint waveform streaming system 100 (e.g., RF generator 252 of FIG. 2 ). In other situations or examples, the nominal resolution may further be considered generally as understood by those of ordinary skill in the art.
[0057] The setpoint waveform streaming processing module 122 may generate a setpoint waveform 600 that repeats over time, for every time duration of a cycle of the setpoint waveform 600 (such as once every 16 milliseconds), as shown in the example above. If the setpoint waveform streaming processing module 122 does not receive an indication of a change in the desired setpoint waveform during the interrupt, the setpoint waveform streaming processing module 122 may increase the repetition time (e.g., to 24 milliseconds) and repeat the same setpoint waveform 600. This repetition of the setpoint waveform 600 may, in some examples, free up processing resources to perform other computationally intensive operations. If the setpoint waveform streaming processing module 122 receives an indication of a change in the desired setpoint waveform during the interrupt, the setpoint waveform streaming processing module 122 may resume the procedure described above for generating a new setpoint waveform according to the newly received seed waveform, defining and generating the new setpoint waveform starting at the next interrupt. This generation of a new setpoint waveform may occupy computational resources of the real-time processor 106 and may compete with other processes for those resources during that computation cycle.
[0058] The setpoint waveform streaming processing module 122 or 222 may therefore generate and output a setpoint waveform 600 to a control module of a controller, such as control module 224 of controller 203 in the example of Figure 2. The setpoint waveform streaming processing module 122 or 222 may therefore generate and output a setpoint waveform 600 in an ongoing process with high resolution and fast updates, thus outputting a streaming setpoint waveform that is streamed to the control module of the controller, thus implementing real-time streaming setpoint input to the controller's control signal in this example a robust, free, and arbitrarily shaped streaming setpoint waveform.
[0059] FIG. 7 shows a graph of a setpoint waveform 700 according to another illustrative example. The setpoint waveform 600 is an example of a linear interpolation of seed waveform data used to generate the setpoint waveform 600 by the setpoint waveform streaming processing module, although the setpoint waveform streaming processing module may also generate and output a full waveform based on the received seed waveform data using any of several other interpolation formats. In some examples, the setpoint waveform streaming processing module may process the incoming (or received) seed waveform data according to, for example, a stairstep interpolation method. The setpoint waveform 700 shown in FIG. 7 is an example of a full waveform that the setpoint waveform streaming processing module may generate by applying a stairstep interpolation method to a received seed waveform based on receiving stairstep interpolation parameters and performing the most appropriate stairstep interpolation on the seed waveform data. In some examples, the setpoint waveform 700 shown in Figure 7 may be a waveform generated according to a stepwise interpolation method based on the same seed waveform data used to generate the waveform 300 of Figure 3, with the difference being that the waveform 300 is generated by the setpoint waveform streaming processing module using linear interpolation rather than stepwise interpolation. These are thus two examples of substantially different waveforms that the setpoint waveform streaming processing module may generate from the same seed waveform using different interpolation methods as may be indicated by the interpolation parameters. In addition to these two examples, many other different waveforms may also be generated from the same seed waveform by the setpoint waveform streaming processing module of the present disclosure using other types of interpolation methods.
[0060] FIG. 8 shows a graph of a setpoint waveform 800 according to another illustrative example. The setpoint waveform 800 is another exemplary setpoint waveform that the setpoint waveform streaming processing module of the present disclosure may generate. The setpoint waveform 800 additionally demonstrates how the setpoint waveform streaming processing module of the present disclosure may generate a waveform of any arbitrary shape. The setpoint waveform streaming processing module of the present disclosure may generate a waveform that starts at, below, or above the setpoint in any relationship to the setpoint, and then approaches the setpoint with or without overshoot or undershoot, and may achieve other arbitrary behavior relative to the setpoint. The setpoint waveform 800 of FIG. 8 also demonstrates how the setpoint waveform streaming processing module of the present disclosure may generate a waveform that, in this illustrative example, starts below the setpoint, drops further below the setpoint, and then rises exponentially and overshoots the setpoint before settling on the setpoint before transitioning to other states and other behaviors in other states.
[0061] FIG. 9 shows a graph of a setpoint waveform 900 according to another illustrative example. The setpoint waveform 900 is another exemplary setpoint waveform that the setpoint waveform streaming processing module of the present disclosure may generate. The setpoint waveform 900 demonstrates another example of how the setpoint waveform streaming processing module of the present disclosure may generate a waveform of any arbitrary shape. The setpoint waveform 900 demonstrates how the setpoint waveform streaming processing module of the present disclosure may generate a waveform that starts above the setpoint, drops sharply toward the setpoint, and undershoots the setpoint before settling upward toward the setpoint. The setpoint waveform 900 also demonstrates how the setpoint waveform streaming processing module of the present disclosure may generate a waveform for a state that ends the state by exponentially rising above the setpoint to a final value equal to the initial value, according to this illustrative example. In any of a wide variety of examples, the setpoint waveform streaming prototype module (e.g., performed by a CPU) may maximize (or attempt to maximize or promote) information characteristics such as density, accuracy, and / or precision of information about the desired waveform, and may transmit data about the seed waveform in a form that may not be equally spaced in time or normalized, and the setpoint waveform streaming processing module (e.g., performed by an FPGA) may process the data received about the seed waveform, generate a setpoint waveform, scale and interpolate the data, and process the seed waveform data uniformly and in real time to generate a complete waveform (including with normalization and with uniformity and high resolution) that accurately and precisely reproduces the desired waveform.
[0062] 10 depicts a flow chart for an example method 1000 for operation of a controller (such as the controller 203 of FIG. 2 in another aspect of the disclosure, or a controller including a setpoint waveform streaming prototyping module 112 and a setpoint waveform streaming processing module 122 as in FIG. 1). The method 1000 includes receiving (1010) an input indicative of a desired setpoint waveform. Receiving the input indicative of the desired setpoint waveform may be performed, executed, implemented, or embodied by the setpoint waveform streaming prototyping module 112 executing on a CPU or other pseudo real-time processor, or in various examples by or on one or more CPUs or other pseudo real-time processors, or other modules, applications, processors, devices, or systems, and in some examples by another type of module or application that receives input from the setpoint control UI system 102 or other systems, modules, devices, or objects to communicate the input. The method 1000 further includes generating a data package (1020) based at least in part on an input indicative of a desired setpoint waveform, the data package comprising a plurality of points, an interpolation method, and one or more interpolation parameters. The data package may comprise a seed waveform tensor or other waveform data package in various examples, and in various examples, the data package may be generated and output by the setpoint waveform streaming prototype module 112. The data package may comprise any set of points indicative of any waveform possibly considered by an arbitrary user, may comprise any type of interpolation method, including any of those set forth in this disclosure, or any other interpolation method, and may comprise any type of applicable interpolation parameters capable of functioning as parameters of the applicable interpolation method. It will be understood by those skilled in the art that "comprising an interpolation method" has the meaning that it may include comprising information indicative of the interpolation method. The method 1000 further includes generating a setpoint waveform (1030) based at least in part on the data package.Generating the setpoint waveform based at least in part on the data package may, in various examples, be performed by the setpoint waveform streaming processing module 122, or other modules or applications running by or on one or more FPGAs or other real-time processors, or other modules, applications, processors, devices, or systems.
[0063] 11 depicts a block diagram of an exemplary computing system 1800 that may embody, control, or execute any of the various embodiments of the setpoint waveform streaming system 1822 in various embodiments of the present disclosure, as well as the other systems, methods, and apparatus disclosed herein. For example, the computing system 1800 may serve as an embodiment of the pseudo real-time processor 104 and real-time processor 106 of FIG. 1, or the controller 203 as depicted in and described above with reference to FIG. 2. As a further example, the computing system 1800 may implement, execute, or embody any method of generating waveforms 300, 400, 500, 600, 700, 800, and / or 900 as depicted diagrammatically in FIGS. 3-9, and method 1000 as shown in FIG. 10 (all respectively described above with reference thereto), as well as any other equivalent method, or method of generating any other waveform.
[0064] The computing system 1800 may be a server, such as a web server or an application server. The computing system 1800 may also be any server for providing set point waveform streaming applications in various examples, including a virtual server that may be launched from or incorporate any number of computing devices. The computing devices may operate as all or part of a real or virtual server, and may be or incorporate a workstation, server, mainframe computer, notebook or laptop computer, desktop computer, tablet, smartphone, or any type of other programmable data processing device. Other implementations of the computing system 1800 may include computers having capabilities or formats other than or beyond those described herein.
[0065] In the illustrative example of Figure 18, computing system 1800 includes a communication bus 1882 that provides communication between one or more processors 1884, one or more memory devices 1886, one or more persistent data storage devices 1888, one or more communication units 1890, and one or more input / output (I / O) units 1892. Communication bus 1882 may include a dedicated system bus, a general-purpose system bus, multiple buses arranged in a hierarchical configuration, any other type of bus, bus network, switch fabric, or other interconnection technology. Communication bus 1882 supports the transfer of data, commands, and other information between various subsystems of computing system 1800.
[0066] The one or more processors 1884 may comprise a programmable central processing unit (CPU) configured to execute programmed instructions stored in one or more memory devices 1886. In another illustrative example, the one or more processors 1884 may be implemented using one or more heterogeneous processor systems in which a main processor exists with secondary processors on a single chip. This may include a CPU and an FPGA on a single integrated circuit chip, or other examples of pseudo-real-time processors and real-time processors on a single chip, which may potentially embody and function as an implementation of the pseudo-real-time processor 104 and real-time processor 106 as depicted in FIG. 1, which also includes additional processing devices, processing infrastructure, and / or other processing and other resources. The computing system 1800 may also embody and function as an implementation of the controller 200 of FIG. 2, in some examples. In another illustrative example, the one or more processors 1884 may be a symmetric multi-processor system including multiple processors of the same type. The one or more processors 1884 may be a reduced instruction set computing (RISC) microprocessor, a x86 compatible processor, or any other suitable processor. In various examples, the one or more processors 1884 may include, for example, a multi-core processor. The one or more processors 1884 may include, for example, multiple processing chips on a single die, and / or multiple dies on a single package or substrate. The one or more processors 1884 may also include, for example, one or more levels of integrated cache memory. In various examples, the one or more processors 1884 may comprise one or more CPUs distributed across one or more locations.
[0067] The data storage 1896 comprises one or more memory devices 1886 in communication with the one or more processors 1884 over a communication bus 1882, and one or more persistent data storage devices 1888. The memory devices 1886 may comprise one or more random access semiconductor memory (RAM) devices for storing application data, i.e., computer program data, for processing. Although the memory devices 1886 are conceptually depicted as a single monolithic block in FIG. 11, in various examples the memory devices 1886 may be located within a hierarchy of caches and other memory devices, within a single physical location, or distributed across multiple physical systems in various configurations. Although memory device(s) 1886 are depicted as physically separate from one or more processors 1884 and other elements of computing system 1800, memory device(s) 1886 may equally refer to any intermediate or cache memory anywhere throughout computing system 1800, including cache memory proximate to or integrated with one or more processors 1884 or individual processing cores of one or more processors 1884.
[0068] The persistent data storage device 1888 may include one or more hard disk drives, solid state drives, flash drives, rewritable optical disk drives, magnetic tape drives, or any combination of these or other data storage media. The persistent data storage device 1888 may store computer-executable instructions for an operating system or application files comprising computer-readable program code, program code, data structures, or data files, and any other type of data. These computer-executable instructions may be loaded from the persistent data storage device 1888 into the memory device 1886 and read and executed by one or more processors 1884 or other processors. The data storage device 1896 may also include any other hardware elements capable of temporarily and / or persistently storing information, such as, for example, but not limited to, data, program code in a functional form, and / or other suitable information.
[0069] The persistent data storage device 1888 and the memory device 1886 are examples of physical, tangible, non-transient computer-readable data storage devices. The data storage device 1896 may include any of a variety of forms of volatile memory that may require active power and periodic electrical refresh to maintain data in the memory, but those skilled in the art will recognize that this also constitutes an example of a physical, tangible, non-transient computer-readable data storage device. Executable instructions may be stored on a non-transient medium when the program code is loaded, stored, relayed, buffered, or cached (including only for a short duration or only in a volatile memory format) on a non-transient physical medium or device. In these examples, any form of memory, data storage device, buffer, cache, or any other device or type of memory or data storage mechanism of any duration may constitute a physical, tangible, non-transient computer-readable medium comprising computer-executable instructions that embody and / or implement examples of the present disclosure.
[0070] The one or more processors 1884 may be suitably programmed to read, load, and execute computer-executable instructions and / or computer-readable program code for the setpoint waveform streaming system 1822, as described in further detail above. For purposes of this disclosure, the term "program code" may comprise computer-executable instructions. This program code may be stored on a memory device 1886, a persistent data storage device 1888, or elsewhere within the computing system 1800. This program code may take the form of executable program code 1804 that is also stored on a computer-readable medium 1802 included within a computer program product 1810, as described further below, and may be transferred or communicated from the computer program product 1810 to the computing system 1800 through any of a variety of local or remote means and enabled for execution by the one or more processors 1884.
[0071] The operating system may provide functions such as device interface management, memory management, and multiple task management. The operating system may be a Unix-based operating system, a non-Unix-based operating system, a network operating system, a real-time operating system (RTOS), or any other suitable operating system. The one or more processors 1884 may be suitably programmed to read, load, and execute instructions of the operating system.
[0072] The communications unit 1890, in this example, provides for communication with other computing or communication systems or devices. The communications unit 1890 may provide communication through the use of physical and / or wireless communication links. The communications unit 1890 may include a network interface card to interface with a local area network (LAN), an Ethernet adapter, a token ring adapter, a modem for connecting to a transmission system such as a telephone line, or any other type of communications interface. The communications unit 1890 may be used to operatively connect many types of peripheral computing devices to the computing system 1800, such as printers, bus adapters, and other computers. The communications unit 1890 may be implemented, for example, as an expansion card or embedded within a motherboard.
[0073] Input / output unit 1892 may support suitable devices for input and output of data using other devices that may be connected to computing system 1800, such as a keyboard, a mouse or other pointer, a touch screen interface, an interface for a printer or any other peripheral device, a removable magnetic or optical disk drive (including CD-ROM, DVD-ROM, or Blu-ray), a universal serial bus (USB) receptacle, or any other type of input and / or output device. Input / output unit 1892 may also include, in various examples, any type of interface for video output in any type of video output protocol and any type of monitor or other video display technology. Some of these examples may overlap with each other or with the illustrative components of communications unit 1890 or data storage 1896. Input / output unit 1892 may also include appropriate device drivers for any type of external device, or such device drivers may reside elsewhere on computing system 1800, as appropriate.
[0074] Computing system 1800 also includes a display adapter 1894, in this illustrative example, which provides one or more connections for one or more display devices, such as display device 1898, which may include any of various types of display devices. Some of these examples may overlap with illustrative components of communication unit 1890 or input / output unit 1892. Input / output unit 1892 may also include appropriate device drivers for any type of external device, or such device drivers may reside elsewhere on computing system 1800, as appropriate. Display adapter 1894, in various examples, may include one or more video cards, one or more graphics processing units (GPUs), one or more video-enabled connection ports, or any other type of data connector capable of communicating video data. Display device 1898, in various examples, may be any type of video display device, such as a monitor, television, or projector.
[0075] The input / output unit 1892 may include a drive, socket, or receptacle for receiving a computer program product 1810, which comprises a tangible, non-transitory computer readable medium 1802 having executable program code 1804 stored thereon. For example, the computer program product 1810 may be, by way of illustrative example, a CD-ROM, a DVD-ROM, a Blu-ray disc, a magnetic disk, a USB stick, a flash drive, or an external hard disk drive, or any other suitable data storage technology.
[0076] The computer readable medium 1802 may include any type of optical, magnetic, or other physical medium that physically encodes the executable program code 1804 as a binary sequence of different physical states within each unit of memory, which, when read by the computing system 1800, induces physical signals that are read by the one or more processors 1884 that correspond to physical states of the underlying data storage elements of the computer readable medium 1802, and induces corresponding changes in physical states in the one or more processors 1884. The physical program code signals may be modeled or conceptualized as computer-readable instructions at any of various levels of abstraction, such as a high-level programming language, assembly language, or machine language, but ultimately comprise a series of electrical and / or magnetic interactions that physically induce a change in the physical state of the one or more processors 1884, thereby physically reconfiguring the one or more processors 1884 in a manner that causes the computing system 1800 to physically assume new capabilities that it did not have until its physical state was changed, by loading the executable instructions contained in the executable program code 1804, and causing or configuring the one or more processors 1884 to generate physical output corresponding to the computer-executable instructions.
[0077] In some illustrative examples, executable program code 1804 may be downloaded from another device or computer system, via a network, to data storage device 1896 for use within computing system 1800. Executable program code 1804 comprising computer-executable instructions may be communicated or transferred from computer readable medium 1802 to computing system 1800 through a hardline or wireless communication link to communication unit 1890 and / or through a connection to input / output unit 1892. Computer readable medium 1802 comprising executable program code 1804 may be located at a separate or remote location from computing system 1800, may be located anywhere, including at any remote geographic location anywhere around the world or in orbit, and may relay executable program code 1804 to computing system 1800 via one or more communications links of any type, such as the Internet and / or other packet data networks. Executable program code 1804 may be communicated, for example, via a wireless Internet connection or over a wireless LAN, Bluetooth, or other network. TM ,Wifi TM , or via a shorter range direct wireless connection such as an infrared connection. Any other wireless or remote communication protocol may be used in other implementations.
[0078] The communications links and / or connections may include wired and / or wireless connections, in various illustrative examples, and the executable program code 1804 may be transmitted from the source computer readable medium 1802 via a non-tangible medium, such as a communications link or wireless transmission, containing the executable program code 1804. En route from its original source medium to the computing system 1800, the executable program code 1804 may be stored, more or less temporarily or permanently, on any number of intermediate tangible physical computer readable devices and media, such as any number of physical buffers, caches, main memories, or data storage components of a server, gateway, network node, mobility management entity, or other network asset.
[0079] Various exemplary embodiments of the present disclosure may be in the form of a system, method, and / or computer program product. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform aspects of the embodiments of the present disclosure.
[0080] A computer readable storage medium can be a tangible device that can hold and store instructions for use by an instruction execution device. A computer readable storage medium can be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing, any other type of storage device, or any combination of any of the foregoing with any other system. A non-exhaustive list of more specific examples of computer readable storage media includes the following: portable computer diskettes, hard disks, random access memories (RAM), read only memories (ROM), erasable programmable read only memories (EPROM or flash memory), static random access memories (SRAM), portable compact disk read only memories (CD-ROM), digital versatile disks (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or raised structures in grooves with instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage media as used herein should not be construed as being ephemeral signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through wires.
[0081] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium in the respective computing / processing device.
[0082] The computer readable program instructions for performing the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or source or object code written in any combination of one or more programming languages, including object oriented programming languages such as C++ or Java, imperative programming languages such as C, specialized languages such as Hardware Description Languages (HDLs), Lisp programming languages such as Common Lisp, Racket, or Clojure, other functional programming languages such as Haskell or Erlang, or multi-paradigm languages such as Python or Rust. The computer readable program instructions may be executed completely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or completely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN) or other connection, or the connection may be made to an external computer (e.g., through the Internet using an Internet Service Provider (ISP)). In some embodiments, electronic circuitry, including, for example, programmable logic circuitry, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer readable program instructions and personalize the electronic circuitry by utilizing state information of the computer readable program instructions to implement aspects of embodiments of the present disclosure.
[0083] Aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to examples of the present disclosure. Each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable and / or computer-executable program instructions.
[0084] These computer-readable and / or computer-executable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions executing via the processor of the computer or other programmable data processing apparatus create means for implementing the functions / acts specified in the block or blocks of the flowcharts and / or block diagrams. These computer- and / or computer-executable readable program instructions may also be stored in a computer-readable storage medium that may instruct a computer, programmable data processing apparatus, and / or other device to function in a particular manner, such that a computer-readable storage medium having instructions stored thereon comprises an article of manufacture comprising instructions that implement an aspect of the functions / acts specified in the block or blocks of the flowcharts and / or block diagrams. The computer readable and / or computer executable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device and cause a computer-implemented process to be a series of operable steps to be performed on the computer, other programmable data processing apparatus, or other device, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions, acts, or steps specified in a block or blocks of the flowcharts and / or block diagrams.
[0085] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagram may represent a module, partition, or part of an instruction, which comprises one or more executable instructions for implementing the specified logical function. In some implementations, the functions noted in the blocks may occur in a different order than that noted in the figures. For example, in a particular example depicted in a particular figure, two blocks shown in succession may in fact be executed substantially in parallel, or the blocks may sometimes be executed in a reverse or overlapping order, depending on the functionality involved. Each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may also be implemented by a special-purpose hardware-based system that performs the specified functions or actions, or performs a combination of special-purpose hardware and computer instructions.
[0086] The various illustrative logic blocks, modules, circuits, and algorithm steps described in connection with the examples disclosed herein may be implemented as electronic hardware, computer software, or a combination of both. To clearly illustrate this interchangeability of hardware and software, the various illustrative components, blocks, modules, circuits, and steps are described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in various ways for each particular application, but any such specific implementation decisions and details are not intended to cause, constitute, or imply a departure from the scope of the present invention.
[0087] The various illustrative logic blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed using a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof, designed to perform the functions described herein. A general purpose processor may be a microprocessor, or any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
[0088] FIG. 12 depicts a conceptual block diagram of exemplary physical components that may implement, execute, or embody one or more aspects of various embodiments of the setpoint waveform streaming system in various aspects of the disclosure, as well as other systems, methods, and apparatuses disclosed herein. As shown, in this embodiment, a display 1412 and a non-volatile memory 1429 are coupled to a bus 1422 that is also coupled to a random access memory ("RAM") 1424, a processing portion 1426 (comprising N processing components), a field programmable gate array (FPGA) 1427, and a transceiver component 1428 including N transceivers. Although the components depicted in FIG. 12 represent physical components, FIG. 12 is not intended to be a detailed hardware diagram, and thus many of the components depicted in FIG. 12 may be realized by a common structure or distributed among additional physical components. Additionally, other existing and yet to be developed physical components and architectures may be utilized to implement the functional components described with reference to FIG. 12.
[0089] The display 1412 generally operates to provide a user interface for a user, and in some implementations, the display 1412 is realized by a touch screen display. For example, the display 1412 can be used to control and interact with the components described herein. In general, the non-volatile memory 1429 is a non-transient memory that functions to store (e.g., persistently store) data and machine-readable (e.g., processor-executable) code (including executable code associated with enabling the methods described herein). In some embodiments, for example, the non-volatile memory 1429 includes boot loader code, operating system code, file system code, and / or non-transient processor-executable code to facilitate execution of the methods described herein.
[0090] In some implementations, the non-volatile memory 1429 may be realized by a flash memory (e.g., NAND or ONENAND memory). In other examples, other memory types may be utilized as well. Some examples may execute code from the non-volatile memory 1429, while in other examples, executable code in the non-volatile memory may typically be loaded into RAM 1424 and executed by one or more of the N processing components in the processing portion 1426.
[0091] In operation, the N processing components in communication with the RAM 1424 may generally operate to execute instructions stored in the non-volatile memory 1429 to realize the functionality of the setpoint waveform streaming system described herein. For example, non-transient processor-executable instructions for enabling the methods described herein may be persistently stored in the non-volatile memory 1429 and executed by the N processing components in communication with the RAM 1424. The processing portion 1426 may include a video processor, a digital signal processor (DSP), a graphics processing unit (GPU), and other processing components.
[0092] Additionally, or in other examples, a field programmable gate array (FPGA) 1427 may be configured to enable one or more aspects of the methodologies described herein. For example, non-transient FPGA configuration instructions may be persistently stored in non-volatile memory 1429 and accessed by FPGA 1427 (e.g., during power-up) to configure FPGA 1427.
[0093] The input component 1431 may generally operate to receive signals (e.g., from a setpoint control UI system, as described above). The output component 1432 may generally operate to provide one or more digital and / or analog signals (e.g., to a control module as described herein) to enable operational aspects of the setpoint waveform streaming system and / or other systems described herein.
[0094] The depicted transceiver component 1428 includes N transceiver chains, which may be used to communicate with external devices (e.g., an external controller) over a wireless or wired network. Each of the N transceiver chains may represent a transceiver associated with a particular communication scheme (e.g., Wifi, Ethernet, Profibus, etc.).
[0095] Method 1000 and other methods of the present disclosure may include other steps or variations in various other embodiments. Any part or all of method 1000 may be performed by or embodied in hardware and / or performed by a controller, CPU, FPGA, SoC, measurement and control multiprocessor system on a chip (MPSoC), which may include both a CPU and FPGA, and / or other elements together in one integrated SoC or other processing or computing device that processes executable instructions in controlling other associated hardware, devices, systems, or products in performing, implementing, or embodying various subject matter of the method.
[0096] Setpoint waveform streaming systems, devices, and methods are thus shown and described herein in various fundamental aspects, and in various selected illustrative applications, architectures, techniques, and methods for setpoint waveform streaming. Those skilled in the art will be sufficiently informed with an informed simplification to understand and practice the broad set of additional applications, architectures, techniques, and methods for setpoint waveform streaming that are encompassed by this disclosure and by the claims set forth below.
[0097] As used herein, the recitation of "at least one of A, B, and C" is intended to mean "either A, B, C, or any combination of A, B, and C." The description of the disclosed examples is provided to enable any person skilled in the art to understand how to make or use the subject matter of the present disclosure. Various modifications to these embodiments will be readily apparent to those skilled in the art based on this disclosure, and the generic principles defined within this specification may be applied to other examples without departing from the spirit or scope of the present disclosure. Thus, the present disclosure is not limited to the embodiments shown herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
[0098] The present disclosure and many of its attendant advantages will be understood from the foregoing description, and various changes may be made in the form, construction, and arrangement of components without departing from the disclosed subject matter or sacrificing all of its significant advantages. The forms described are merely illustrative, and the following claims encompass and include a wide range of embodiments, including a wide range of examples, that encompass any such changes in the form, construction, and arrangement of components as described herein.
[0099] Although the present disclosure has been described with reference to various examples, it will be understood that these examples are illustrative and that the scope of the present disclosure is not limited thereto. All subject matter described herein is presented in the form of illustrative non-limiting examples, and not as exclusive implementations, regardless of whether they are explicitly declared as examples as described. Many variations, modifications, and additions are possible within the scope of the examples of the present disclosure. More generally, the examples according to the present disclosure are described in the context of specific implementations. Functionality may be separated or combined in blocks differently, or described using different terminology, in various examples of the present disclosure, without departing from the spirit and scope of the present disclosure and the following claims. These and other variations, modifications, additions, and improvements may fall within the scope of the present disclosure as defined in the following claims.
Claims
1. 1. A system comprising: a first module configured to receive an input indicative of a desired setpoint waveform and to output seed waveform points, an interpolation method, and one or more interpolation parameters based on the input indicative of the desired setpoint waveform; a second module; Equipped with the second module is configured to receive the seed waveform points, the interpolation method, and the one or more interpolation parameters from the first module, use the interpolation method to interpolate the seed waveform points, and output a streaming setpoint waveform based at least in part on the seed waveform points, the interpolation method, and the one or more interpolation parameters.
2. a first processor operating at a first response processing rate for processing a response to the input; a second processor operating at a second response processing rate for processing responses to the input; Furthermore, the second response processing speed is faster than the first response processing speed; the first module is configured to execute on the first processor; The system of claim 1 , wherein the second module is configured to execute on the second processor.
3. The system of claim 2 , wherein the first processor comprises a pseudo real-time processor and the second processor comprises a real-time processor.
4. The system of claim 3 further comprising a controller, wherein both the pseudo real-time processor and the real-time processor are included in the controller.
5. 5. The system of claim 4, wherein the controller is included in a radio frequency (RF) generator, the RF generator also comprising an RF amplifier, and the controller is configured to output a control signal to the RF amplifier that is based at least in part on the streaming setpoint waveform.
6. The system described in claim 1, wherein the first and second modules execute on a first processor.
7. The system described in claim 1, wherein the number of first points in the seed waveform points is less than the number of second points in the streaming setting points.
8. The system of claim 1 , wherein the second module is configured to output the streaming setpoint waveform to a control module.
9. The system of claim 8 , further comprising a real-time processor, wherein both the second module and the control module are configured to execute on the real-time processor.
10. 2. The system of claim 1, wherein the seed waveform points, the interpolation method, and the one or more interpolation parameters comprise sufficient information for the second module to output the streaming setpoint waveform, whereby the streaming setpoint waveform matches, to within a nominal resolution, the desired setpoint waveform as indicated by the input indicating the desired setpoint waveform.
11. 2. The system of claim 1, wherein the interpolation method comprises at least one of nearest neighbor interpolation, next nearest neighbor interpolation, previous nearest neighbor interpolation, hold sample interpolation, linear interpolation, exponential interpolation, sum of sines interpolation, Fourier series interpolation, cubic interpolation, Chebyshev polynomial interpolation, Hermite polynomial interpolation, Gaussian interpolation, Weibull interpolation, and spline interpolation.
12. 1. A method, comprising: receiving, by one or more processors, an input indicative of a desired setpoint waveform; generating, by the one or more processors, a data package based at least in part on the input indicative of the desired setpoint waveform, the data package comprising a plurality of points, an interpolation method, and one or more interpolation parameters; generating, by the one or more processors, a setpoint waveform based at least in part on the data package; A method comprising:
13. 13. The method of claim 12, wherein generating the data package is performed by a first module and generating a setpoint waveform based at least in part on the data package is performed by a second module, the first module being further configured to output the data package to the second module, and the second module being further configured to output the setpoint waveform to a control module.
14. 14. The method of claim 13, wherein the first module is configured to run on a CPU or other pseudo real-time processor and the second module is configured to run on an FPGA or other real-time processor.
15. 1. A computing system, comprising: one or more processing devices, one or more tangible computer readable memory devices, and one or more tangible computer readable data storage devices; program instructions for receiving an input indicative of a desired setpoint waveform, stored on the one or more data storage devices for execution by the one or more processing devices using the one or more memory devices; program instructions for generating a data package based at least in part on the input indicative of the desired setpoint waveform, the data package comprising a plurality of points, an interpolation method, and one or more interpolation parameters, stored on the one or more data storage devices for execution by the one or more processing devices using the one or more memory devices; program instructions stored on the one or more data storage devices for execution by the one or more processing devices using the one or more memory devices for generating a setpoint waveform based at least in part on the data package; A computing system comprising:
16. the program instructions for generating the data package are included in a first module; the program instructions for generating a setpoint waveform based at least in part on the data package are included in a second module; the program instructions included in the first module are further configured to output the data package to the second module; 16. The computing system of claim 15, wherein the program instructions included in the second module are further configured to output the setpoint waveform to a control module.
17. the one or more processing devices include a CPU or other pseudo-real-time processor and an FPGA or other real-time processor; the program instructions included in the first module are configured to execute on the CPU or other pseudo-real-time processor; 17. The computing system of claim 16, wherein the program instructions included in the second module are configured to execute on the FPGA or other real-time processor.