Patent Description:
Neuromodulation, also referred to as neurostimulation, has been proposed as a therapy for a number of conditions. Examples of neuromodulation include Spinal Cord Stimulation (SCS), Deep Brain Stimulation (DBS), Peripheral Nerve Stimulation (PNS), and Functional Electrical Stimulation (FES). Implantable neuromodulation systems have been applied to deliver a neuromodulation therapy. An implantable neuromodulation system may include an implantable neuromodulator, also referred to as an implantable wave generator or an implantable pulse generator (IPG), and one or more implantable leads each including one or more electrodes. The implantable neuromodulator delivers neuromodulation energy through one or more electrodes placed on or near a target site in the nervous system. An external programming device may be used to program the implantable neuromodulator with modulation parameters controlling the delivery of the neuromodulation energy. The neuromodulation energy may be delivered using an electrical modulation waveform, which may be defined by a plurality of modulation parameters. For example, electrical modulation waveform may be an electrical pulsed waveform. Other parameters that may be controlled or varied include the electrodes within the electrode array that are activated, the amplitude, pulse width, and rate (or frequency) of the electrical pulses provided to individual ones of the activated electrodes. <CIT> discloses a system for receiving a target neuromodulation field location within a patient for a neuromodulation field. <CIT> discloses a neuromodulation device configured with a set of testing program configuration instructions including therapeutic neuromodulation field-setting parameters. The device determines a custom priming program in response to the testing program configuration instructions. <CIT> discloses a system for programming a neuromodulation therapy to treat neurological or cardiovascular diseases. <CIT> discloses a method for assisting programming a pulse generator which comprises defining a set of unique electrode combinations in the controller device.

This Summary is an overview of some of the teachings of the present application and not intended to be an exclusive or exhaustive treatment of the present subject matter. Further details about the present subject matter are found in the detailed description and appended claims. Other aspects of the disclosure will be apparent to persons skilled in the art upon reading and understanding the following detailed description and viewing the drawings that form a part thereof, each of which are not to be taken in a limiting sense. The scope of the present disclosure is defined by the appended claims.

The following detailed description of the present subject matter refers to the accompanying drawings which show, by way of illustration, specific aspects and embodiments in which the present subject matter may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the present subject matter. Other embodiments may be utilized and structural, logical, and electrical changes may be made without departing from the scope of the present subject matter. References to "an", "one", or "various" embodiments in this disclosure are not necessarily to the same embodiment, and such references contemplate more than one embodiment. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope is defined only by the appended claims, along with the full scope of legal equivalents to which such claims are entitled.

Advancements in neuroscience and neurostimulation research have led to a demand for using complex and/or individually optimized patterns of neurostimulation pulses for various types of therapies. Programming of neuromodulation therapy conventionally involves separate and independent programming of each of a multitude of modulation parameters. The modulation waveform may comprise multiple pulses with distinct shapes or morphology, as characterized by distinct pulse amplitudes, pulse widths, pulse rates, or other pulse morphological parameters. The multitude of modulation parameters may also include an electrode configuration used to deliver electrical pulses to the targeted tissue. The electrodes may be capable of being selectively programmed to act as anodes (positive), cathodes (negative), or left off (zero). Other parameters that may be controlled or varied include the amplitude, pulse width, and rate (or frequency) of the electrical pulses provided to individual electrodes or groups of two or more electrodes within the electrode array. Each electrode configuration, along with the electrical pulse parameters, constitutes a modulation parameter set for use in an electrostimulation therapy.

The present subject matter relates to constructs and optimizations that enable efficient storage and delivery of neuromodulation patterns within the neuromodulator hardware. These patterns may include a sequence of spatially-different neuromodulation fields. That is, one neuromodulation field and a subsequent neuromodulation field in the sequence may cover different tissue volumes using different neuromodulation field shapes and/or locations of the neuromodulation fields. By way of example and not limitation, these patterns may include two or more sequences of spatially-different neuromodulation fields, where the two or more sequences are generated using two or more neuromodulation channels and are delivered to two or more neural targets, respectively. By way of example, such neuromodulation patterns may include but are not limited to patterns such as may be used in a coordinated reset (CR) therapy. CR therapy refers to a therapy that attempts to disrupt abnormal neuronal synchronization using patterns that include both spatial and temporal patterns to desynchronize the abnormal synchronous neuronal activity by delivering phase resetting stimuli at different times to different sub-populations involved with the abnormal neuronal synchronization.

The user input that defines the sequences of spatially-different neuromodulation fields and the timing relationship(s) are transformed into instructions that the neuromodulator can understand in order to implement such sequences of neuromodulation patterns. These steps are efficiently performed for these complex patterns. Sequences are built of blocks with each block associated with a fixed field. Furthermore, the blocks have timing relationships with other block(s). When the sequences include CR sequences, by way of example, each CR sequence may be associated with a list of fields; each CR sequence may be associated with a specified number of On and Off blocks; each CR sequence may be associated with a Duty Cycle; each CR field may be associated with a unique amplitude, pulse width and rate; and each block may be associated with a field order. Unique features, such as the identified features for CR sequences, may be used to construct the neuromodulator instructions. A programmer system may take the sequence definition information as input and translate it to a series of neuromodulator instructions. The programmer system may optimize the instructions to update multiple Application Specific Integrated Circuit (ASIC) register settings at the same time and to minimize memory usage.

<FIG> illustrates, by way of example, an embodiment of a neuromodulation system. The illustrated neuromodulation system <NUM> includes electrodes <NUM>, a modulation device <NUM>, and a programming system such as a programming device <NUM>. The programming system may include multiple devices. The electrodes <NUM> are configured to be placed on or near one or more neural targets in a patient. The modulation device <NUM> is configured to be electrically connected to electrodes <NUM> and deliver neuromodulation energy, such as in the form of electrical pulses, to the one or more neural targets though electrodes <NUM>. The delivery of the neuromodulation is controlled using a plurality of modulation parameters that may specify the electrical waveform (e.g. pulses or pulse patterns or other waveform shapes) and a selection of electrodes through which the electrical waveform is delivered. In various embodiments, at least some parameters of the plurality of modulation parameters are programmable by a user, such as a physician or other caregiver. The programming device <NUM> provides the user with accessibility to the user-programmable parameters. In various embodiments, the programming device <NUM> is configured to be communicatively coupled to modulation device via a wired or wireless link. In various embodiments, the programming device <NUM> includes a user interface <NUM> such as a graphical user interface (GUI) that allows the user to set and/or adjust values of the user-programmable modulation parameters.

<FIG> illustrates, by way of examples and not limitation, the neuromodulation system of <FIG> implemented in a spinal cord stimulation (SCS) system or a deep brain stimulation (DBS) system. The illustrated neuromodulation system <NUM> includes an external system <NUM> that may include at least one programming device, which is illustrated as an external time <NUM>. The illustrated external system <NUM> may include a clinician programmer <NUM> configured for use by a clinician to communicate with and program the neuromodulator, and a remote control <NUM> configured for use by the patient to communicate with and program the neuromodulator. For example, the remote control device may allow the patient to turn a therapy on and off and/or adjust certain patient-programmable parameters of the plurality of modulation parameters. <FIG> illustrates a modulation device as an ambulatory medical device <NUM>. Examples of ambulatory devices include wearable or implantable neuromodulators.

<FIG> illustrates, by way of example and not limitation, an embodiment of the neuromodulation system of <FIG> configured to program more than one channel of neuromodulation with block sequences for generating a sequence of spatially-different neuromodulation fields at more than one neuromodulation site. Similar to <FIG>, the illustrated system <NUM> includes electrodes <NUM>, a modulation device <NUM>, and a programming system such as a programming device <NUM>. The illustrated modulation device <NUM> is configured to generate neuromodulation over more than one timing channel. By way of example and not limitation, the modulation device <NUM> may be configured with a capability to use four timing channels to generate the neuromodulation. A timing channel identifies which electrodes are selected to synchronously source or sink current to create an electric field in the tissue to be stimulated. Amplitudes and polarities of electrodes on a channel may vary. In particular, the electrodes can be selected to be positive (anode, sourcing current), negative (cathode, sinking current), or off (no current) polarity in any of the k timing channels. Thus, for a given period of time (e.g. block of time), each timing channel may be assigned a modulation parameter set, which may include both an electrode configuration (e.g. electrodes selectively programmed to act as anodes (positive), cathodes (negative), or left off (zero)) and waveform parameters (e.g. pulse parameters such as pulse amplitude, pulse width, pulse frequency or variable pulse-to-pulse timing). Since they can have different electrode configurations, each channel may correspond to its own neurostimulation site (e.g. a volume of tissue in which one or more neuromodulation fields are delivered). Subsequent blocks of time on the timing channel may have different parameter sets. A single timing channel may use a sequence of these parameter sets, also referred to herein as a sequence of blocks, to generate a sequence of modulation fields. As such, each timing channel may be used to generate its own sequence of modulation fields as well as to control timing relationships between the fields. One or more of these channels may be used to deliver CR therapy to deliver spatial and temporal patterns to different neuronal sub-populations for desynchronizing abnormal synchronous neuronal activity. The programming device <NUM> is configured to receive user input related to the sequence of modulation fields and/or the timing relationship for the modulation field, and translate the user input into neuromodulation instructions to be communicated to the modulation device <NUM>. The communicated neuromodulation instructions may be firmware instructions used by firmware within the modulation device to generate the programmed sequences and timing in each of the channels.

<FIG> illustrates, by way of example and not limitation, a process for translating user-inputted block definition files into firmware instructions for wireless communication (e.g. telemetry) to program a modulation device. An external system (e.g. programmer) <NUM> may include a user interface configured for use to input sequence definition information and form a block definition file <NUM>. The programmer may include a translator that is configured to translate the block definition file <NUM> into assembly language <NUM>. The programmer may further include an assembler configured to assemble the assembly language <NUM> into firmware instructions (e.g. a series of neuromodulator instructions in data bytes for storage into registers of the neuromodulator) <NUM>. The external system <NUM> may include telemetry to communicate the firmware instructions to the neuromodulator <NUM>. Thus, the user input that defines the sequences of spatially-different neuromodulation fields and the timing relationship(s) are transformed into instructions that the neuromodulator can understand in order to implement such sequences of neuromodulation patterns. These steps are efficiently performed for these complex patterns. Sequences are built of blocks with each block associated with a fixed field. Furthermore, the blocks have timing relationships with other block(s).

The sequences may include CR sequences. Each CR sequence may be associated with a list of fields. Each CR sequence may be associated with a specified number of On and Off blocks. Each CR sequence may be associated with a Duty Cycle. Each CR field may be associated with a unique amplitude, pulse width and rate. Each block is associated with a field order. Unique features, such as these identified features for CR sequences, may be used to construct the neuromodulator instructions.

<FIG> illustrates a more detailed embodiment of the system illustrated in <FIG>. Similar to <FIG>, the illustrated system <NUM> includes electrodes <NUM>, a modulation device <NUM>, and a programming system such as a programming device <NUM>. The illustrated embodiment of the modulation device <NUM> is a multi-channel modulation device that include a multi-channel neuromodulation output circuit <NUM> and a modulation control circuit <NUM>. Those of ordinary skill in the art will understand that the neuromodulation system may include additional components such as sensing circuitry for patient monitoring and/or feedback control of the therapy, telemetry circuitry and power. The modulation output circuit <NUM> produces and delivers the neuromodulation. Neuromodulation pulses are provided herein as an example. However, the present subject matter is not limited to pulses, but may include other electrical waveforms (e.g. waveforms with different waveform shapes, and waveforms with various pulse patterns). The multi-channel neuromodulation output circuit <NUM> may include a plurality of independent sources <NUM> (e.g. independent voltage sources or independent current sources). The modulation control circuit <NUM> controls the delivery of the neuromodulation pulses using the plurality of modulation parameters. The modulation parameters include parameters for defining the sequence of blocks (e.g. modulation fields) <NUM> and parameters defining timing relationship(s) <NUM> for the blocks. These parameters provide firmware instructions for each timing channel of the neuromodulator, and may be stored in registers within the neuromodulator. Examples of circuitry that may be used to generate and deliver neuromodulation pulses are found in the following references, which are herein incorporated by reference in their entirety: <CIT>, entitled System and Method for Independently Operating Multiple Neurostimulation Channels; <CIT>, entitled Neurostimulation System and Method for Compounding Current to Minimize Current Sources; and <CIT>, entitled Current Generation Architecture for an Implantable Stimulator Device Having Course and Fine Current Control.

The electrodes <NUM> may be on one or more leads that are configured to be electrically connected to modulation device <NUM>. The electrodes <NUM> may include a plurality of electrodes <NUM>-<NUM> to <NUM>-N distributed in an electrode arrangement. The neuromodulation pulses are each delivered from the modulation output circuit <NUM> through a set of electrodes selected from the N electrodes that are available for selection. The number of leads and the number of electrodes on each lead may depend on, for example, the distribution of target(s) of the neuromodulation and the need for controlling the distribution of electric field at each target. In one embodiment, by way of example and not limitation, the lead system includes two leads where each lead has eight electrodes. Some embodiments may use a lead system that includes a paddle lead. Some embodiments may include a directional lead that includes at least some segmented electrodes circumferentially disposed about the directional lead. Two or more segmented electrodes may be distributed along a circumference of the lead. The type, number and shape of leads and electrodes may vary according to the intended application.

The neuromodulation system may be configured to modulate brain tissue, configured to modulate spinal target tissue or configured to modulate other neural tissue. The configuration of electrodes used to deliver electrical pulses to the targeted tissue constitutes an electrode configuration, with the electrodes capable of being selectively programmed to act as anodes (positive), cathodes (negative), or left off (zero). In other words, an electrode configuration represents the polarity being positive, negative, or zero. An electrical waveform may be controlled or varied for delivery using electrode configuration(s). The electrical waveforms may be analog or digital signals. In some embodiments, the electrical waveform includes pulses. The pulses may be delivered in a regular, repeating pattern, or may be delivered using complex patterns of pulses that appear to be irregular. Other parameters that may be controlled or varied include the amplitude, pulse width, and rate (or frequency) of the electrical pulses. Each electrode configuration, along with the electrical pulse parameters, can be referred to as a "modulation parameter set. " Each set of modulation parameters, including fractionalized current distribution to the electrodes (as percentage cathodic current, percentage anodic current, or off), may be stored and combined into a modulation program that can then be used to modulate multiple regions within the patient.

The number of electrodes available, combined with the ability to generate a variety of complex electrical waveforms (e.g. pulses), presents a huge selection of modulation parameter sets to the clinician or patient. For example, if the neuromodulation system to be programmed has sixteen electrodes, millions of modulation parameter sets may be available for programming into the neuromodulation system. Furthermore, for example some neuromodulation systems may have thirty-two electrodes which exponentially increases the number of modulation parameters sets available for programming.

The programming device <NUM> in the illustrated system <NUM> may include a storage device <NUM>, a programming control circuit <NUM>, and a graphical user interface (GUI) <NUM>. The programming control circuit <NUM> generates the plurality of modulation parameters that controls neuromodulation energy generated by the modulation device. In various embodiments, the GUI <NUM> may include any type of presentation device, such as interactive or non-interactive screens, and any type of user input devices that allow the user to program the modulation parameters, such as touchscreen, keyboard, keypad, touchpad, trackball, joystick, and mouse. The storage device <NUM> may store, among other things, modulation parameters to be programmed into the modulation device. Telemetry may be used to communicate between the programming device <NUM> and the modulation device <NUM>. The programming device <NUM> may transmit the plurality of modulation parameters to the modulation device <NUM>. In some embodiments, the programming device <NUM> may transmit power to the modulation device <NUM>. The programming control circuit <NUM> may generate the plurality of modulation parameters. With reference to <FIG>, a translator <NUM> may be used to translate the block definition file into assembly language, and an assembler <NUM> configured to assemble the assembly language into firmware instructions for transmission to the modulation device and storage in the registers <NUM>. In various embodiments, the programming control circuit <NUM> may check values of the plurality of modulation parameters against safety rules to limit these values within constraints of the safety rules.

In various embodiments, circuits of neuromodulation, including its various embodiments discussed in this document, may be implemented using a combination of hardware, software and firmware. For example, the circuit of GUI, modulation control circuit, and programming control circuit, including their various embodiments discussed in this document, may be implemented using an application-specific circuit constructed to perform one or more particular functions or a general-purpose circuit programmed to perform such function(s). Such a general-purpose circuit includes, but is not limited to, a microprocessor or a portion thereof, a microcontroller or portions thereof, and a programmable logic circuit or a portion thereof.

<FIG> illustrates, by way of example, some features of the neuromodulation leads <NUM> and a waveform generator <NUM>. The waveform generator <NUM> may be an implantable device or may be an external device such as may be used to test the electrodes during an implantation procedure. In the illustrated example, one of the neuromodulation leads has eight electrodes (labeled E1-E8), and the other neuromodulation lead has eight electrodes (labeled E9-E16). The actual number and shape of leads and electrodes may vary for the intended application. An implantable waveform generator <NUM> may include an outer case for housing the electronic and other components. The outer case may be composed of an electrically conductive, biocompatible material, such as titanium, that forms a hermetically-sealed compartment wherein the internal electronics are protected from the body tissue and fluids. In some cases, the outer case may serve as an electrode (e.g. case electrode). The waveform generator <NUM> may include electronic components, such as a controller/processor (e.g., a microcontroller), memory, a battery, telemetry circuitry, monitoring circuitry, modulation output circuitry, and other suitable components known to those skilled in the art. The microcontroller executes a suitable program stored in memory, for directing and controlling the neuromodulation performed by the waveform generator. Electrical modulation energy is provided to the electrodes in accordance with a set of modulation parameters programmed into the pulse generator. By way of example but not limitation, the electrical modulation energy may be in the form of a pulsed electrical waveform. Such modulation parameters may comprise electrode combinations, which define the electrodes that are activated as anodes (positive), cathodes (negative), and turned off (zero), percentage of modulation energy assigned to each electrode (which may also be referred to as allocated energy or fractionalized electrode configurations), and electrical pulse parameters, which define the pulse amplitude (measured in milliamps or volts depending on whether the pulse generator supplies constant current or constant voltage to the electrode array), pulse width (measured in microseconds), pulse rate (measured in pulses per second), and burst rate (measured as the modulation on duration X and modulation off duration Y). Electrodes that are selected to transmit or receive electrical energy are referred to herein as "activated," while electrodes that are not selected to transmit or receive electrical energy are referred to herein as "non-activated.

Electrical modulation occurs between or among a plurality of activated electrodes, one of which may be the case of the waveform generator. The system may be capable of transmitting modulation energy to the tissue in a monopolar or multipolar (e.g., bipolar, tripolar, or more than three poles) fashion. Monopolar modulation occurs when a selected one of the lead electrodes is activated along with the case of the waveform generator, so that modulation energy is transmitted between the selected electrode and case. Any of the electrodes E1-E16 and the case electrode may be assigned to up to k possible groups or timing "channels. " In one embodiment, k may equal four. The timing channel identifies which electrodes are selected to synchronously source or sink current to create an electric field in the tissue to be stimulated. Amplitudes and polarities of electrodes on a channel may vary. In particular, the electrodes can be selected to be positive (anode, sourcing current), negative (cathode, sinking current), or off (no current) polarity in any of the k timing channels.

The waveform generator <NUM> may be configured to individually control the magnitude of electrical current flowing through each of the electrodes. For example, a current generator may be configured to selectively generate individual current-regulated amplitudes from independent current sources for each electrode. In some embodiments, the pulse generator may have voltage regulated outputs. While individually programmable electrode amplitudes are desirable to achieve fine control, a single output source switched across electrodes may also be used, although with less fine control in programming. Neuromodulators may be designed with mixed current and voltage regulated devices. The energy may be allocated to electrodes to provide a desired modulation field.

<FIG> illustrate, by way of a few examples and not limitation, fractionalized energy allocations. For a given channel, the total anodic current is <NUM>% and the total cathodic current is <NUM>%. <FIG> illustrates an example of a fractionalization for one channel where the anodic current is evenly split among electrodes E2 (<NUM>%), E10 (<NUM>%), E4 (<NUM>%) and E12 (<NUM>%), and the cathodic current is evenly split among electrodes E3 (-<NUM>%) and E11 (-<NUM>%). <FIG> illustrates an example of a fractionalization for one channel where the anodic current is split among electrodes E1 (<NUM>%) and E9 (<NUM>%), and the cathodic current is split among electrodes E3 (-<NUM>%), E11 (-<NUM>%), E4 (-<NUM>%) and E12 (-<NUM>%). <FIG> illustrates an example of fractionalization for two channels similar to the fractionalization of the channels in <FIG>, respectively. The active electrodes for channel <NUM> are E1, E2, E3, E9, E10, and E11. The active electrodes for channel <NUM> are E5, E7, E8, E13, E15 and E16. The anodic current for the first channel is evenly split among electrodes E1 (<NUM>%), E9 (<NUM>%), E3 (<NUM>%) and E11 (<NUM>%), and the cathodic current for the first channel is evenly split among electrodes E2 (-<NUM>%) and E10 (-<NUM>%). The anodic current for the second channel is split among electrodes E5 (<NUM>%) and E13 (<NUM>%), and the cathodic current for the second channel is split among electrodes E7 (-<NUM>%), E8 (-<NUM>%), E15 (-<NUM>%) and E16 (-<NUM>%). Additional channels may be used. Further, the system may be designed with arbitration or mechanisms for handling situations when two or more channels are attempting to deliver electrical energy to the same electrode at the same time.

Various embodiments of the present subject matter may use "a target pole" or "target multipoles. " These target pole(s) or target may be referred to as "ideal" or "virtual" pole(s). Each target pole of a target multipole may correspond to one physical electrode, but may also correspond to a space that does not correspond to one electrode, and may be emulated using electrode fractionalization. By way of examples, <CIT> and <CIT> describe target multipoles. <CIT> and <CIT>. Target multipoles are briefly described herein. A stimulation target in the form of a target poles (e.g., a target multipole such as a target bipole or target tripole or a target multipole with more than three target poles) may be defined and the stimulation parameters, including the allocated energy values (e.g. fractionalized current values) on each of the electrodes, may be computationally determined in a manner that emulates these target poles. The fractionalized current for each of the active electrodes contribute to the pole(s). For example, a target cathodic pole may be created using one or more activated electrodes configured as cathodic electrodes, where a sum of the fractionalized current for each of the activated cathodic electrodes in the channel equal <NUM>%. The anodic current may be placed on the can electrode. Two cathodic target poles may be created using activated electrodes configured as cathodic electrodes. A sum of the fractionalized current for each of a first number of the activated cathodic electrodes form one of the target cathodic poles and a sum of the fractionalized current for the remainder of the activated cathodic electrodes form the other of the target cathodic poles. A sum of the fractionalized current for each of the activated cathodic electrodes in the channel equal <NUM>%. Target multipoles may include at least one cathodic target pole and at least one anodic target pole, more than one cathodic target pole, or more than one anodic pole. Current steering may be implemented by moving the target poles about the leads, such that the appropriate allocated energy values (e.g. fractionalized current values) for the electrodes are computed for each of the various positions of the target pole.

<FIG> illustrates, by way of example and not limitation, block sequences for four timing channels. Each of the channels has a block sequence corresponding to the channel's row in the table. For example, the first timing channel corresponds to Block <NUM>-<NUM>, Block <NUM>-<NUM>, Block <NUM>-<NUM> and Block <NUM>-<NUM>. Similarly, the second timing channel corresponds to Block <NUM>-<NUM>, Block <NUM>-<NUM>, Block <NUM>-<NUM> and Block <NUM>-<NUM>. Each block represents its own modulation parameter set, including an electrode configuration for that modulation parameter set. Thus, different blocks may correspond to different modulation fields that have different target pole(s), as the electrode configurations may have different activated electrodes, and/or different fractionalized values. These different modulation fields may target completely different volumes of tissue, or may generally target the same volume of tissue but using different polarities and modulation field shapes to create different field orientations. The present subject matter is not limited to four channels as the number of channels may be more or less than four, and is not limited to four blocks per channel, as the number of blocks per channel may be more or less than four blocks. Furthermore, the timing of the blocks (e.g. start time, stop time, duration, inter-block intervals, etc.) may be independently controlled for each of the timing channels.

<FIG> illustrates a specific example of the block sequences in <FIG>, where the block sequences are selected and ordered using spatially-different modulation field A-F. Each of the modulation fields represent different electrode configuration (e.g. different activated electrodes, fractionalized values for the electrodes). These modulation fields may be available for selection by the user interface to create the order of fields in each sequence. Thus, by way of example, Modulation Field A may be selected for use in Timing Channel <NUM> as the first and third block in the sequence, and may be selected for use in Timing Channel <NUM> as the second and fourth block in the sequence. Similarly, Modulation Field B may be selected for use in Timing Channel <NUM> as the second block in the sequence, and may be selected for use in Timing Channel <NUM> as the first and fourth blocks in the sequence. In various embodiments, the user interface of the system may be configured to provide a list of the available fields for selection and may be further configured to allow drag-n-drop programming into channel's block sequence to thereby define the order of modulation of fields in the sequence. In other embodiments, the user interface may be configured for the user to add a block into a sequence and then select the modulation field from the list of available fields. In various embodiments, the user interface may be configured to create or modify the target pole(s) associated with each modulation field, and/or create or modify the modulation parameter sets corresponding to each block associated with the modulation field.

<FIG> illustrates, by way of example and not limitation, the block sequences in <FIG> for channels <NUM>-<NUM> with illustrated timing relationships between the blocks in those sequences. These timing relationships may be programmed by the user so that the different fields will have different start time, stop time, duration, etc. The timing relationships may be based on an absolute time (system clock), or may be based on relative timing relationships between blocks in the same or different timing channels such as, by way of example and not limitation, a delay after another block starts or delay after another block ends. The timing relationships may include whether a sequence repeats and timing between repeats of the sequence.

<FIG> is an illustration of a neuromodulator program <NUM> that includes block sequences <NUM>, where the block sequences includes blocks <NUM>, and the blocks include neuromodulation instructions which may include fractionalization data <NUM> (e.g. steering data) and timing relationship data <NUM> (e.g. phases and timer). Both the fractionalization data and timing relationship data are communicated to the neuromodulator for storage in the hardware registers. The steering data <NUM> may be stored hardware steering registers to control the allocated current for each active electrode and the timing relationship data <NUM> may be stored in hardware timer registers. In the illustrated example, each electrode may have <NUM> bits of fractionalization data. Thus, a sixteen bit register may include fractionalization data for two electrodes (e.g. electrodes E0 and E1 ("E1E0 branch")). The fractionalization data stored in these registers for all of the electrodes are used to control the allocated current for each active electrode and thus generate the target poles for a modulation field.

Each block <NUM> may include pulses that are made up of phases. Each pulse of the block may have parameter data, and this parameter data for each pulse may include Phases, Steering List, Period, Duration and Field Order List. Each pulse in each block may include phases (e.g. Phase <NUM>, Phase <NUM>, Phase <NUM>) and each phase may include an amplitude and pulse width.

Each phase may include phase elements such as amplitude, pulse width, state and index. The amplitude may represent the amplitude of the phase. The pulse width may represent the duration of the phase. The state may represent whether the phase is an active phase, a passive phase or a delay phase. The index may represent a phase number for the phases within the pulse.

Each block may include block elements such as a phase list, duration, field order, period and steering list. The phase list identifies the phases that make up a pulse. The steering list identifies the electrode settings including polarity and fractionalization. The period may identify the period of the pulse. The duration may identify the duration of the block. The field order may identify a listing that specifies the field order from fields defined in the block sequences field list.

The blocks may be arranged in sequences. Each sequence may include block sequence elements such as block list, ratio, duty cycle, fields list, frequency (such as CR frequency), and repeat count. The block list may be an array of blocks. The ratio may be a block on/off ratio. The ratio may be referred to as micro-scheduling. The duty cycle may be the duration of the block ratio in minutes. The duty cycle may also be referred to as macro-scheduling. The field list may list possible electrode settings including fractionalization data. The frequency may be the frequency to repeat the electrode field combinations. The repeat count may be the number of times to repeat the sequence.

<FIG> illustrates, by way of example and not limitation, micro-scheduling of blocks (Ratio) and macro-scheduling of blocks (Duty Cycle). <FIG> illustrates, by way of example, phases (Phase0 - Phase6) of the pulse, and the electrodes settings for each pulse to create a field. The fields (generated by an electrode setting for a pulse) may be ordered using the CR Field Order. Also illustrated is the order of pulses (electrode field combinations) that may be repeated according to the CR Frequency.

<FIG> is an illustration of a translation from a user-inputted sequence definition <NUM> into neuromodulation definition <NUM>. A user interface may be configured to receive user input in order to form the sequence definition. The user interface may be configured to enable the user to enter various data that generally correspond to the sequence of blocks and the timing relationships for the blocks. For example, the user-inputted data forming the block sequence <NUM> may contain user-inputted data for blocks <NUM> which may include, by way of example: a list of phases, a duration of the block, a list steering tables (electrode configurations including fractionalized values for active electrodes), a period, a CR field order, and a repeat count for the number of blocks. The user-inputted data forming the block sequence <NUM> may further include CR Ratio, CR Duty Cycle, CR fields, CR frequency and Repeat count.

The neuromodulation definition <NUM> contains information from the sequence definition <NUM> after translation into assembly language. The neuromodulation definition <NUM> may include program information <NUM>, firmware block of instructions <NUM>, firmware instruction information <NUM> and a firmware instruction data table1242. The program information <NUM> may provide: a list of firmware instructions or blocks of instructions; an initialization block, a list of function tables, a list of CR steering tables, a CR index table for use to index into the CR steering tables, and a repeat count. The firmware block of instructions may include: stimulator register settings for this block; begin instruction; list of instructions to set the corresponding register; list of optimized instructions which are instructions that optimize the list of instructions to minimize memory usage; and end instruction. The firmware instruction may include OpCode which specifies the operation to be performed such as setting a register, staring a stimulation, and looping. The firmware instruction may include a list of fields, an event time, and a function label. The firmware instruction table may include a label, a data segment type, a coefficient format type, a list of unsigned short data, and associated stimulator register information.

<FIG> illustrates, by way of example and not limitation, tables containing spatially-different modulation fields where each row includes data for sequence of neuromodulation fields, and further includes an index table for use to identify a pointer to the tables. As provided above, the program information may provide a list of CR steering tables, and a CR index table for use to index into the CR steering tables. The neuromodulator has a plurality of registers for storing neuromodulation parameter data. An individual one of these registers may be configured to store neuromodulation parameter data for at least one of the plurality of electrodes. The programming system may include a plurality of field order tables corresponding to the plurality of registers. Each of the plurality of tables may contain settings for a respective one of the plurality of registers. Each of the plurality of field order tables include a plurality of rows and a plurality of columns. The plurality of rows corresponds to a plurality of block sequences, respectively, to define field order settings. The illustrated table provides a row for the possible permutations for ordering four distinct fields (labeled Field <NUM>, Field2, Field <NUM> and Field <NUM>). For example, each of the plurality of rows may correspond to the register data for a single register, which may contain register data for two of the plurality of electrodes. The CR index table <NUM> (also referenced as LOAD AFT ABLEIND TABLE) may be populated to produce a sequence of desired field combinations, such as pseudo random field sequences. The translator may be configured to use the block sequence descriptions to determine one of the pointers for use to identify a row in the field order tables for use to load neuromodulation data from that row into one of the plurality of registers. Thus, a pointer may be selected for use to select a row in the steering table to provide the desired sequence of fields for a register. For example, the register may be a <NUM> bit register, and may contain data for two electrodes (<NUM> bits per electrode) in the electrode array. <FIG> illustrates an example where a sequence of data from the Index table <NUM> (0x0078; 0x0090; 0x0040. ) are used to index into Row <NUM> (0x978), Row <NUM> (0x990) and Row <NUM> (0x940) of the CR Steering tables <NUM>.

<FIG> illustrates an example of a process to optimize the blocks for transmitting and storing register data. After the sequence definition translates to blocks of instructions and/or instructions, the programmer system may optimize the instructions to update multiple Application Specific Integrated Circuit (ASIC) register settings at the same time and to minimize memory usage. Optimization may be performed starting with an initial block <NUM>, and then performing a block-by-block optimization for all blocks in the sequence <NUM>. Once all blocks are optimized then it is determined if there are consecutive no operation blocks that can be combined to a single block (e.g. <NUM>) and determined if blocks can be optimized to a function <NUM> (e.g. a function in the function tables within the program, as illustrated in <FIG>).

<FIG> illustrates an example of a process for optimizing an instruction or block of instructions. At <NUM>, the block or instructions are copied to optimized block/instructions. If at <NUM> the optimized instruction count is <NUM>, then the block is converted to a signal NOP instruction <NUM>. If at <NUM> the optimized instruction count is <NUM>, then the block is converted to a single instruction. If the optimized instruction count is not <NUM> and is not <NUM>, then the process may continue at <NUM> to combine instructions that write to the same register address. The process may continue at <NUM> to create a block with the combined register address instructions. Any duplicate combined instructions may be removed at <NUM>. At <NUM>, multiple Set Register instructions may be converted to a single SetMultiReg instruction. As illustrated at <NUM>, only the last instruction may be set to be a StimUpdate instruction. If at <NUM>, the Optimized instruction count is <NUM>, then the block may be converted to a single instruction. Otherwise, the process may return the optimized block <NUM>.

<FIG> illustrates an example of a process for optimizing consecutive NOP instructions. At <NUM>, the process may initialize the instruction to delete list; and at <NUM>, the process may initialize multiple set Reg Data segment table. At <NUM>, the instruction type is determined. At <NUM>, the number of future consecutive NOP instructions and totalEvent is determined. If at <NUM> the total number of consecutive NOP instructions is greater than <NUM>, then the process may modify the NOP instruction event time to consecutive total event time <NUM>, and may add NOP instruction indices to the Instruction To Delete list <NUM>. The process steps <NUM>-<NUM> may be repeated for all instructions / blocks in the sequence. At <NUM>, the instructions that were combined into one NOP instruction maybe deleted.

<FIG> illustrates an example of a process for optimizing a series of instructions to a single Function instruction. At <NUM>, the process may initialize a list of instructions / block numbers to delete. If instructions are to be deleted at <NUM>, the process proceeds to <NUM> to look ahead from the current block and convert instructions to table of data. If at <NUM> the table data count is greater than <NUM>, then a label is added to the table <NUM>, an apply function block is created <NUM>, an apply function block is inserted into the program <NUM>, and converted instructions are marked to be deleted <NUM>. Similarly, if instructions are to be deleted at <NUM>, the process proceeds to <NUM> to look ahead from the current block and convert instructions to table of data. If at <NUM> the table data count is greater than <NUM>, then a label is added to the table <NUM>, an apply function block is created <NUM>, an apply function block is inserted into the program <NUM>, and converted instructions are marked to be deleted <NUM>. At <NUM>, the instructions/blocks that were converted into a table may be deleted.

The drawings show, by way of illustration, specific embodiments in which the invention may be practiced. " Such examples may include elements in addition to those shown or described. Moreover, the present inventors also contemplate examples using combinations or permutations of those elements shown or described.

Method examples described herein may be machine or computer-implemented at least in part. Some examples may include a computer-readable medium or machine-readable medium encoded with instructions operable to configure an electronic device to perform methods as described in the above examples. An implementation of such methods may include code, such as microcode, assembly language code, a higher-level language code, or the like. Such code may include computer readable instructions for performing various methods. Further, in an example, the code may be tangibly stored on one or more volatile, non-transitory, or non-volatile tangible computer-readable media, such as during execution or at other times. Examples of these tangible computer-readable media may include, but are not limited to, hard disks, removable magnetic disks, removable optical disks (e.g., compact disks and digital video disks), magnetic cassettes, memory cards or sticks, random access memories (RAMs), read only memories (ROMs), and the like.

Claim 1:
A system (<NUM>; <NUM>; <NUM>), comprising:
a neuromodulator (<NUM>; <NUM>; <NUM>), wherein the neuromodulator includes a neuromodulation generator and a plurality of electrodes (<NUM>; <NUM>; <NUM>) for use to deliver neuromodulation to at least two neuromodulation sites using at least two timing channels; and
a programming system (<NUM>; <NUM>; <NUM>) configured to wirelessly communicate with the neuromodulator, the programming system including a user interface, wherein the programming system is configured to receive user input, via the user interface, for use in programming at least two timing channels to generate sequences of spatially-different neuromodulation fields for the at least two neuromodulation, respectively,
wherein for each of the at least two timing channels the programming includes creating block sequence descriptions to define both a sequence of blocks and timing relationships between the blocks for the corresponding one of the at least two timing channels,
wherein each of the blocks correspond to a neuromodulation parameter set with a corresponding electrode configuration to generate a corresponding one of the spatially-different neuromodulation fields, and
wherein the programming system (<NUM>; <NUM>; <NUM>) is configured to translate the block sequence descriptions into neuromodulator instructions, and wireless communicate the neuromodulator instructions to the neuromodulator for use by the neuromodulator to deliver the neuromodulation to each of the at least two neuromodulation sites using the corresponding timing channel according to the corresponding block sequence description.