Embodiments relate to methods and devices that utilize register sets to implement operating parameters. More particularly, embodiments relate to methods and devices that utilize hardware to move blocks of operating parameter data from a memory device to a set of registers.
Active devices such as active implantable medical devices that generate electrical stimulation signals utilize a set of registers to hold operating parameter data that is implemented by a given component of the device. For instance, an implantable medical device may include a stimulation engine that creates stimulation waveforms based on waveform parameters that are stored in registers of the stimulation engine. As another example, the implantable medical device may include measurement circuitry to measure operational data such as impedance of a stimulation pathway or voltage of an on-board battery.
In order to control the operation of the component, such as a stimulation engine or measurement circuitry, in many cases the parameter data present in the registers is changed according to a prescribed sequence. For example, for a stimulation engine, the pattern of stimulation pulses may be changed in order to ramp up stimulation amplitudes and then ramp them back down. Other examples include changing the rate and/or pulse width of stimulation pulses, controlling active recharge pulses, and so on.
An active device often utilizes firmware to implement device programming. Firmware programming is implemented by one or more hardware components such as a microprocessor. The term firmware may be used herein without further reference to any underlying hardware for ease of discussion. Therefore, it is to be understood that discussion of actions taken by firmware herein are referring to the actions taken by the hardware implementing the firmware. Firmware is conventionally responsible for changing the operating parameters in the set of registers in order to control the component of interest such as the stimulation engine. However, for circumstances such as controlling the generation of waveforms, the firmware must synchronize the effort to change the parameter values with the operation of the component being controlled so that the changes are able to be implanted by the component at the appropriate time. For instance, in the case of a medical device that provides stimulation therapy, the firmware operations may be on a separate clock from and be asynchronous to the stimulation therapy. The firmware therefore must synchronize to the stimulation being provided for each change of data needed by the stimulation engine in order for the firmware to provide the data necessary to produce the next stimulation waveform amplitude. This creates a significant amount of overhead for the firmware that may overburden the firmware and prevent the firmware from performing other desired functions.
Embodiments address issues such as these and others by providing a block moving hardware based controller that moves a block of operating parameter data from memory to a set of registers. The block moving hardware based controller receives one or more triggers that causes one or more blocks of the operating parameters to be moved. Multiple individual block mover components of the controller may move respective blocks, each responsive to a dedicated trigger or to a same trigger. Furthermore, a given block mover or individual block mover component may have multiple selectable triggers. Each block of data in memory may include data that is indicative of the block size to cause the block moving hardware based controller to move the proper block size to the set of registers. The block moving hardware based controller may have one or more memory devices to access, and the firmware may write to one memory while the block moving hardware based controller may read from another.
Embodiments provide a method of controlling parameters of an active device that involves writing a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a memory device of a block moving hardware-based controller that comprises a first block mover component and a second block mover component, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves receiving a first trigger at the first block mover component and not at the second block mover component. In response to receiving the first trigger, the method involves reading by the first block mover component a first block navigation datum from the memory device for a first block of the memory device and reading a number of parameter data and address value pairs corresponding to the first block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing by the first block mover component the parameter data values that have been read from the memory device by the first block mover component to a set of registers corresponding to the address values that have been read from the memory device by the first block mover component. The method further involves receiving a second trigger at the second block mover component and not at the first block mover component. In response to receiving the second trigger, the method involves reading by the second block mover component a second block navigation datum from the memory device for a second block of the memory device and reading a number of parameter data and address value pairs corresponding to the second block navigation datum. Upon reading the number of parameter data and address value pairs corresponding to the second block navigation datum, the method involves writing by the second block mover component the parameter data values that have been read from the memory device by the second block mover component to a set of registers corresponding to the address values that have been read from the memory device by the second block mover component.
Embodiments provide a method of controlling parameters of an active device that involves writing a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a memory device of a block moving hardware-based controller that comprises a first block mover component and a second block mover component, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves receiving a trigger from a trigger source at the first block mover component and at the second block mover component. In response to receiving the trigger, the method involves reading by the first block mover component a first block navigation datum from the memory device for a first block of the memory device and reading a number of parameter data and address value pairs corresponding to the first block navigation datum. Upon reading the number of parameter data and address value pairs of the first block of the memory device, the method involves writing by the first block mover component the parameter data values that have been read from the memory device by the first block mover component to a set of registers corresponding to the address values that have been read from the memory device by the first block mover component.
Embodiments provide a method of controlling parameters of an active device that involves writing a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a first memory portion of a block moving hardware-based controller, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves receiving a first trigger at the controller. In response to receiving the first trigger, the method involves reading a first block navigation datum from the first memory device for a first block of the first memory portion and reading a number of parameter data and address value pairs corresponding to the first block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the first memory portion to a set of registers corresponding to the address values. While reading the number of parameter data and address value pairs from the first memory device, the method involves writing a second plurality of block navigation data and corresponding parameter data and address value pairs to locations within a second memory portion of a block moving hardware-based controller. The method further involves receiving a second trigger at the controller. In response to receiving the second trigger, the method involves reading a second block navigation datum from the second memory portion for a second block of the second memory portion and reading a number of parameter data and address value pairs corresponding to the second block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the second memory portion to a set of registers corresponding to the address values read from the second memory portion. While reading the number of parameter data and address value pairs from the second memory portion, the method involves writing a third plurality of block navigation data and corresponding parameter data and address value pairs to locations within the first memory portion.
Embodiments provide a method of controlling parameters of an active device that involves writing a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a first memory device of a block moving hardware-based controller, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves receiving a first trigger at the controller. In response to receiving the first trigger, the method involves reading a first block navigation datum from the first memory device for a first block of the memory device and reading a number of parameter data and address value pairs corresponding to the first block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the first memory device to a set of registers corresponding to the address values. The method further involves writing a second plurality of block navigation data and corresponding parameter data and address value pairs to locations within a second memory device of a block moving hardware-based controller. The method involves receiving a second trigger at the controller. In response to receiving the second trigger, the method involves reading a second block navigation datum from the second memory device for a second block of the second memory device and reading a number of parameter data and address value pairs corresponding to the second block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the second memory device to a set of registers corresponding to the address values read from the second memory device.
Embodiments provide a method of controlling self-measurements within an active device that involves writing a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a memory device of a block moving hardware-based controller, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves receiving a trigger at the controller. In response to receiving the trigger, the method involves reading a block navigation datum from the memory device for a first block of the memory device and reading a number of parameter data and address value pairs corresponding to the block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the memory device to a set of registers corresponding to the address values, the set of registers being control registers of an analog to digital converter of a measurement circuit. The method involves receiving a signal to be measured via the measurement circuit and in accordance with the parameter data values in the set of registers, converting the signal to measurement data.
Embodiments provide a method of controlling an active device that involves writing by a firmware a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a memory device of a block moving hardware-based controller, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves outputting a first trigger from a first trigger source to a multiplexer that is coupled to the first trigger source, to a second trigger source, and to the controller. The method further involves outputting a second trigger from the second trigger source to the multiplexer. At the multiplexer, the method involves selecting one of the first trigger and the second trigger. The method further involves receiving the selected trigger at the controller. In response to receiving the selected trigger, the method involves reading a block navigation datum from the memory device for a first block of the memory device and reading a number of parameter data and address value pairs corresponding to the block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the memory device to a set of registers corresponding to the address values, the set of registers being control registers of an analog to digital converter of a measurement circuit.
Embodiments provide a method of controlling stimulation waveform generation in an active implantable medical device that involves writing a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a memory device of a block moving hardware-based controller, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves receiving a trigger at the controller. In response to receiving the trigger, the method involves reading a block navigation datum from the memory device for a first block of the memory device and reading a number of parameter data and address value pairs corresponding to the block navigation datum. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the memory device to a set of registers corresponding to the address values, the set of registers being control registers of a waveform generator circuit. The method further involves generating a waveform corresponding to the data values in the set of registers. Upon generating the waveform, the method involves re-writing the parameter data values of the waveform to the set of registers to repeat the generating of the waveform when both a control condition occurs and a value in a control register of the block moving hardware-based controller indicates that the waveform should repeat when the control condition occurs by the block moving hardware-based controller re-writing the parameter data values of the waveform to the set of registers. Upon generating the waveform, the method involves stopping the block moving hardware-based controller from further writing to the registers of the set when both the control condition occurs and the value in the control register indicates that the block moving hardware-based controller should terminate when the control condition occurs so that a final pulse of the waveform is repeated until parameter data values of a waveform are written to the register set.
Embodiments provide a method of controlling an active device that involves writing a starting address value to a storage location. The method further involves writing a plurality of block navigation data and corresponding parameter data and address value pairs to locations within a memory device of a block moving hardware-based controller beginning at the starting address, each block navigation datum and corresponding parameter data and address value pairs defining a block. The method further involves receiving a trigger at the controller. In response to receiving the trigger, the method involves reading a block navigation datum from the memory device for a first block of the memory device and reading a number of parameter data and address value pairs corresponding to the block navigation datum by starting at an address of the memory corresponding to the starting address value. Upon reading the number of parameter data and address value pairs, the method involves writing the parameter data values that have been read from the memory device to a set of registers corresponding to the address values.
Embodiments provide block moving hardware based controllers that receive a trigger to move a block of data from memory to a set of registers. This dedicated hardware based controller maintains synchronization with operations of components being controlled by the data values in the set of registers while relieving other devices such as firmware from moving the data to the registers. The data of a given block may indicate the block size and the hardware based controller may then read block navigation data indicative of block size and move the block of data accordingly. The block moving hardware based controller may include multiple block mover components, each receiving its own trigger or sharing a trigger with one or more other block mover components. Furthermore, multiple triggers may exist for a given block mover component and the appropriate trigger is selected. Additionally, the block moving hardware based controller may have access to multiple memory portions or devices, allowing for firmware to write to one memory portion or device while the block moving hardware based controller reads from another memory portion or device.
The memory device 108 has an external memory interface 110 that allows the memory to be accessed by components external to the controller 102. For instance, a firmware component 112, which is one or more hardware components implementing firmware as previously discussed, may write to the memory device 108 via the external memory interface 110 in order to write data to a plurality of memory blocks. Other devices may write to the memory 108 rather than firmware 112, such as an external hardware controller, a programmer, and so forth. In addition to parameter data for controlling the component 114, the data being written to the memory blocks of the memory device 108 may include block navigation data that specifies the block size and interval data that specifies the number of triggers to occur before moving forward with reading and writing the next block of data. The contents of the memory blocks within the memory device 108 are discussed in more detail below with reference to
A trigger source 118 provides a trigger signal to the trigger input 105 of the block mover hardware component 104. The trigger source may be of various types. For instance, the trigger source may be a timer. As another example, the trigger source 118 may be a trigger output generated by the component 114. For example, the component 114 may be a stimulation engine that behaves as a state machine running in a loop where the completion of each loop results in generation of a trigger signal. As another example, the component 114 may include a stimulation efficacy feedback that acts as a trigger, where in one example a positive efficacy may result in no trigger being generated while a negative efficacy may produce a trigger provided to the block mover hardware component 104.
In this example, the component 114′ operates one block ahead of the controller 102 by including operating register sets 206, 208 in addition to the pending register sets 202, 204. The operating register sets 206, 208 hold the parameter data that was loaded into the pending register sets 202, 204 in the previous loop. Upon the block moving controller 102 being triggered to move data from the memory 108 to the pending registers 116, a value is also written to the update register 203 by the block moving controller 102 that triggers the component 114′ to move the parameter values from the pending register sets 202, 204 to the operating register sets 206, 208 at the next rate interval update trigger. The update register 203, being asserted upon the next rate interval trigger occurring, is represented as update register 207 showing that the update register 207 has resulted in the update of the operating registers 206, 208.
In this example, each output channel of the component 114′ has a waveform selector 210 that accesses any one of the operating registers 206, 208 for the particular output channel in order to implement the parameters of a selected waveform to produce the electrical waveform from the output channel. For instance, in an implantable medical device, the waveform selector 210 may choose the particular waveform to be implemented at a given time for a given electrode on an implantable medical lead. The selected waveform is represented in this depiction as a current waveform register 214. The operation of the waveform selector 210 is controlled by a master register set 212. The selected waveform of the current waveform register 214 and the waveform trigger specified by the master register set 212 defines the waveform state and waveform counter of the electrical waveform output 218 of the given output channel. Based on the specified delays between the current pulse and the next pulse, the waveform selector 210 then selects the next waveform register set to cause the next waveform to be output, and so on until the waveform sequence of the sets of registers is complete.
The component 114′ of this example that produces an electrical waveform includes a charge pump register set 244. This register set 244 dictates the charging of a bank 246 of hold capacitors that provide the electrical energy to produce each electrical waveform in the series of waveforms. The chare pump operation is not directly related to the block moving controller 102.
Each parameter data pair 312 includes a parameter address value and a parameter data value, where the address value specifies the pending register of register set 116 where the parameter data value should be written. The parameter data value specifies the characteristic of the operation of the component 114, such as a pulse amplitude, pulse width, pulse rate, and so forth where the component 114 generates a waveform. One of the parameter data and address data pairings corresponds to the update data that is moved to the update register 203 as in
This example also includes a dedicated memory location, such as a second memory location 310, that stores an interval count. In this example, the second memory location is paired with the first memory location 308 that stores the parameter count such that these two memory locations 308, 310 are in a designated location, namely, the first two locations of the block such that the block mover 104 is configured to read these first two memory locations to obtain the parameter and interval counts. The interval count specifies how many triggers should be received by the block mover 104 before reading and writing the next memory block to the pending registers 116. In this example, the memory block 302 specifies that the interval count is zero such that the block mover should not skip any trigger when moving the parameter data of memory block 304. Thus, once the block mover 104 has moved the parameter data of memory block 302 to the pending registers 116, then on the next rate interval block mover trigger, the block mover 104 moves the parameter data of block 304 to the pending registers 116. The memory block 304 specifies an interval count of 2 such that the block mover 104 skips two rater interval block mover triggers before reading the memory block 306 and writing those contents to the pending register set 116.
After reaching the end of a first specified delay 414 after the update trigger, the first waveform is produced that has a pulse 416 with a specified amplitude and width, then a specified delay 418, and then a recharge phase 420 which is specified as a passive recharge. Upon completion of a second specified delay 412 after the update trigger, the second waveform is produced that has a pulse 422 with a specified amplitude and width, then a specified delay 424, and then a recharge phase 426 which is specified as an active recharge. Upon completion of a third specified delay 410 after the update trigger, the third waveform is produced that has a pulse 428 with a specified amplitude and width, then a specified delay 430, and then a specified active recharge phase 432 of a given width and then a specified passive recharge phase 434. Upon completion of a fourth specified delay 408 after the update trigger, the fourth and final waveform of this update iteration is produced that has a pulse 436 with a specified amplitude and width, then a specified delay 438, and then a specified passive recharge phase 440.
Upon completion of a rate period 406, an update trigger of a next rate interval is generated that results in a waveform update 404, where pending registers 202, 204 are written to operating registers 206, 208. Parameter data in memory 108 is then written to the pending registers 206, 208 by the block mover 104 during this next rate interval at the appropriate block mover trigger, which may be the same as the trigger of the next rate interval such as WF0 or may be another trigger during the interval.
Relating
Any one of the waveforms WF0-WF3 may serve as the trigger source 118 of
Additionally, the block mover hardware components 1102, 1104, and 1106 have the interface to the set of registers 116 of the component 114, such as the stimulation engine or measurement circuit of an implantable medical device. As with the example of
The memory device 108 has the external memory interface 110 that allows the memory to be accessed by components external to the controller 102 such as the firmware component 112. The firmware 112 may write to the memory device 108 via the external memory interface 110 in order to write data to a plurality of memory blocks. As with prior examples, other devices may write to the memory 108 rather than firmware 112, such as an external hardware controller, a programmer, and so forth. In addition to parameter data for controlling the component 114, the data being written to the memory blocks of the memory device 108 may include block navigation data that specifies the block size and interval data that specifies the number of triggers to occur before moving forward with reading and writing the next block of data as discussed above in relation to
In this example, each of the multiple block mover components 1102, 1104, and 1106 has a dedicated trigger source 1108, 1110, 1112, respectively. Each trigger source 1108, 1110, 1112 of this example provides a trigger signal to the trigger input 1114, 1116, 1118, respectively, of the block mover hardware components 1102, 1104, 1106. Each of the trigger sources 1108, 1110, 1112 may be of various types. For instance, the trigger sources may be timers. As another example, the trigger sources may be trigger outputs generated by the component 114, such as a stimulation related trigger or stimulation efficacy related trigger. Considering each trigger input 1114, 1116, 1118 has a dedicated trigger source 1108, 1110, 1112, respectively, when trigger source 1108 provides a trigger to the component 1102, components 1104 and 1106 do not receive the trigger from trigger source 1108. Likewise, when trigger source 1110 provides a trigger to the component 1104, components 1102 and 1106 do not receive the trigger from trigger source 1110, and so on.
The multiple block mover components 1102, 1104, 1106 may be configured in such a way that each is responsible for loading a particular waveform pattern. For instance, there may be four block mover components and four waveform patterns that operate in a sequence with each block mover of the four being responsible for loading a block of memory corresponding to each of the four waveform patterns. In such a case, the trigger source of one block mover component may be triggered upon the completion of a block move by another of the block mover components and/or by the completion of a particular waveform pattern by the stimulation engine or other device. In other situations, each block mover component 1102, 1104, 1106 may be triggered by the independent sources but be triggered simultaneously for parallel operation to move multiple blocks from the memory 108 to the register set 116.
In order to have each block mover component 1102, 1104, 1106 move a particular block of data, each block mover component 1102, 1104, 1106 needs a starting address value corresponding to a starting address in memory for each block mover component. This allows each block mover component to proceed to the starting address corresponding to the assigned starting address value to read the corresponding block of memory including the block navigation datum and the parameter and address value pairs as described above in relation to
However, where there are multiple block mover components 1102, 1104, 1106, as in
Additionally, the block mover hardware components 1102, 1104, and 1106 have the interface to the set of registers 116 of the component 114, such as the stimulation engine or measurement circuit of an implantable medical device. Likewise, the memory device 108 has the external memory interface 110 that allows the memory to be accessed by components external to the controller 102 such as the firmware component 112. The firmware 112 may write to the memory device 108 via the external memory interface 110 in order to write data to a plurality of memory blocks. As with prior examples, other devices may write to the memory 108 rather than firmware 112, such as an external hardware controller, a programmer, and so forth. In addition to parameter data for controlling the component 114, the data being written to the memory blocks of the memory device 108 may include block navigation data that specifies the block size and interval data that specifies the number of triggers to occur before moving forward with reading and writing the next block of data as discussed above in relation to
In this example of
The multiple block mover components 1102, 1104, 1106 of this example may also be configured in such a way that each is responsible for loading a particular waveform pattern. In such a case, the shared trigger source 1202 of one block mover component may be triggered upon the completion of a block move by another of the block mover components and/or by the completion of a particular waveform pattern by the stimulation engine or other device.
To prevent all block mover components 1102, 1104, 1106 from being simultaneously triggered when that is not desired, the control registers 106 are configured to disable one or more block mover components while enabling one or more block mover components, via control 1206, for a given trigger prior to that trigger occurring. Multiple block movers may be configured to operate in parallel from the shared trigger by the registers 106 being configured so that the control 1206 enables those block mover components that should operate in parallel to move the corresponding memory block. As in
In the example of
A next block move cycle begins by another trigger occurring at an operation 1508. This trigger causes the block mover hardware to read the second block of data, such as a second waveform pattern, from the second memory, such as the memory portion 107 or the memory device 109 at an operation 1510. In parallel, the firmware 112 which either generated the trigger at operation 1508 or monitored the trigger input of the block mover hardware controller 102, 102′, 102″ then writes another block of data, such as a third pattern, to the first memory, such as the memory portion 105 or the memory device 108 at an operation 1512. Thus, there has been another simultaneous read and write involving the memory of the block mover hardware controller 102, 102′, 102″.
A third block move cycle begins by another trigger occurring at an operation 1514. This trigger causes the block mover hardware to read the third block of data, such as a third waveform pattern, from the first memory at an operation 1516. In parallel, the firmware 112 which either generated the trigger at operation 1514 or monitored the trigger input of the block mover hardware controller 102, 102′, 102″ then writes another block of data, such as a fourth pattern, to the second memory at an operation 1518. Thus, there has been a third simultaneous read and write involving the memory of the block mover hardware controller 102, 102′, 102″. The process of switching back and forth between the memories for reading and writing purposes as shown in
In some cases, it may be desirable for the trigger input(s) of the block mover component(s) described above in relation to
It will be appreciated that there may be a separate multiplexer 1602 for each block mover component that will receive an independent trigger. Should multiple block mover components share a trigger, as in
The block mover hardware component 104, 1101 moves a block of memory in the manner that has been described above for the various embodiments, to the register set 116′ of the measurement circuit 1702. The data of the block of memory being moved to the register set 116′ contains the operational parameters for making the measurement of interest which are illustrated as the control 1708. The measurement circuit 1702 has a signal input that receives the analog signal of interest. In this example, the measurement circuit 1702 may be measuring such operational parameters of an implantable medical device as an impedance of a stimulation pathway, a voltage of an on-board battery, or other external signal.
In this example of
Returning to contexts where the hardware based block mover is being used to move memory blocks that define waveforms, such as stimulation waveforms for an implantable medical device, a control condition may be used to indicate an action to take at the end of a current waveform pattern.
In
One manner of bringing about either of these waveform patterns of
Operations of this example begin by the hardware based controller 102, 102′, 102″, 102′″ receiving a trigger at an operation 2002. The hardware based controller 102, 102′, 102″, 102′″ then moves the next block, or multiple blocks in the case of a controller configuration using multiple block mover components, to the register set 116 at an operation 2004. From this block move, the waveform generator like that of
At this point, the hardware based controller 102, 102′, 102″, 102′″ is responsive to whatever configuration has been created by the firmware 112 or other manner of pre-setting the control registers 116. Specifically, the hardware based controller 102, 102′, 102″ 102′″ determines whether a control condition has occurred at an operation 2008, where the control condition may be hardcoded or specified in the control registers 106. For instance, the hardware based controller 102, 102′, 102″, 102′″ can be configured to determine if a DWICOUNT value is zero for the current memory block as specified a memory location such as location 310 of
Where no control condition has occurred for the current memory block, then the hardware based controller 102, 102′, 102″, 102′″ awaits the next trigger at operation 2002 in preparation for moving a next block to the register set 116. However, if a control condition is found at operation 2008, then the hardware based controller 102, 102′, 102″, 102′″ takes an action such as that resulting in the waveform pattern of
Where specified by the control registers 106 or otherwise, then the hardware based controller 102, 102′, 102″, 102′″ acts accordingly. Thus, if the action to take is specified as a repetition action, then the hardware based controller 102, 102′, 102″, 102′″ proceeds to move the same memory block(s) again at an operation 2012 to thereby re-write the same operational parameters back to the set of registers to cause the waveform generator to repeat the most recent waveform pattern. Thus, this may produce a waveform pattern that repeats like the ramp up waveform pattern of
If the action to take place is instead specified as a termination action at operation 2010, then the hardware based controller 102, 102′, 102″, 102′″ terminates further action and awaits a re-start of operations by the firmware 112 at an operation 2014, with the determination of whether a re-start has been initiated at an operation 2016. As a result of the hardware based controller 102, 102′, 102″, 102′″ terminating further block moves, the final pulse parameter remains in the active register of the waveform generator such that the final pulse is repeated like the one shown in
From the embodiments above, it can be seen that there are many variations that can be applied to the hardware based controller 102, 102′, 102″, 102′″ for added flexibility and functionality. There may be multiple trigger sources including multiple selectable trigger sources for a given block mover component, multiple block mover components with separate or same triggers and specified starting address values for each block mover component, multiple memory portions as well as simultaneous reading and writing from/to memory, application of control conditions to end of pattern behaviors, and control of waveform generator circuits as well as other circuit types such as measurement circuits.
While embodiments have been particularly shown and described, it will be understood by those skilled in the art that various other changes in the form and details may be made therein without departing from the spirit and scope of the invention.
The present application is a continuation of U.S. application Ser. No. 16/275,545, filed on Feb. 14, 2019, which claims the benefit of U.S. Provisional Application No. 62/633,063, filed on Feb. 20, 2018.
Number | Date | Country | |
---|---|---|---|
62633063 | Feb 2018 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16275545 | Feb 2019 | US |
Child | 17550336 | US |