US20070027485A1 - Implantable medical device bus system and method - Google Patents

Implantable medical device bus system and method Download PDF

Info

Publication number
US20070027485A1
US20070027485A1 US11/192,474 US19247405A US2007027485A1 US 20070027485 A1 US20070027485 A1 US 20070027485A1 US 19247405 A US19247405 A US 19247405A US 2007027485 A1 US2007027485 A1 US 2007027485A1
Authority
US
United States
Prior art keywords
bus
data
streaming
message
interface circuits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/192,474
Inventor
Todd Kallmyer
Kevin Walsh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Medtronic Inc
Original Assignee
Medtronic Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Medtronic Inc filed Critical Medtronic Inc
Priority to US11/192,474 priority Critical patent/US20070027485A1/en
Priority to EP06800606A priority patent/EP1915196A2/en
Priority to PCT/US2006/029936 priority patent/WO2007016564A2/en
Priority to CA002617058A priority patent/CA2617058A1/en
Assigned to MEDTRONIC, INC. reassignment MEDTRONIC, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KALLMYER, MR. TODD A., WALSH, MR. KEVIN K.
Publication of US20070027485A1 publication Critical patent/US20070027485A1/en
Assigned to MEDTRONIC, INC. reassignment MEDTRONIC, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WALSH, KEVIN K., MASOUD, JAVAID, KALLMYER, TODD A., STROEBEL, JOHN C., ERICKSEN, JAMES, STOCKBURGER, MARK A., EVERS, XANDER
Priority to US12/366,946 priority patent/US7913015B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61NELECTROTHERAPY; MAGNETOTHERAPY; RADIATION THERAPY; ULTRASOUND THERAPY
    • A61N1/00Electrotherapy; Circuits therefor
    • A61N1/18Applying electric currents by contact electrodes
    • A61N1/32Applying electric currents by contact electrodes alternating or intermittent currents
    • A61N1/36Applying electric currents by contact electrodes alternating or intermittent currents for stimulation
    • A61N1/372Arrangements in connection with the implantation of stimulators

Definitions

  • the present invention relates generally to implantable medical devices. More particularly, the present invention relates to bus systems in implantable medical devices.
  • implantable medical devices include a variety of implantable cardiac devices.
  • implantable pulse generators IPGs
  • ICD implantable cardioverter defibrillator
  • Tachycardia device an implantable cardioverter defibrillator
  • Another type of device is a cardiac resynchronization device that treats heart failure.
  • Another type of device are monitoring devices that use one or more physiologic sensors.
  • a typical implantable medical device includes one or more sensing devices (e.g., magnetic sensor, pressure sensor, motion sensor, ECG sensor), processors, data storage devices, patient alert devices, power management devices, signal processing and other devices implemented to perform a variety of different functions.
  • the various subsystems require mechanisms to communicate between subsystems in the device.
  • a typical implantable medical device requires reliable communication between a variety of different sensing devices and a main processor.
  • Other types of communication can include event and message communication.
  • communicating between sensing devices and the main processor can require periodic communication reliability delivered at precise time intervals to reduce jitter in the sensing data.
  • general message communication between subsystems typically does not require such precise timing de livery, but it can require the ability to send much larger messages.
  • FIG. 1 is a schematic view of an exemplary implantable medical device bus system
  • FIG. 2 is a simplified schematic view of an exemplary implantable medical device with a bus system
  • FIG. 3 is a simplified schematic view of an implantable medical device with a bus system
  • FIG. 4 a schematic view of an exemplary implantable medical device bus system
  • FIGS. 5-7 are exemplary timing diagrams for a streaming bus.
  • the present invention provides a bus system and method for implantable medical devices.
  • the bus system provides for flexible and reliable communication between subsystems in an implantable medical device, such as an implantable cardiac defibrillators, implantable pulse generators, and implantable cardiac monitors.
  • the bus system is non-colliding and can be used to facilitate a wide variety of communications between various subsystems.
  • These various subsystems can include one or more sensing devices (e.g., magnetic sensor, pressure sensor, motion sensor, ECG sensor), processors, data storage devices, patient alert devices, power management devices, signal processing and other devices implemented to perform a variety of different functions.
  • the bus system 100 includes a streaming bus 102 , an event bus 104 , and a message bus 106 .
  • Each of the different buses is implemented to provide a different type of communication between subsystems 108 .
  • the streaming bus 102 is implemented to provide reliable, jitter-free communication of periodic sensing data between one or more sensing devices and other subsystems 108 , such as the main processor.
  • the event bus 104 is implemented to reliably deliver event data that notifies subsystems 108 of important events in the implantable medical device.
  • the message bus 106 is implemented to deliver relatively large messages between subsystems 108 . It should be noted that in some implantable medical device applications, all three of these buses may not be implemented. For example, in some applications all bus functionality could be provided using the streaming bus for periodic sensor data and a message bus for both event data and general messages.
  • the implantable medical device 200 includes five subsystems 202 , three of the subsystems 202 residing on a first IC 204 , and two other subsystems residing on a second IC 206 .
  • the subsystems 202 can comprise any type of subsystem on an implantable medical device. Communication between the subsystems 202 is provided by the bus system.
  • the bus system illustrated in FIG. 2 is meant to illustrate the common features of a streaming bus, event bus or message bus.
  • the bus system includes a bus controller 208 , bus conductors 210 and bus interface circuits 212 . Additionally, in this embodiment, the bus system includes data drivers 214 and external bus conductors 216 for communicating between IC's.
  • the bus controller 208 controls the bus system.
  • the bus controller 208 provides the clock signals used to control bus timing, arbitrates the allocation of time on the bus and generally controls the configuration of the bus.
  • the bus conductors 210 are a plurality of conductive lines used to deliver data and control signals from the bus controller 208 to, from and between the bus interface circuits 212 .
  • the bus conductors comprises four separate data lines and two clock and control lines.
  • the clock and controls lines are used to provide bus clocks and other signals between the controller 208 and the bus interface circuits 212 .
  • these clocks can include bus clocks used to trigger data delivery and reconfiguration clocks to reconfigure the bus.
  • the data lines deliver the streaming, event or message data between subsystems.
  • the bus interface circuits 212 provide the interface between the bus and the subsystems 202 . Thus, the bus interface circuits 212 put data on, and retrieve data from, the bus as needed for their associated subsystem.
  • the bus interface circuits 212 thus typically include data buffers and the mechanisms needed to transmit data to and from the bus.
  • the bus interface circuits 212 would also include the mechanisms needed for communicating with their corresponding subsystem.
  • the data drivers 214 and external bus conductors 216 provide for external communication between ICs. As such, the data drivers 214 convert the signals on the bus to an appropriate level for communication to and from an external IC.
  • the bus system illustrated in FIG. 2 shows the common features of a streaming bus, event bus or message bus, each of which could be implemented separately on an implantable medical device.
  • the bus system provides for delivering periodic data between subsystems 202 .
  • the streaming bus is time sliced to provide precise timing and control for data on the bus.
  • the streaming bus assigns the subsystems 202 periodic time slices in which to transmit sensor data.
  • the streaming bus provides the ability to deliver data at precisely controlled periodic time intervals. By delivering subsystem data at precisely controlled time intervals the streaming bus reduces the possibility of jitter in the data, improving the accuracy of the received data.
  • the streaming bus can precisely deliver sensor data from multiple different subsystems, all at their own precisely controlled periodic time interval.
  • the streaming bus can be used to precisely deliver sensor data from a variety of different sensors, including ECG data, temperature data, acceleration data, blood volume data, or any of the other types of sensor data that can be used in an implantable medical device. This allows the streaming bus to be used in applications where precisely controlled bus latency is required.
  • the streaming bus can be used to send data within a pipelined analog-to-digital converter or digital signal processor.
  • the streaming bus provides the ability to reconfigure the bus on the fly without disrupting the flow of data between the various subsystems 202 .
  • This allows additional subsystems 202 to be assigned time slices and/or for time slices to be reassigned to other subsystems 202 without interfering with delivery of other data on the bus.
  • This reconfiguration can occur as a result of an event, such as activation of telemetry or a cardiac anomaly. For example, when a specified event is detected in one sensor, additional subsystems can become activated and need assigned time slices on the bus.
  • the streaming bus is reconfigured by using a separate configuration clock and multiplexing configuration data on the bus between time slices.
  • reconfiguration data can be provided to the various components on the bus, reassigning the time slices as needed to other components without interrupting the data on the time slices themselves.
  • the streaming bus provides high flexibility of data transmission and while maintaining precisely controlled periodic data transmission.
  • an event data bus is configured to send event data between subsystems 202 , where the event data are fixed length, relatively short data messages.
  • the event data are used to reliably indicate that an important event has occurred, and to pass data associated with the event. For example, event data can be sent to notify other subsystems that a cardiac event has been detected, which will in turn cause other systems to activate and respond. Because the event data are relatively short and of defined length each entire event data packet can be fully buffered at the transmitter and receiver.
  • the bus interface circuits for the event bus can be implemented with sufficient data storage to guarantee that event data can be received and buffered. This allows the transmitting subsystem to request an event data packet to be sent without requiring the transmitting subsystem to further monitor the bus.
  • Full buffering allows transmitting and receiving subsystems to run at different clocks or in different states of activation.
  • one subsystem can communicate with another subsystem, even while the other subsystem is inactive.
  • This ability to communicate with other subsystems that are inactive facilitates a high level of fault tolerance in the system.
  • the messages are relatively short it can be assured that an event data will be sent relatively quickly, without having to wait for a very long message to complete.
  • the event bus facilitates high reliability and high speed data transmission for the event bus messages.
  • a message bus is configured to deliver different types of larger messages to and from the subsystems 202 in the implantable medical device.
  • the message bus preferably includes the ability for data transfer synchronization of transmissions to multiple target subsystems 202 . This ensures that messages need to be sent only once, thereby reducing the amount of power used to send messages to multiple target subsystems 202 .
  • the bus controller 208 preferably sends a message header to all bus interface circuits 212 and waits for acknowledgement from each bus interface circuit 212 that they are ready to receive message data.
  • the message bus When the message bus receives acknowledgement from each bus interface circuit 212 as to its readiness to receive the message, the message bus transmits the message to all of the subsystems at once. Thus, the message bus is able to reliably deliver the message while reducing the need for multiple transmissions that would otherwise waste significant power.
  • the bus systems would also typically include priority lines and requests lines used by the bus interface circuits for the bus controller for arbitrating control of the bus.
  • FIG. 3 the implantable medical device bus system is illustrated with the addition of priority lines and request lines used to arbitrate control of the bus.
  • the request lines are configured to link the subsystems and bus controller in a series chain.
  • the priority lines connect the subsystems and bus controller in parallel.
  • signals on the priority lines and the order in which the subsystems are linked by the request lines together determine the order precedence for arbitration on the bus.
  • the bus system includes priority lines 305 .
  • the priority lines 305 are used by the bus interface circuits 212 to indicate that they have a priority message for the bus.
  • the subsystems 202 would tell the bus interface circuits 212 when a message requires high priority. This could occur because the type of message is always prioritized, or because the message has been waiting too long for an opportunity to be put on the bus.
  • the bus interface circuit 212 indicates that it has a priority message by asserting a signal on priority lines 305 .
  • the priority lines 305 comprise separate lines for internal messages and external messages.
  • the bus interface circuit can indicate whether it has a priority message that is to be routed only the current IC, or if it has a priority message that needs to be routed to an external IC as well.
  • These priority line signals are passed to the controller 208 , which uses them to determine if the next data on the bus should be an internal message only, or one that is routed internally and externally.
  • the bus controller 208 will route internally if only the internal priority line was asserted, and the bus controller 208 will route externally if only the external priority line was asserted. If neither or both lines are asserted, then the bus controller 208 will determine if the next message is to be routed externally based on other factors.
  • the request lines are identified by their relationship with the bus system controller.
  • the bus system controller 208 is coupled to an OUT request line 302 and an IN request line 304 , which are part of a series of request lines that connect bus interface circuits 212 in the first IC 204 in series.
  • the bus system controller 208 is coupled to an External OUT request line 308 and an External IN request line 306 , which connect to the bus interface bus interface circuits 212 in the second IC 206 .
  • the external bus control lines are routed through request line drivers 309 that deliver and receive the request signal off the internal integrated circuit 204 to an external integrated circuit 206 .
  • the request lines are routed to create a chain of bus interface circuits 212 on the IC, with the bus controller 208 at the end of the chain.
  • the request lines 302 and 304 are part of the chain of bus interface circuits 212 on the master IC 204
  • request lines 306 and 308 are part of the chain of bus interface circuits 212 on the slave IC 206 .
  • the request lines are used by the bus interface circuits 212 to request control of the bus to send data, and are used collectively by the bus interface circuits 212 and controller 208 to arbitrate which bus interface circuit 212 is given control of the bus.
  • each bus interface circuit 212 can request control of the bus by sending an appropriate signal down the chain from bus interface circuit 212 to bus interface circuit 212 until it reaches the bus controller 208 . If the bus is not already on, the bus controller 208 will turn on the bus when a request is received.
  • Arbitration of the bus is determined by use of the priority lines, and also the order of the bus interface circuits 212 in the chain.
  • the bus interface circuits first determine if any of the other bus interface circuits 212 have requested priority. If only one bus interface circuit 212 has requested priority, then that bus interface circuit 212 is given control of the bus on the next bus clock cycle. If arbitration cannot be determined by the priority line alone, then the order of the bus interface circuits in the request line will be used to determine precedence. For example, if more than one bus interface circuit requests priority, or if no bus interface circuit requests priority, then the bus interface circuit 212 the farthest from the IN request line 304 to the bus controller is given precedence over other bus interface circuits 212 .
  • subsystem is hardwired by the order of subsystems as they are connected serially by the bus request lines, such as request lines 302 and 304 of FIG. 3 .
  • the bus system is arbitrated by determining if any bus interface circuit has requested priority first, and by the order of the bus interface circuits second.
  • the request lines will be used by the bus controller 208 to notify the bus interface circuit 212 when to stop data transmission and go to the next message. For example, when transmitting bus interface circuit 212 causes the request line to fall, the current message has stopped and the bus system can move to the next message. Thus, the falling request line tells the bus interface circuits 212 to again determine what bus interface circuit 212 gets to send the next set of data based on the priority lines and the order of the request lines.
  • message bus and event bus can be implemented to use very low amounts of power. Specifically, the bus systems can be implemented to turn off when not in use, conserving considerable power. Only when a request is sent from a bus interface circuit 212 on the request line will the other bus interface circuits 212 and bus controller 208 turn on. Thus, the bus clocks driven by the bus controller will only turn on when the bus is needed. Furthermore, the bus controller can hold the bus clock such that arbitration can be implemented to occur within a single bus clock.
  • the request lines can also be used to arbitrate a message based on whether the message is coming from a bus interface circuit 212 on an external IC or a bus interface circuit on the internal IC.
  • the chain of bus interface circuits 212 on the IC 204 can be coupled with the bus interface circuits 212 on the external IC 206 such that the external IC bus interface circuits 212 are given precedence over the bus interface circuits 212 on the internal IC 204 . This can be accomplished by chaining the interface circuits 212 together in the bus controller 208 such that bus interface circuits 212 on the external IC get precedence.
  • FIG. 4 a simplified example of three buses on an implantable medical device is illustrated schematically.
  • the event bus includes an event bus controller 404 , event bus conductors 406 , and event bus interface circuits 408 .
  • the streaming bus includes a streaming bus controller 410 , streaming bus conductors 412 , and streaming bus interface circuits 414 .
  • the message bus includes a message bus controller 416 , message bus conductors 418 and message bus interface circuits 420 .
  • the event and message bus also include request lines, including external request lines.
  • the event and message bus each include priority lines, which are not shown in this figure.
  • Each of the bus controllers receives a system clock. From the system clock, the bus controllers generate all the other clocks that will be used for corresponding buses. Because all the clocks are generated from the system clock, the three buses can have a relatively high level of synchronization. For example, the frames in the streaming bus can be implemented to coincide with the event bus clock.
  • an implantable medical device would include more subsystems, with some of those subsystems residing on separate integrated circuits (ICs) and with external communication buses communicating between ICs as was illustrated in FIGS. 2 and 3 .
  • Each of the different buses is implemented to provide a different type of communication between subsystems 402 .
  • the streaming bus is implemented to provide reliable, jitter-free communication of periodic sensing data between one or more sensing devices or other subsystems, such as the main processor.
  • the event bus is implemented to reliably deliver event data that notify subsystems of important events in the implantable medical device.
  • the message bus is implemented to deliver relatively large messages between subsystems, including both read and write messages.
  • the streaming bus is time sliced to provide precise timing and control for data on the bus.
  • the streaming bus assigns the subsystems periodic time slices in which to transmit sensor data and other types of data from the subsystems.
  • the streaming bus provides the ability to deliver data at precisely controlled periodic time intervals. By delivering subsystem data at precisely controlled time intervals the streaming bus reduces the possibility of jitter in the data, improving the accuracy of the received data.
  • the streaming bus is preferably implemented as a plug-and-play digital interconnect. Streaming data would typically be sampled output bytes from sensors or analog-to-digital converters, but could also be low priority block transfers.
  • the streaming bus is particularly applicable to applications where data transfer timing is constant, predictable and periodic once the bus is configured.
  • the streaming bus system is preferably layered, with each higher layer using the functions of the lower layers but not specifying their implementation.
  • the streaming bus system can be conceptually layered into a system layer, application layer, session layer and a network layer.
  • the system layer defines the overall functional objectives and partitions functions into different subsystems.
  • the application layer is the subsystem user-level layer, served by the lower layers.
  • the session layer manages data timing and buffering to the bus, configuration of source ID's, data recognition, and receiver buffering.
  • the network layer controls bus routing, including the routing of data inside the master, internal IC and the routing to slave, external ICs.
  • the streaming bus provides a mechanism for subsystems to send periodic data bytes to each other with guaranteed timing.
  • Each streaming data byte is broadcast in a specified time slice called a slot, with no destination address or label required to be added to the data.
  • the streaming bus thus time-division multiplexes data from various sources onto the bus.
  • the streaming bus is configured with a number of slots repeating in a unit called a frame.
  • the assignment of slots to the various subsystems is programmed for efficiency. Furthermore, the assignment of slots can be reconfigured in such a way that synchronization and periodicity is maintained.
  • FIG. 5 an exemplary timing diagram 500 illustrates how the streaming data bus can be time multiplexed.
  • FIG. 5 shows a timing diagram of a streaming bus data clock (SBdclk) and the associated data on the bus.
  • the bus is multiplexed into 16 slots per frame.
  • the controller sends a streaming bus data clock SBdclk signal for each of the slots that are used.
  • SBdclk signal for each of the slots that are used.
  • those slots that are not proceeded by an SBdclk signal do not include data. This again saves power by reducing the of clock transitions.
  • the bus interface circuits can identify bytes of streaming data by their slot position in the streaming data frame. Because of this, the streaming bus protocol can offer several advantages. For example, the bus can again provide high power efficiency, as only needed data is on the bus, without requiring other bits for addresses or labels.
  • each subsystem slot in the bus By assigning each subsystem slots in the bus, access and timing are guaranteed for each subsystem. Furthermore, by assigning multiple slots per frame to the same subsystem, data transmitted on the bus can have different rates. For example, one subsystem can transmit in four slots per frame, while another subsystem transmits in only one slot per frame. Additionally, slower rates of transmission can be provided by assigning subsystems to alternating frames, or configuring subsystems to skip several frames between transmissions. Thus, the bus can accommodate the different transmission rate requirements of different subsystems.
  • the bus system preferably includes other clocks to synchronize and support reconfiguration.
  • the event reference clock is preferably synchronous with the frame rate used by the streaming bus. This guarantees that event data used to instruct the streaming bus controller on how to allocate the slots are fully transmitted before streaming bus reconfiguration will start at the next frame boundary.
  • the ESclk can be used by the subsystems to know that data from the buses is stable. To ensure that the data on the bus is stable the bus controller will not allow bus clock edges to coincide with ESclk.
  • bus clocks e.g., event bus clock EBclk, message bus clock MBclk, streaming bus data SBdclk, streaming bus configuration SBcclk
  • the data bus can have one or more data bits in parallel.
  • the data bus SBdata can be preferably four bits wide.
  • FIG. 6 a timing diagram 600 illustrates exemplary timing between a streaming bus data clock (SBdclk), streaming bus configuration clock (SBcclk), event reference clock (ESclk), and the slots and data on the streaming bus (SBdata).
  • SBdclk streaming bus data clock
  • SBcclk streaming bus configuration clock
  • ESclk event reference clock
  • the data clock is used to indicate the presence of data in a slot on the bus.
  • SBdclk normal data transfer is synchronized by SBdclk.
  • the event reference clock ESclk is used to provide synchronization between events and frame boundaries.
  • the configuration clock is used to facilitate reconfiguration of the bus by reassigning associated slots.
  • SBcclk would only be used briefly during reconfiguration.
  • SBreset signal asynchronous system reset of the streaming bus interface circuits and the bus controller are provided by SBreset signal.
  • FIG. 7 a timing diagram illustrates how the configuration clock SBCclk is used for reconfiguration.
  • FIG. 7 shows an example where the streaming bus includes 16 slots in each frame, and shows the current assignment of the 16 slots in the first frame, and the new assignment after configuration in the second frame.
  • 4 slots have been previously assigned to the subsystem corresponding to slot owner 9 .
  • the streaming bus interface circuit corresponding to that subsystem would thus put data on the database on the transition of the data clock SBdclk in each of those four frames.
  • slot owner 9 is able to transmit at four times the frame rate.
  • the rest of the slots in the frame 1 are unassigned, as indicated by a 0 specified as the slot owner for those slots. It should be noted that the configuration clock SBcclk and the reconfiguration operation only operate when a change is required to configuration. Otherwise, the streaming bus controller only provides SBdclk and only SBdata is put on the bus.
  • the streaming bus controller initiates a reconfiguration of the streaming data bus by triggering the configuration clock SBCclk during each slot that is to be reconfigured.
  • the configuration clock SBCclk clocks configuration data, and occurs in each slot before the data clock SBDclk that clocks bus data for that slot.
  • the configuration clock SBCclk is triggered each slot, although that is not necessary if all slots are not to be reconfigured.
  • the corresponding slot is reassigned to a slot owner identified by data put on the bus by the bus controller.
  • the streaming bus interface circuits read the data on the bus at each configuration clock SBCclk transition to determine who the slot is now assigned to. The new owner of the slot can then transmit in that slot.
  • each slot in the reconfiguration frame operates according to the new configuration that is made within that slot.
  • the slot owner is again assigned to slot owner 9 .
  • the slot owner 9 can continue to transmit data in that slot.
  • the streaming bus interface circuit for slot owner 9 will immediately recognize that it still owns slot number 9 , and will transmit data in the same slot on the transition of the data block SBdclk.
  • the subsystem corresponding to slot owner 9 will continue to transmit in it assigned slots without any interruption, and thus without any jitter introduced into the flow of data from the subsystem.
  • the slot owner is assigned to a new owner 27 .
  • the streaming bus controller will assign the slot by putting a 27 on the data bus when the configuration clock SBcclk transitions in the second frame. From the configuration data but on the bus by the controller the streaming bus interface circuit corresponding to slot owner 27 will immediately recognize that it has been assigned this time slot, and can begin to put data in that slot on the transition of the data clock SBdclk. Thus, again, the slot is reassigned on the fly. This processes continues for each of the 16 slots in the second frame, with the third slot being assigned to the subsystem identified by slot owner 28 , and the fifth slot being assigned to slot owner number 9 , and so on.
  • the bus system would be configured initially, and would then only be reconfigured when operating parameters of the bus changed.
  • the configuration clock SBcclk would only be provided in those relatively rare frames in which reconfiguration is to occur.
  • slots need to be routed to subsystems that are on external IC's.
  • data from some slots is routed both internally to the subsystems of the master IC and externally to the subsystems of the slave IC.
  • Data in other slots is only routed to the subsystems of the master IC.
  • Data that is routed only internally stays in the master IC.
  • the slave IC continues to see only four slots in the second frame, as the data from the owners 27 and 28 is not transmitted externally from the master IC to the slave IC. Thus, no external pins toggle and external bus interface circuits are “blind” to these slots.
  • a separate external data clock (XSBdclk) signal is provided to the slave IC.
  • the external data clock XSBdclk can be different then the internal SBdclk signal on the master.
  • the SBdclk on the master IC has 8 cycles in the second frame to indicate 8 data transmissions, while the external data clock XSBdclk only has the 4 cycles that clock data that is routed to the external IC.
  • (XSBdata) can be different then the data on the master IC bus SBdata.
  • reconfiguration data is preferably sent to all bus interface circuits, and thus the external configuration clock is the same as the SBcclk signal on the master IC.
  • the streaming bus system preferably provides the ability to reconfigure bus timing, routing or slot assignments without interrupting data periodicity or continuity. This allows subsystems to be added or subtracted, enabled or disabled without disrupting other data on the bus. Reconfiguration occurs at the beginning of a frame, allowing the previous frame to go to completion. Preferably, in addition to facilitating reassignment of slots, reconfiguration can include changing a variety of bus parameters, including slot length, frame rate, routing and bytes per slot.
  • the streaming bus controller would typically be coupled to another bus, such as an event bus to receive instructions as any other subsystem would. Other than that, the streaming bus is generally run independently of other buses.
  • the streaming bus is also suitably implemented for reset-independence such that subsystems can be reset independently without the risk of spreading resets to the entire system.
  • Reductions in power consumption are accomplished in several ways. For example, reductions in power consumption are achieved by gating certain clocks in the bus when no transmission is active, and minimizing the number of clocks per frame. Additionally, data not used outside the master IC is not transmitted other ICs. Finally, the bus is implemented to require only the transmission of data on the bus, without requiring the use of other bits for labels or headers. This again reduces the amount of power used by the bus.
  • the streaming bus is implemented with streaming bus interface circuits for each subsystem that uses the streaming bus.
  • the bus interface circuit provides the connection, buffering, timing and arbitration interface to the bus.
  • the streaming bus also includes a streaming bus controller which controls a streaming bus configuration clock, a streaming bus data clock, and bus timing. The controller configures the bus to drive either only internally (on the master IC) or both externally and internally (to other ICs in addition to the master IC). Finally, the controller controls and determines the bus reconfiguration procedure.
  • Each streaming bus interface circuit takes data presented by the subsystem and sends it across the bus SBdata in sequential nibbles in its assigned slot. Likewise, all streaming bus interface circuits receiving data by latching sequential nibbles in SBdata and presenting them to their corresponding subsystem.
  • the bus interface circuits are implemented to put data on the bus only on the slots in which the corresponding subsystem is the owner, and when the data clock SBDcIk is high. Otherwise, the input to the bus is held at a high impedance.
  • the corresponding bus interface circuit drives the bus data SBdata. Then, on the falling edge of SBDclk all bus interface circuits release SBdata to high impedance, and capture SBdata to a destination register.
  • the streaming bus can use a variety of error control techniques, including bit parity checking and self-monitored test events, as well as procedures for subsystem power faults or internal sources of corruption.
  • the message bus is implemented to deliver different types of larger messages to and from the subsystems in the implantable medical device.
  • the message bus preferably includes the ability for data transfer synchronization of transmissions to multiple target subsystems. This provides the ability to ensure that messages need to be sent only once, thereby reducing the amount of power used to send messages to multiple target subsystems.
  • the message bus preferably sends a message header to all target subsystems and waits for acknowledgement from each target subsystem that they are ready to receive message data.
  • the message bus transmits the message to all of the subsystems at once.
  • the message bus is able to reliably deliver the message while reducing the need for multiple transmissions that would otherwise waste significant power.
  • the message bus system is preferably layered, with each higher layer using the functions of the lower layers but not specifying their implementation.
  • the message bus can be conceptually layered into a system layer, application layer, session layer and a network layer.
  • the system layer defines the overall functional objectives and partitions functions into different subsystems.
  • the message bus is a functional complement to the event bus.
  • the message bus has an unlimited frame length, is bidirectional, and allows for acknowledgements prior to sending.
  • the message bus is implemented with message bus interface circuits for each subsystem that uses the message bus.
  • the bus interface circuit provides the connection, buffering, timing and arbitration interface to the bus.
  • the message bus also includes a message bus controller which controls a message bus clock, a message bus data clock, and frame stops and starts. The controller also configures the message bus to drive either only internally (on the master IC) or both externally and internally (to other ICs in addition to the master IC).
  • the message bus also includes a message bus data driver for each IC. The driver buffers the external drive, controls data direction, and holds internal data while drivers are tristated.
  • the message bus is comprised of 3 control signals, a clock signal MBclk, a request in signal MBreqin and a request out signal MBreqout, plus a 4-bit data bus MBdata.
  • the message data transfer is synchronized by MBclk. Start/stop and some bus arbitration are controlled by MBreqin and MBreqout.
  • Asynchronous system reset of the MBICs is provided by MBreset.
  • MBdata, MBclk and MBreset connect in parallel to each subsystem as part of the bus (see bus 210 in FIG. 3 ).
  • MBreqin/MBreqout connect between interface circuits in series (see the request lines 302 and 304 in FIG. 3 ).
  • Messages are bidirectional, unlike event data or streaming data. Data flow can be either from initiator to responder(s) in a write operation, or to initiator from a single responder in a read operation.
  • each message frame includes a header, sent from the initiating subsystem to the target subsystems. Then, within that frame an acknowledgement (Ack) is received from the responding subsystems.
  • the Ack is a feedback mechanism where any subsystem can communicate its readiness to respond to the message—whether it is its ability to consume incoming data (a write frame) or provide requested data (a read frame).
  • the body of the message is put on the bus.
  • the message When the message is a write operation, the bytes making up the body of the message are put on the bus by the initiating subsystem. When the message is a read operation, the bytes making up the message are put on the bus by the responding subsystem. In either case, the message body can comprise a varying number of data bytes that are put on the data bus by the appropriate message bus interface circuit. Again, the message header, Ack, and message body are all considered part of the same message frame.
  • the header includes a message ID field that identifies the message. Sent at the beginning of the message frame, the header is received by each of the other bus interface circuits. The corresponding subsystems read the header and determine if the message is for them, and if they need to respond. Once a message header is transmitted across the bus, all subsystems evaluate it and determine in what mode they will participate in the message. Each subsystem can then send an acknowledgment back to the initiating subsystem.
  • the acknowledgement can take one of three forms. Specifically, each subsystem can choose “Ready” “Wait” or “Nack” (not ready), which is sent back to the initiating subsystem. Thus, any subsystems that need to respond will interpret the message ID, generate an appropriate Ack, and send the Ack back to the initiating subsystem through the bus interface circuits. For example, during a read the target subsystem will recognize the message and be the only subsystem to respond.
  • the initiating subsystems will wait until an Ack is received from each of the other required subsystems before sending the message body.
  • Ack the use of the Ack procedure allows responders to communicate readiness for data exchange. For example, if the responder needs time to prepare data (e.g. it is firmware-controlled), prepare space to receive data, or interrupt a CPU to handle data, it can request it through Ack. This reduces overall power consumption by assuring that the message body need only be sent once.
  • the message bus system is preferably implemented to provide arbitration. If multiple subsystems attempt bus access simultaneously, the message bus system must determine the order the subsystems get access to the message bus. This is generally referred to as arbitration. As discussed above, arbitration can be based on the physical origin of the message (subsystem priority) and on the context of the message (per-message priority). Per-message priority can be provided using priority lines activated by the bus interface circuits. In this case, bus access is regulated based on the message itself, independent of its physical origin. This can be used by system designers to give preferred bus access to some (priority) messages over other (nonpriority) messages. This ability serves to keep the base MBclk rate as low as possible, separating noncritical messages from peak traffic.
  • Some messages can be configured to be high-priority always, based on the importance of their information, or the criticality of their timing.
  • messages could be assigned priority on-the-fly. For example, if a message sat in a bus interface circuit waiting to be transmitted, but the bus was being hogged by other users, a session layer could assign priority to the message to get it out. This helps to balance bus traffic and compensate against the rigid ordering imposed by the physically-ordered scheme.
  • Subsystem priority arbitrates by physical (hardwired) order of subsystems. Specifically, the order of subsystems as they are connected serially by the bus request lines, such as request lines 302 and 304 of FIG. 3 . Thus, the earliest subsystems in the chain of bus interface circuits are given priority over later subsystems.
  • the request lines can also be used to arbitrate a message based on whether the message is coming from a bus interface circuit on an external IC or a bus interface circuit on the internal IC.
  • the chain of-bus interface circuits on the internal IC can be coupled with the bus interface circuits on the external IC such that the external IC bus interface circuits are given precedence over the bus interface circuits on the internal IC. This can compensate for the lack of priority lines connected from the external IC to the bus controller.
  • the event bus is configured to send event data between subsystems, where the event data are fixed length, relatively short data messages.
  • the event data are used to reliably indicate that an important event has occurred, and to pass data associated with the event. For example, event data can be sent to notify other subsystems that a cardiac event has been detected, which will in turn cause other systems to activate and respond. Because the event data are relatively short and of defined length each entire event data packet can be fully buffered at the transmitter and receiver. This allows the transmitting subsystem to request an event data packet to be sent without requiring the transmitting subsystem to further monitor the bus. Furthermore, full buffering allows transmitting and receiving subsystems to run at different clocks or in different states of activation.
  • one subsystem can communicate with another subsystem, even while the other subsystem is inactive.
  • This ability to communicate with other subsystems that are inactive facilitates a high level of fault tolerance in the system.
  • the event data are relatively short it can be assured that an event data will be sent relatively quickly, without having to wait for a very long message to complete. This facilitates high reliability and high speed data transmission for the event bus messages.
  • the event bus is also suitably implemented for reset-independence such that subsystems can be reset independently without the risk of spreading resets to the entire system.
  • the event layer system is preferably layered, with each higher layer using the functions of the lower layers but not specifying their implementation.
  • the event bus can be conceptually layered into a system layer, application layer, session layer and a network layer.
  • the system layer defines the overall functional objectives and partitions functions into different subsystems.
  • the event bus is implemented with event bus interface circuits for each subsystem that uses the event bus.
  • the bus interface circuit provides the connection, buffering, timing and arbitration interface to the bus.
  • the event bus also includes an event bus controller which controls an event bus clock, a event bus data clock, and frame stops and starts. The controller also configures the event bus to drive either only internally (on the master IC) or both externally and internally (to other ICs in addition to the master IC).
  • the event bus also includes a message bus data driver for each IC. The driver buffers the external drive, controls data direction, and holds internal data while drivers are tristated.
  • the event bus gives a mechanism for subsystems to send short encoded events to each other. Each event is broadcast (i.e. there is no destination address) to all the other subsystems on the same IC, and to external IC's if requested by the bus interface circuit.
  • the bus itself is half-duplex: only one event at a time can be on the bus. But, subsystems can simultaneously request event transmission while listening to incoming events from elsewhere.
  • a typical implantable medical device could include hundreds of signals that could be formatted and sent as event data on the event bus. As a result of partitioning, some of the events never are used outside their subsystem, so don't need broadcasting on the event bus. Some signal traffic between subsystems won't make good events, and may use dedicated pins or wires for functional or timing reasons or to save power or bus bandwidth. It is expected there will be a few hundred different events that use the event bus, and that most or all subsystems will be served by this bus.
  • each event data is formatted into a header and data portions.
  • event data can be limited to be between 1 and 4 bytes long, with the first byte comprising an event ID.
  • the event bus would typically be used to indicate a change of state. For example, in a typical implantable medical device a signal will go high go high to indicate “telemetry on,” and some time later go low to indicate “telemetry off.” Each of these change of states could be described by an event data on.
  • the event bus is comprised of 4 control signals and a four bit wide data bus EBdata.
  • the control signals are the event bus clock EBclk, request lines EBreqin and EBreqout and a reset line EBreset.
  • the event data transfer is synchronized by the event bus clock EBclk. Start and stop, and bus arbitration are controlled by the request lines EBreqin and EBreqout.
  • the reset signal EBreset provides asynchronous system reset of the bus interface circuits.
  • EBdata, EBclk and EBreset connect in parallel to each subsystem (see bus 210 in FIG. 3 ).
  • EBreqin/EBreqout connect between interface circuits in series (see the request lines 302 and 304 in FIG. 3 ).
  • An event frame is the timespan in which one event is arbitrated, sent, and the event bus interface circuits reset for the next frame.
  • the event bus is re-arbitrated for new ownership each frame.
  • a frame once initiated goes to completion—there is no preemption, restart or recall. All event bus interface circuits will share the same frame timing, although the EBclk to each may be skewed.
  • the number of bytes of data transferred during the event frame is allowed to vary from 1 to 4. So each subsystem must be able to recognize the start and stop time. This information is provided through EBreq and EBclk.
  • Event start is indicated by the first negative edge of EBclk after a stop event.
  • Event stop is indicated by the first negative edge of EBclk with EBreqin low.
  • Event bytes are broadcast serially on EBdata, always updated on the positive edge of EBclk. Because of clock skew, it is preferable that EBdata be viewed or loaded by the bus interface circuits on the negative edge of EBclk.
  • the event bus also preferably includes an event reference clock (ESclk) which is routed to the subsystem.
  • This clock is preferably synchronized to other clocks and behaviors throughout the system, and is preferably coordinated with EBclk frequency.
  • the event reference clock is used to sync the streaming bus to the event bus. Syncing the streaming bus with the reference clock means that streaming bus frames are synced with the event clock, thus facilitating communication between the systems.
  • the event bus system is preferably implemented to provide arbitration. If multiple subsystems attempt bus access simultaneously, the event bus system must determine the order the subsystems get access to the event bus.
  • arbitration can be based on the physical origin of the message (subsystem priority) and on the context of the event (per-event priority). Per-message priority can be provided by priority lines activated by the bus interface circuits. In this case, bus access is regulated based on the event itself, independent of its physical origin. This can be used by system designers to give preferred bus access to some (priority) events over other (nonpriority) events. This ability serves to keep the base EBclk rate as low as possible, separating noncritical events from peak traffic.
  • Subsystem priority arbitrates by physical (hardwired) order of subsystems. Specifically, the order of subsystems as they are connected serially by the bus request lines, such as request lines 302 and 304 of FIG. 3 . Thus, the earliest subsystems in the chain of bus interface circuits are given priority over later subsystems.
  • the present invention thus provides a bus system and method for implantable medical devices.
  • the bus system provides for flexible and reliable communication between subsystems in an implantable medical device, such as an implantable cardiac defibrillators, implantable pulse generators, and implantable cardiac monitors.
  • the bus system can be used to facilitate a wide variety of communications between various subsystems.
  • These various subsystems can include one or more sensing devices (e.g., magnetic sensor, pressure sensor, motion sensor, ECG sensor), processors, data storage devices, patient alert devices, power management devices, signal processing and other devices implemented to perform a variety of different functions.
  • the bus system further provides for the rapid development cycle for implantable medical devices by facilitating subsystem modularity.
  • the bus system can be implemented to decouple the subsystems, allowing the subsystems to be removed, added or modified with limited amounts of customization required.
  • the bus system can be implemented to facilitate the adding a new features without requiring a change the implementation of other features. This reduces the amount of required redesign and can also reduce the requirements for regulatory approval of the additional features.

Abstract

A bus system is provided for implantable medical devices. The bus system provides for flexible and reliable communication between subsystems in an implantable medical device. The bus system facilitates a wide variety of communications between various subsystems. These various subsystems can include one or more sensing devices, processors, data storage devices, patient alert devices, power management devices, signal processing and other devices implemented to perform a variety of different functions.

Description

    TECHNICAL FIELD
  • The present invention relates generally to implantable medical devices. More particularly, the present invention relates to bus systems in implantable medical devices.
  • BACKGROUND
  • Wide assortments of implantable medical devices are presently known and commercially available. These implantable medical devices include a variety of implantable cardiac devices. For example, implantable pulse generators (IPGs) are a type of cardiac device that is generally used to elevate the heart rate that is beating too slowly. This type of device is sometimes referred to as a Bradycardia device or a pacemaker. Another type of implantable cardiac device is an implantable cardioverter defibrillator (ICD). This type of device, often referred to as a Tachycardia device, generally provides burst pacing pulses or a defibrillation shock to the heart when the heart is beating too fast or goes into fibrillation. Another type of device is a cardiac resynchronization device that treats heart failure. Another type of device are monitoring devices that use one or more physiologic sensors.
  • Each of these types of implantable medical devices requires the use of several components to provide the desired functionality. For example, a typical implantable medical device includes one or more sensing devices (e.g., magnetic sensor, pressure sensor, motion sensor, ECG sensor), processors, data storage devices, patient alert devices, power management devices, signal processing and other devices implemented to perform a variety of different functions. The various subsystems require mechanisms to communicate between subsystems in the device. For example, a typical implantable medical device requires reliable communication between a variety of different sensing devices and a main processor. Other types of communication can include event and message communication.
  • Each of these different types of communication can have different requirements. Again, to use the example discussed above, communicating between sensing devices and the main processor can require periodic communication reliability delivered at precise time intervals to reduce jitter in the sensing data. In contrast, general message communication between subsystems typically does not require such precise timing de livery, but it can require the ability to send much larger messages.
  • Unfortunately, mechanisms for communicating between subsystems in implantable medical devices lack flexibility to effectively provide for different types of communication between subsystems without requiring a substantial redesign of the communication system and of the subsystems themselves. Thus, there remains a need for improved communication systems in medical devices that facilitate communication between subsystems, including the ability to deliver different types of data with different delivery requirements, while maintaining design and implementation flexibility.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • A more complete understanding of the present invention may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.
  • FIG. 1 is a schematic view of an exemplary implantable medical device bus system;
  • FIG. 2 is a simplified schematic view of an exemplary implantable medical device with a bus system;
  • FIG. 3 is a simplified schematic view of an implantable medical device with a bus system;
  • FIG. 4 a schematic view of an exemplary implantable medical device bus system; and
  • FIGS. 5-7 are exemplary timing diagrams for a streaming bus.
  • DETAILED DESCRIPTION
  • The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary or the following detailed description.
  • The present invention provides a bus system and method for implantable medical devices. The bus system provides for flexible and reliable communication between subsystems in an implantable medical device, such as an implantable cardiac defibrillators, implantable pulse generators, and implantable cardiac monitors. The bus system is non-colliding and can be used to facilitate a wide variety of communications between various subsystems. These various subsystems can include one or more sensing devices (e.g., magnetic sensor, pressure sensor, motion sensor, ECG sensor), processors, data storage devices, patient alert devices, power management devices, signal processing and other devices implemented to perform a variety of different functions.
  • Turning now to FIG. 1, an exemplary implantable medical device bus system 100 is illustrated schematically. The bus system 100 includes a streaming bus 102, an event bus 104, and a message bus 106. Each of the different buses is implemented to provide a different type of communication between subsystems 108. In general, the streaming bus 102 is implemented to provide reliable, jitter-free communication of periodic sensing data between one or more sensing devices and other subsystems 108, such as the main processor. Conversely, the event bus 104 is implemented to reliably deliver event data that notifies subsystems 108 of important events in the implantable medical device. Finally, the message bus 106 is implemented to deliver relatively large messages between subsystems 108. It should be noted that in some implantable medical device applications, all three of these buses may not be implemented. For example, in some applications all bus functionality could be provided using the streaming bus for periodic sensor data and a message bus for both event data and general messages.
  • Turning now to FIG. 2, an implantable medical device is 200 is illustrated schematically. The implantable medical device 200 includes five subsystems 202, three of the subsystems 202 residing on a first IC 204, and two other subsystems residing on a second IC 206. Again, the subsystems 202 can comprise any type of subsystem on an implantable medical device. Communication between the subsystems 202 is provided by the bus system. The bus system illustrated in FIG. 2 is meant to illustrate the common features of a streaming bus, event bus or message bus. The bus system includes a bus controller 208, bus conductors 210 and bus interface circuits 212. Additionally, in this embodiment, the bus system includes data drivers 214 and external bus conductors 216 for communicating between IC's.
  • In general, the bus controller 208 controls the bus system. For example, the bus controller 208 provides the clock signals used to control bus timing, arbitrates the allocation of time on the bus and generally controls the configuration of the bus. The bus conductors 210 are a plurality of conductive lines used to deliver data and control signals from the bus controller 208 to, from and between the bus interface circuits 212. As one example, the bus conductors comprises four separate data lines and two clock and control lines. The clock and controls lines are used to provide bus clocks and other signals between the controller 208 and the bus interface circuits 212. As will be described in greater detail below, these clocks can include bus clocks used to trigger data delivery and reconfiguration clocks to reconfigure the bus. The data lines deliver the streaming, event or message data between subsystems.
  • The bus interface circuits 212 provide the interface between the bus and the subsystems 202. Thus, the bus interface circuits 212 put data on, and retrieve data from, the bus as needed for their associated subsystem. The bus interface circuits 212 thus typically include data buffers and the mechanisms needed to transmit data to and from the bus. The bus interface circuits 212 would also include the mechanisms needed for communicating with their corresponding subsystem. The data drivers 214 and external bus conductors 216 provide for external communication between ICs. As such, the data drivers 214 convert the signals on the bus to an appropriate level for communication to and from an external IC.
  • Again, the bus system illustrated in FIG. 2 shows the common features of a streaming bus, event bus or message bus, each of which could be implemented separately on an implantable medical device. In an implementation of a streaming bus, the bus system provides for delivering periodic data between subsystems 202. The streaming bus is time sliced to provide precise timing and control for data on the bus. Specifically, the streaming bus assigns the subsystems 202 periodic time slices in which to transmit sensor data. Thus, the streaming bus provides the ability to deliver data at precisely controlled periodic time intervals. By delivering subsystem data at precisely controlled time intervals the streaming bus reduces the possibility of jitter in the data, improving the accuracy of the received data. This of particular importance when the data comprises sensor data from a sensor subsystem that must be delivered with little jitter and precise data rates. Additionally, by time slicing the bus and assigning different time slices to different subsystems, the streaming bus can precisely deliver sensor data from multiple different subsystems, all at their own precisely controlled periodic time interval. Thus, the streaming bus can be used to precisely deliver sensor data from a variety of different sensors, including ECG data, temperature data, acceleration data, blood volume data, or any of the other types of sensor data that can be used in an implantable medical device. This allows the streaming bus to be used in applications where precisely controlled bus latency is required. For example, the streaming bus can be used to send data within a pipelined analog-to-digital converter or digital signal processor.
  • Additionally, the streaming bus provides the ability to reconfigure the bus on the fly without disrupting the flow of data between the various subsystems 202. This allows additional subsystems 202 to be assigned time slices and/or for time slices to be reassigned to other subsystems 202 without interfering with delivery of other data on the bus. This reconfiguration can occur as a result of an event, such as activation of telemetry or a cardiac anomaly. For example, when a specified event is detected in one sensor, additional subsystems can become activated and need assigned time slices on the bus. In these cases the streaming bus is reconfigured by using a separate configuration clock and multiplexing configuration data on the bus between time slices. Thus, reconfiguration data can be provided to the various components on the bus, reassigning the time slices as needed to other components without interrupting the data on the time slices themselves. Thus, the streaming bus provides high flexibility of data transmission and while maintaining precisely controlled periodic data transmission.
  • In an event bus implementation, an event data bus is configured to send event data between subsystems 202, where the event data are fixed length, relatively short data messages. The event data are used to reliably indicate that an important event has occurred, and to pass data associated with the event. For example, event data can be sent to notify other subsystems that a cardiac event has been detected, which will in turn cause other systems to activate and respond. Because the event data are relatively short and of defined length each entire event data packet can be fully buffered at the transmitter and receiver. Specifically, the bus interface circuits for the event bus can be implemented with sufficient data storage to guarantee that event data can be received and buffered. This allows the transmitting subsystem to request an event data packet to be sent without requiring the transmitting subsystem to further monitor the bus. Full buffering allows transmitting and receiving subsystems to run at different clocks or in different states of activation. Thus, one subsystem can communicate with another subsystem, even while the other subsystem is inactive. This ability to communicate with other subsystems that are inactive facilitates a high level of fault tolerance in the system. Furthermore, because the messages are relatively short it can be assured that an event data will be sent relatively quickly, without having to wait for a very long message to complete. Thus, the event bus facilitates high reliability and high speed data transmission for the event bus messages.
  • In a message bus configuration, a message bus is configured to deliver different types of larger messages to and from the subsystems 202 in the implantable medical device. To best meet the different requirements of general message delivery, the message bus preferably includes the ability for data transfer synchronization of transmissions to multiple target subsystems 202. This ensures that messages need to be sent only once, thereby reducing the amount of power used to send messages to multiple target subsystems 202. In this technique, the bus controller 208 preferably sends a message header to all bus interface circuits 212 and waits for acknowledgement from each bus interface circuit 212 that they are ready to receive message data. When the message bus receives acknowledgement from each bus interface circuit 212 as to its readiness to receive the message, the message bus transmits the message to all of the subsystems at once. Thus, the message bus is able to reliably deliver the message while reducing the need for multiple transmissions that would otherwise waste significant power.
  • It should be noted in an event bus and message bus implementation, the bus systems would also typically include priority lines and requests lines used by the bus interface circuits for the bus controller for arbitrating control of the bus. Turning now to FIG. 3, the implantable medical device bus system is illustrated with the addition of priority lines and request lines used to arbitrate control of the bus. The request lines are configured to link the subsystems and bus controller in a series chain. The priority lines connect the subsystems and bus controller in parallel. As will be explained in greater detail below, signals on the priority lines and the order in which the subsystems are linked by the request lines together determine the order precedence for arbitration on the bus.
  • Specifically, in the embodiment illustrated in FIG. 3, the bus system includes priority lines 305. The priority lines 305 are used by the bus interface circuits 212 to indicate that they have a priority message for the bus. Typically, the subsystems 202 would tell the bus interface circuits 212 when a message requires high priority. This could occur because the type of message is always prioritized, or because the message has been waiting too long for an opportunity to be put on the bus. In either the case, the bus interface circuit 212 indicates that it has a priority message by asserting a signal on priority lines 305. In one embodiment, the priority lines 305 comprise separate lines for internal messages and external messages. Thus, the bus interface circuit can indicate whether it has a priority message that is to be routed only the current IC, or if it has a priority message that needs to be routed to an external IC as well. These priority line signals are passed to the controller 208, which uses them to determine if the next data on the bus should be an internal message only, or one that is routed internally and externally. Typically, the bus controller 208 will route internally if only the internal priority line was asserted, and the bus controller 208 will route externally if only the external priority line was asserted. If neither or both lines are asserted, then the bus controller 208 will determine if the next message is to be routed externally based on other factors.
  • The request lines are identified by their relationship with the bus system controller. Thus, the bus system controller 208 is coupled to an OUT request line 302 and an IN request line 304, which are part of a series of request lines that connect bus interface circuits 212 in the first IC 204 in series. Likewise, the bus system controller 208 is coupled to an External OUT request line 308 and an External IN request line 306, which connect to the bus interface bus interface circuits 212 in the second IC 206. The external bus control lines are routed through request line drivers 309 that deliver and receive the request signal off the internal integrated circuit 204 to an external integrated circuit 206.
  • As illustrated in FIG. 3, the request lines are routed to create a chain of bus interface circuits 212 on the IC, with the bus controller 208 at the end of the chain. Thus, the request lines 302 and 304 are part of the chain of bus interface circuits 212 on the master IC 204, while request lines 306 and 308 are part of the chain of bus interface circuits 212 on the slave IC 206. The request lines are used by the bus interface circuits 212 to request control of the bus to send data, and are used collectively by the bus interface circuits 212 and controller 208 to arbitrate which bus interface circuit 212 is given control of the bus.
  • Specifically, each bus interface circuit 212 can request control of the bus by sending an appropriate signal down the chain from bus interface circuit 212 to bus interface circuit 212 until it reaches the bus controller 208. If the bus is not already on, the bus controller 208 will turn on the bus when a request is received.
  • Arbitration of the bus is determined by use of the priority lines, and also the order of the bus interface circuits 212 in the chain. In general, the bus interface circuits first determine if any of the other bus interface circuits 212 have requested priority. If only one bus interface circuit 212 has requested priority, then that bus interface circuit 212 is given control of the bus on the next bus clock cycle. If arbitration cannot be determined by the priority line alone, then the order of the bus interface circuits in the request line will be used to determine precedence. For example, if more than one bus interface circuit requests priority, or if no bus interface circuit requests priority, then the bus interface circuit 212 the farthest from the IN request line 304 to the bus controller is given precedence over other bus interface circuits 212. Thus, subsystem is hardwired by the order of subsystems as they are connected serially by the bus request lines, such as request lines 302 and 304 of FIG. 3. Thus, the bus system is arbitrated by determining if any bus interface circuit has requested priority first, and by the order of the bus interface circuits second.
  • Furthermore, the request lines will be used by the bus controller 208 to notify the bus interface circuit 212 when to stop data transmission and go to the next message. For example, when transmitting bus interface circuit 212 causes the request line to fall, the current message has stopped and the bus system can move to the next message. Thus, the falling request line tells the bus interface circuits 212 to again determine what bus interface circuit 212 gets to send the next set of data based on the priority lines and the order of the request lines.
  • Because of the use of the request line, message bus and event bus can be implemented to use very low amounts of power. Specifically, the bus systems can be implemented to turn off when not in use, conserving considerable power. Only when a request is sent from a bus interface circuit 212 on the request line will the other bus interface circuits 212 and bus controller 208 turn on. Thus, the bus clocks driven by the bus controller will only turn on when the bus is needed. Furthermore, the bus controller can hold the bus clock such that arbitration can be implemented to occur within a single bus clock.
  • The request lines can also be used to arbitrate a message based on whether the message is coming from a bus interface circuit 212 on an external IC or a bus interface circuit on the internal IC. Specifically, the chain of bus interface circuits 212 on the IC 204 can be coupled with the bus interface circuits 212 on the external IC 206 such that the external IC bus interface circuits 212 are given precedence over the bus interface circuits 212 on the internal IC 204. This can be accomplished by chaining the interface circuits 212 together in the bus controller 208 such that bus interface circuits 212 on the external IC get precedence.
  • Turning now to FIG. 4, a simplified example of three buses on an implantable medical device is illustrated schematically. In this simplified example there are two subsystems 402, with each of the subsystems coupled to an event bus, a message bus, and a streaming bus. The event bus includes an event bus controller 404, event bus conductors 406, and event bus interface circuits 408. The streaming bus includes a streaming bus controller 410, streaming bus conductors 412, and streaming bus interface circuits 414. The message bus includes a message bus controller 416, message bus conductors 418 and message bus interface circuits 420. The event and message bus also include request lines, including external request lines. Also, the event and message bus each include priority lines, which are not shown in this figure. Each of the bus controllers receives a system clock. From the system clock, the bus controllers generate all the other clocks that will be used for corresponding buses. Because all the clocks are generated from the system clock, the three buses can have a relatively high level of synchronization. For example, the frames in the streaming bus can be implemented to coincide with the event bus clock.
  • As stated above, the example illustrated in FIG. 4 is simplified. Typically, an implantable medical device would include more subsystems, with some of those subsystems residing on separate integrated circuits (ICs) and with external communication buses communicating between ICs as was illustrated in FIGS. 2 and 3. Each of the different buses is implemented to provide a different type of communication between subsystems 402. In general, the streaming bus is implemented to provide reliable, jitter-free communication of periodic sensing data between one or more sensing devices or other subsystems, such as the main processor. Conversely, the event bus is implemented to reliably deliver event data that notify subsystems of important events in the implantable medical device. Finally, the message bus is implemented to deliver relatively large messages between subsystems, including both read and write messages.
  • A detailed embodiment of an exemplary streaming bus system will now be described. As described above, the streaming bus is time sliced to provide precise timing and control for data on the bus. Specifically, the streaming bus assigns the subsystems periodic time slices in which to transmit sensor data and other types of data from the subsystems. Thus, the streaming bus provides the ability to deliver data at precisely controlled periodic time intervals. By delivering subsystem data at precisely controlled time intervals the streaming bus reduces the possibility of jitter in the data, improving the accuracy of the received data.
  • The streaming bus is preferably implemented as a plug-and-play digital interconnect. Streaming data would typically be sampled output bytes from sensors or analog-to-digital converters, but could also be low priority block transfers. The streaming bus is particularly applicable to applications where data transfer timing is constant, predictable and periodic once the bus is configured.
  • Conceptually, the streaming bus system is preferably layered, with each higher layer using the functions of the lower layers but not specifying their implementation. As one example, the streaming bus system can be conceptually layered into a system layer, application layer, session layer and a network layer. The system layer defines the overall functional objectives and partitions functions into different subsystems. The application layer is the subsystem user-level layer, served by the lower layers. The session layer manages data timing and buffering to the bus, configuration of source ID's, data recognition, and receiver buffering. The network layer controls bus routing, including the routing of data inside the master, internal IC and the routing to slave, external ICs.
  • The streaming bus provides a mechanism for subsystems to send periodic data bytes to each other with guaranteed timing. Each streaming data byte is broadcast in a specified time slice called a slot, with no destination address or label required to be added to the data. The streaming bus thus time-division multiplexes data from various sources onto the bus. The streaming bus is configured with a number of slots repeating in a unit called a frame. The assignment of slots to the various subsystems is programmed for efficiency. Furthermore, the assignment of slots can be reconfigured in such a way that synchronization and periodicity is maintained.
  • Turning now to FIG. 5, an exemplary timing diagram 500 illustrates how the streaming data bus can be time multiplexed. Specifically, FIG. 5 shows a timing diagram of a streaming bus data clock (SBdclk) and the associated data on the bus. In this example, the bus is multiplexed into 16 slots per frame. The controller sends a streaming bus data clock SBdclk signal for each of the slots that are used. Thus, those slots that are not proceeded by an SBdclk signal do not include data. This again saves power by reducing the of clock transitions.
  • Because each source of data transmits in an assigned slot, the bus interface circuits can identify bytes of streaming data by their slot position in the streaming data frame. Because of this, the streaming bus protocol can offer several advantages. For example, the bus can again provide high power efficiency, as only needed data is on the bus, without requiring other bits for addresses or labels.
  • By assigning each subsystem slots in the bus, access and timing are guaranteed for each subsystem. Furthermore, by assigning multiple slots per frame to the same subsystem, data transmitted on the bus can have different rates. For example, one subsystem can transmit in four slots per frame, while another subsystem transmits in only one slot per frame. Additionally, slower rates of transmission can be provided by assigning subsystems to alternating frames, or configuring subsystems to skip several frames between transmissions. Thus, the bus can accommodate the different transmission rate requirements of different subsystems.
  • In addition to the bus data clock SBdclk, the bus system preferably includes other clocks to synchronize and support reconfiguration. Specifically, it is desirable to include an event reference clock (ESclk) to synchronize the various subsystems on the different buses. The event reference clock is preferably synchronous with the frame rate used by the streaming bus. This guarantees that event data used to instruct the streaming bus controller on how to allocate the slots are fully transmitted before streaming bus reconfiguration will start at the next frame boundary. Additionally, the ESclk can be used by the subsystems to know that data from the buses is stable. To ensure that the data on the bus is stable the bus controller will not allow bus clock edges to coincide with ESclk. This can be done by pausing any other bus clocks (e.g., event bus clock EBclk, message bus clock MBclk, streaming bus data SBdclk, streaming bus configuration SBcclk) when they are near an ESclk edge.
  • The data bus can have one or more data bits in parallel. For example, the data bus SBdata can be preferably four bits wide. Turning now to FIG. 6, a timing diagram 600 illustrates exemplary timing between a streaming bus data clock (SBdclk), streaming bus configuration clock (SBcclk), event reference clock (ESclk), and the slots and data on the streaming bus (SBdata). In this example, four data clocks and two configuration clocks fit into each slot, allowing each slot to carry 1 byte of configuration data (two sets of four bits on the four bus data lines) and 2 bytes of data (four sets of four bits on the four bus data lines). As described above, the data clock is used to indicate the presence of data in a slot on the bus. Thus, normal data transfer is synchronized by SBdclk. Again, the event reference clock ESclk is used to provide synchronization between events and frame boundaries. Finally, as will be described in greater detail below, the configuration clock is used to facilitate reconfiguration of the bus by reassigning associated slots. Typically, the SBcclk would only be used briefly during reconfiguration. Not shown in FIG. 6, asynchronous system reset of the streaming bus interface circuits and the bus controller are provided by SBreset signal.
  • An example of reconfiguration of the streaming bus will now be discussed in greater detail. Turning now to FIG. 7, a timing diagram illustrates how the configuration clock SBCclk is used for reconfiguration. Specifically, FIG. 7 shows an example where the streaming bus includes 16 slots in each frame, and shows the current assignment of the 16 slots in the first frame, and the new assignment after configuration in the second frame. In the first frame, 4 slots have been previously assigned to the subsystem corresponding to slot owner 9. The streaming bus interface circuit corresponding to that subsystem would thus put data on the database on the transition of the data clock SBdclk in each of those four frames. Thus, slot owner 9 is able to transmit at four times the frame rate. The rest of the slots in the frame 1 are unassigned, as indicated by a 0 specified as the slot owner for those slots. It should be noted that the configuration clock SBcclk and the reconfiguration operation only operate when a change is required to configuration. Otherwise, the streaming bus controller only provides SBdclk and only SBdata is put on the bus.
  • In frame 2, the streaming bus controller initiates a reconfiguration of the streaming data bus by triggering the configuration clock SBCclk during each slot that is to be reconfigured. The configuration clock SBCclk clocks configuration data, and occurs in each slot before the data clock SBDclk that clocks bus data for that slot. In this example, the configuration clock SBCclk is triggered each slot, although that is not necessary if all slots are not to be reconfigured. On the transition of each SBCclk the corresponding slot is reassigned to a slot owner identified by data put on the bus by the bus controller. The streaming bus interface circuits read the data on the bus at each configuration clock SBCclk transition to determine who the slot is now assigned to. The new owner of the slot can then transmit in that slot. Thus, each slot in the reconfiguration frame operates according to the new configuration that is made within that slot.
  • In the first slot of the second frame, the slot owner is again assigned to slot owner 9. Thus, the slot owner 9 can continue to transmit data in that slot. In fact, the streaming bus interface circuit for slot owner 9 will immediately recognize that it still owns slot number 9, and will transmit data in the same slot on the transition of the data block SBdclk. Thus, the subsystem corresponding to slot owner 9 will continue to transmit in it assigned slots without any interruption, and thus without any jitter introduced into the flow of data from the subsystem.
  • On the second slot in the second frame, the slot owner is assigned to a new owner 27. Specifically, the streaming bus controller will assign the slot by putting a 27 on the data bus when the configuration clock SBcclk transitions in the second frame. From the configuration data but on the bus by the controller the streaming bus interface circuit corresponding to slot owner 27 will immediately recognize that it has been assigned this time slot, and can begin to put data in that slot on the transition of the data clock SBdclk. Thus, again, the slot is reassigned on the fly. This processes continues for each of the 16 slots in the second frame, with the third slot being assigned to the subsystem identified by slot owner 28, and the fifth slot being assigned to slot owner number 9, and so on. Slots in which a 0 was transmitted as slot owner are unassigned. When the second frame is completed, slot owner 9 will have been assigned to the four slots, the same for slots it was previously assigned to. Thus, transmissions from the subsystem corresponding to slot owner 9 will have continued through the reconfiguration process without interruption. Likewise, when the reconfiguration frame has been complete slot owners 27 and 28 will have each been assigned two slots in the frame, and have been able transmit data in their assigned slots. Thus, reconfiguration requires only 1 frame to complete, and does not require the interruption of any existing slot assignments or the transmission of data on those assigned slots.
  • It should be noted that typically the bus system would be configured initially, and would then only be reconfigured when operating parameters of the bus changed. Thus, the configuration clock SBcclk would only be provided in those relatively rare frames in which reconfiguration is to occur.
  • It should be noted that not all slots need to be routed to subsystems that are on external IC's. In the example of FIG. 7, data from some slots is routed both internally to the subsystems of the master IC and externally to the subsystems of the slave IC. Data in other slots is only routed to the subsystems of the master IC. Data that is routed only internally stays in the master IC. Specifically, the slave IC continues to see only four slots in the second frame, as the data from the owners 27 and 28 is not transmitted externally from the master IC to the slave IC. Thus, no external pins toggle and external bus interface circuits are “blind” to these slots.
  • To facilitate this separate bus data clocks are provided. Specifically, a separate external data clock (XSBdclk) signal is provided to the slave IC. The external data clock XSBdclk can be different then the internal SBdclk signal on the master. In the illustrated example, the SBdclk on the master IC has 8 cycles in the second frame to indicate 8 data transmissions, while the external data clock XSBdclk only has the 4 cycles that clock data that is routed to the external IC.
  • Likewise the data on the external bus itself, (XSBdata) can be different then the data on the master IC bus SBdata. However, reconfiguration data is preferably sent to all bus interface circuits, and thus the external configuration clock is the same as the SBcclk signal on the master IC.
  • Thus, the streaming bus system preferably provides the ability to reconfigure bus timing, routing or slot assignments without interrupting data periodicity or continuity. This allows subsystems to be added or subtracted, enabled or disabled without disrupting other data on the bus. Reconfiguration occurs at the beginning of a frame, allowing the previous frame to go to completion. Preferably, in addition to facilitating reassignment of slots, reconfiguration can include changing a variety of bus parameters, including slot length, frame rate, routing and bytes per slot. For reprogramming and reconfiguration, the streaming bus controller would typically be coupled to another bus, such as an event bus to receive instructions as any other subsystem would. Other than that, the streaming bus is generally run independently of other buses. The streaming bus is also suitably implemented for reset-independence such that subsystems can be reset independently without the risk of spreading resets to the entire system.
  • Reductions in power consumption are accomplished in several ways. For example, reductions in power consumption are achieved by gating certain clocks in the bus when no transmission is active, and minimizing the number of clocks per frame. Additionally, data not used outside the master IC is not transmitted other ICs. Finally, the bus is implemented to require only the transmission of data on the bus, without requiring the use of other bits for labels or headers. This again reduces the amount of power used by the bus.
  • As describe above, the streaming bus is implemented with streaming bus interface circuits for each subsystem that uses the streaming bus. The bus interface circuit provides the connection, buffering, timing and arbitration interface to the bus. The streaming bus also includes a streaming bus controller which controls a streaming bus configuration clock, a streaming bus data clock, and bus timing. The controller configures the bus to drive either only internally (on the master IC) or both externally and internally (to other ICs in addition to the master IC). Finally, the controller controls and determines the bus reconfiguration procedure.
  • Each streaming bus interface circuit takes data presented by the subsystem and sends it across the bus SBdata in sequential nibbles in its assigned slot. Likewise, all streaming bus interface circuits receiving data by latching sequential nibbles in SBdata and presenting them to their corresponding subsystem.
  • The bus interface circuits are implemented to put data on the bus only on the slots in which the corresponding subsystem is the owner, and when the data clock SBDcIk is high. Otherwise, the input to the bus is held at a high impedance. As one exemplary implementation, on the rising edge of the SBDclk the corresponding bus interface circuit drives the bus data SBdata. Then, on the falling edge of SBDclk all bus interface circuits release SBdata to high impedance, and capture SBdata to a destination register.
  • The streaming bus can use a variety of error control techniques, including bit parity checking and self-monitored test events, as well as procedures for subsystem power faults or internal sources of corruption.
  • A detailed example of a message bus will now be discussed. The message bus is implemented to deliver different types of larger messages to and from the subsystems in the implantable medical device. To best meet the different requirements of general message delivery, the message bus preferably includes the ability for data transfer synchronization of transmissions to multiple target subsystems. This provides the ability to ensure that messages need to be sent only once, thereby reducing the amount of power used to send messages to multiple target subsystems. In this technique, the message bus preferably sends a message header to all target subsystems and waits for acknowledgement from each target subsystem that they are ready to receive message data. When the message bus has received acknowledgement from each subsystem as to its readiness to receive the message, the message bus transmits the message to all of the subsystems at once. Thus, the message bus is able to reliably deliver the message while reducing the need for multiple transmissions that would otherwise waste significant power.
  • Like the streaming bus, the message bus system is preferably layered, with each higher layer using the functions of the lower layers but not specifying their implementation. As one example, the message bus can be conceptually layered into a system layer, application layer, session layer and a network layer. The system layer defines the overall functional objectives and partitions functions into different subsystems. The message bus is a functional complement to the event bus. The message bus has an unlimited frame length, is bidirectional, and allows for acknowledgements prior to sending.
  • Again, like the streaming bus, the message bus is implemented with message bus interface circuits for each subsystem that uses the message bus. The bus interface circuit provides the connection, buffering, timing and arbitration interface to the bus. The message bus also includes a message bus controller which controls a message bus clock, a message bus data clock, and frame stops and starts. The controller also configures the message bus to drive either only internally (on the master IC) or both externally and internally (to other ICs in addition to the master IC). The message bus also includes a message bus data driver for each IC. The driver buffers the external drive, controls data direction, and holds internal data while drivers are tristated.
  • In one embodiment, the message bus is comprised of 3 control signals, a clock signal MBclk, a request in signal MBreqin and a request out signal MBreqout, plus a 4-bit data bus MBdata. The message data transfer is synchronized by MBclk. Start/stop and some bus arbitration are controlled by MBreqin and MBreqout. Asynchronous system reset of the MBICs is provided by MBreset. MBdata, MBclk and MBreset connect in parallel to each subsystem as part of the bus (see bus 210 in FIG. 3). MBreqin/MBreqout connect between interface circuits in series (see the request lines 302 and 304 in FIG. 3).
  • Messages are bidirectional, unlike event data or streaming data. Data flow can be either from initiator to responder(s) in a write operation, or to initiator from a single responder in a read operation. Furthermore, each message frame includes a header, sent from the initiating subsystem to the target subsystems. Then, within that frame an acknowledgement (Ack) is received from the responding subsystems. The Ack is a feedback mechanism where any subsystem can communicate its readiness to respond to the message—whether it is its ability to consume incoming data (a write frame) or provide requested data (a read frame). When the required acknowledgements are received by the initiating subsystem, the body of the message is put on the bus. When the message is a write operation, the bytes making up the body of the message are put on the bus by the initiating subsystem. When the message is a read operation, the bytes making up the message are put on the bus by the responding subsystem. In either case, the message body can comprise a varying number of data bytes that are put on the data bus by the appropriate message bus interface circuit. Again, the message header, Ack, and message body are all considered part of the same message frame.
  • The header includes a message ID field that identifies the message. Sent at the beginning of the message frame, the header is received by each of the other bus interface circuits. The corresponding subsystems read the header and determine if the message is for them, and if they need to respond. Once a message header is transmitted across the bus, all subsystems evaluate it and determine in what mode they will participate in the message. Each subsystem can then send an acknowledgment back to the initiating subsystem.
  • The acknowledgement can take one of three forms. Specifically, each subsystem can choose “Ready” “Wait” or “Nack” (not ready), which is sent back to the initiating subsystem. Thus, any subsystems that need to respond will interpret the message ID, generate an appropriate Ack, and send the Ack back to the initiating subsystem through the bus interface circuits. For example, during a read the target subsystem will recognize the message and be the only subsystem to respond.
  • The initiating subsystems will wait until an Ack is received from each of the other required subsystems before sending the message body. Thus, the use of the Ack procedure allows responders to communicate readiness for data exchange. For example, if the responder needs time to prepare data (e.g. it is firmware-controlled), prepare space to receive data, or interrupt a CPU to handle data, it can request it through Ack. This reduces overall power consumption by assuring that the message body need only be sent once.
  • The message bus system is preferably implemented to provide arbitration. If multiple subsystems attempt bus access simultaneously, the message bus system must determine the order the subsystems get access to the message bus. This is generally referred to as arbitration. As discussed above, arbitration can be based on the physical origin of the message (subsystem priority) and on the context of the message (per-message priority). Per-message priority can be provided using priority lines activated by the bus interface circuits. In this case, bus access is regulated based on the message itself, independent of its physical origin. This can be used by system designers to give preferred bus access to some (priority) messages over other (nonpriority) messages. This ability serves to keep the base MBclk rate as low as possible, separating noncritical messages from peak traffic.
  • Some messages can be configured to be high-priority always, based on the importance of their information, or the criticality of their timing. Alternatively, messages could be assigned priority on-the-fly. For example, if a message sat in a bus interface circuit waiting to be transmitted, but the bus was being hogged by other users, a session layer could assign priority to the message to get it out. This helps to balance bus traffic and compensate against the rigid ordering imposed by the physically-ordered scheme.
  • Subsystem priority arbitrates by physical (hardwired) order of subsystems. Specifically, the order of subsystems as they are connected serially by the bus request lines, such as request lines 302 and 304 of FIG. 3. Thus, the earliest subsystems in the chain of bus interface circuits are given priority over later subsystems.
  • The request lines can also be used to arbitrate a message based on whether the message is coming from a bus interface circuit on an external IC or a bus interface circuit on the internal IC. Specifically, the chain of-bus interface circuits on the internal IC can be coupled with the bus interface circuits on the external IC such that the external IC bus interface circuits are given precedence over the bus interface circuits on the internal IC. This can compensate for the lack of priority lines connected from the external IC to the bus controller.
  • A detailed example of an event bus will now be discussed. The event bus is configured to send event data between subsystems, where the event data are fixed length, relatively short data messages. The event data are used to reliably indicate that an important event has occurred, and to pass data associated with the event. For example, event data can be sent to notify other subsystems that a cardiac event has been detected, which will in turn cause other systems to activate and respond. Because the event data are relatively short and of defined length each entire event data packet can be fully buffered at the transmitter and receiver. This allows the transmitting subsystem to request an event data packet to be sent without requiring the transmitting subsystem to further monitor the bus. Furthermore, full buffering allows transmitting and receiving subsystems to run at different clocks or in different states of activation. Thus, one subsystem can communicate with another subsystem, even while the other subsystem is inactive. This ability to communicate with other subsystems that are inactive facilitates a high level of fault tolerance in the system. Furthermore, because the event data are relatively short it can be assured that an event data will be sent relatively quickly, without having to wait for a very long message to complete. This facilitates high reliability and high speed data transmission for the event bus messages. The event bus is also suitably implemented for reset-independence such that subsystems can be reset independently without the risk of spreading resets to the entire system.
  • Like the streaming bus, the event layer system is preferably layered, with each higher layer using the functions of the lower layers but not specifying their implementation. As one example, the event bus can be conceptually layered into a system layer, application layer, session layer and a network layer. The system layer defines the overall functional objectives and partitions functions into different subsystems.
  • Also, like the streaming bus, the event bus is implemented with event bus interface circuits for each subsystem that uses the event bus. The bus interface circuit provides the connection, buffering, timing and arbitration interface to the bus. The event bus also includes an event bus controller which controls an event bus clock, a event bus data clock, and frame stops and starts. The controller also configures the event bus to drive either only internally (on the master IC) or both externally and internally (to other ICs in addition to the master IC). The event bus also includes a message bus data driver for each IC. The driver buffers the external drive, controls data direction, and holds internal data while drivers are tristated.
  • The event bus gives a mechanism for subsystems to send short encoded events to each other. Each event is broadcast (i.e. there is no destination address) to all the other subsystems on the same IC, and to external IC's if requested by the bus interface circuit. The bus itself is half-duplex: only one event at a time can be on the bus. But, subsystems can simultaneously request event transmission while listening to incoming events from elsewhere.
  • A typical implantable medical device could include hundreds of signals that could be formatted and sent as event data on the event bus. As a result of partitioning, some of the events never are used outside their subsystem, so don't need broadcasting on the event bus. Some signal traffic between subsystems won't make good events, and may use dedicated pins or wires for functional or timing reasons or to save power or bus bandwidth. It is expected there will be a few hundred different events that use the event bus, and that most or all subsystems will be served by this bus.
  • To simplify arbitration and buffering the size of event data is limited. In one embodiment, each event data is formatted into a header and data portions. For example, event data can be limited to be between 1 and 4 bytes long, with the first byte comprising an event ID. The event bus would typically be used to indicate a change of state. For example, in a typical implantable medical device a signal will go high go high to indicate “telemetry on,” and some time later go low to indicate “telemetry off.” Each of these change of states could be described by an event data on.
  • It should be noted that a long series of data bytes can be sent across the event bus, using multiple event data. To the data link layer the transfer appears to be many events. But applications and sessions may consider the long sequence to be a “virtual message.” Because a series of event data could delay more critical events, it is generally desirable to deprioritize any virtual message. Furthermore, the transit time of the virtual message could be quite long, interleaved with normal events. The session layers of the participating subsystems would need to recognize and reassemble the virtual message.
  • Several subsystems may request a transmission at about the same time, so that the data link layer must resolve which EBIC can transmit. Arbitration of bus access is not done in one central location, but is done by the event bus interface circuits and event bus controller working in concert.
  • In one embodiment the event bus is comprised of 4 control signals and a four bit wide data bus EBdata. The control signals are the event bus clock EBclk, request lines EBreqin and EBreqout and a reset line EBreset. The event data transfer is synchronized by the event bus clock EBclk. Start and stop, and bus arbitration are controlled by the request lines EBreqin and EBreqout. The reset signal EBreset provides asynchronous system reset of the bus interface circuits. EBdata, EBclk and EBreset connect in parallel to each subsystem (see bus 210 in FIG. 3). EBreqin/EBreqout connect between interface circuits in series (see the request lines 302 and 304 in FIG. 3).
  • An event frame is the timespan in which one event is arbitrated, sent, and the event bus interface circuits reset for the next frame. The event bus is re-arbitrated for new ownership each frame. A frame once initiated goes to completion—there is no preemption, restart or recall. All event bus interface circuits will share the same frame timing, although the EBclk to each may be skewed. The number of bytes of data transferred during the event frame is allowed to vary from 1 to 4. So each subsystem must be able to recognize the start and stop time. This information is provided through EBreq and EBclk. Event start is indicated by the first negative edge of EBclk after a stop event. Event stop is indicated by the first negative edge of EBclk with EBreqin low.
  • Transmitting is done individually, but all event bus interface circuits receive if they are provided EBclk. Event bytes are broadcast serially on EBdata, always updated on the positive edge of EBclk. Because of clock skew, it is preferable that EBdata be viewed or loaded by the bus interface circuits on the negative edge of EBclk.
  • As discussed above with reference to the streaming bus, the event bus also preferably includes an event reference clock (ESclk) which is routed to the subsystem. This clock is preferably synchronized to other clocks and behaviors throughout the system, and is preferably coordinated with EBclk frequency. Specifically, the event reference clock is used to sync the streaming bus to the event bus. Syncing the streaming bus with the reference clock means that streaming bus frames are synced with the event clock, thus facilitating communication between the systems.
  • Like the message bus, the event bus system is preferably implemented to provide arbitration. If multiple subsystems attempt bus access simultaneously, the event bus system must determine the order the subsystems get access to the event bus. Like the message bus, arbitration can be based on the physical origin of the message (subsystem priority) and on the context of the event (per-event priority). Per-message priority can be provided by priority lines activated by the bus interface circuits. In this case, bus access is regulated based on the event itself, independent of its physical origin. This can be used by system designers to give preferred bus access to some (priority) events over other (nonpriority) events. This ability serves to keep the base EBclk rate as low as possible, separating noncritical events from peak traffic.
  • Subsystem priority arbitrates by physical (hardwired) order of subsystems. Specifically, the order of subsystems as they are connected serially by the bus request lines, such as request lines 302 and 304 of FIG. 3. Thus, the earliest subsystems in the chain of bus interface circuits are given priority over later subsystems.
  • The present invention thus provides a bus system and method for implantable medical devices. The bus system provides for flexible and reliable communication between subsystems in an implantable medical device, such as an implantable cardiac defibrillators, implantable pulse generators, and implantable cardiac monitors. The bus system can be used to facilitate a wide variety of communications between various subsystems. These various subsystems can include one or more sensing devices (e.g., magnetic sensor, pressure sensor, motion sensor, ECG sensor), processors, data storage devices, patient alert devices, power management devices, signal processing and other devices implemented to perform a variety of different functions.
  • The bus system further provides for the rapid development cycle for implantable medical devices by facilitating subsystem modularity. Specifically, the bus system can be implemented to decouple the subsystems, allowing the subsystems to be removed, added or modified with limited amounts of customization required. Furthermore it can be implemented to facilitate the adding a new features without requiring a change the implementation of other features. This reduces the amount of required redesign and can also reduce the requirements for regulatory approval of the additional features.
  • While at least one exemplary embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the exemplary embodiment or exemplary embodiments are only examples, and are not intended to limit the scope, applicability, or configuration of the invention in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the exemplary embodiment or exemplary embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope of the invention as set forth in the appended claims and the legal equivalents thereof.

Claims (22)

1. An implantable medical device bus system, comprising:
a streaming bus, the streaming bus includes a plurality of streaming data conductors, a data clock conductor, and a configuration clock conductor;
a plurality of bus interface circuits coupled to the streaming bus, each of the plurality of bus interface circuits coupled to a subsystem in an implantable medical device;
a streaming bus controller coupled to the streaming bus, the streaming bus controller multiplexes the streaming bus into a plurality of time slots per frame for transmitting streaming data on the streaming data conductors, the streaming bus controller selectively sending configuration clock signals on the configuration clock conductor with configuration data on the streaming data conductors between the streaming data on the streaming data conductors, the configuration data assigning time slots in the plurality of time slots to one or more of the subsystems in the implantable medical device.
2. The implantable medical device bus system of claim 1 wherein the configuration data assigns time slots in the plurality of time slots without disrupting the streaming data on the streaming data conductors.
3. The implantable medical device bus system claim 1 wherein the streaming bus controller sends a streaming bus data clock signal in each time slot to indicate the streaming data.
4. The implantable medical device bus system claim 1 wherein the streaming data comprises sensor data from a sensor on the implantable medical device.
5. The implantable medical device bus system of claim 1 wherein the streaming bus controller selectively sends an external streaming bus data clock to bus interface circuits in the plurality of bus interface circuits on an external integrated circuit, the external streaming bus data clock signaling only time slots assigned on the external integrated circuit.
6. The implantable medical device bus system 1 wherein the implantable medical device comprises an implantable cardiac device, and wherein the streaming data comprises sensor data selected from the group of electrical data, ECG data, accelerometer data and pressure data.
7. The implantable medical device bus system 1 wherein the bus interface circuits receive and recognize streaming data on the streaming data conductors based on time slot location in the plurality of time slots per frame.
8. The implantable medical device bus system 1 wherein each of the plurality of bus interface circuits can be selectively assigned more than one time slot per frame to provide an increased data transmission rate.
9. The implantable medical device bus system 1 wherein each of the plurality of bus interface circuits can be selectively configured to skip frames to provide a reduced data transmission rate.
10. The implantable medical device bus system 1 wherein the streaming bus provides a precise bus latency by assigning a repeating at least one time slot in the plurality of timeslot to a subsystem in the implantable medical device.
11. An implantable medical device bus system, comprising:
a message bus, the message bus including a plurality of message data conductors and a message data clock conductor;
a plurality of bus interface circuits coupled to the message bus, each of the plurality of bus interface circuits coupled to subsystem in an implantable medical device;
request line conductors, the request line conductors coupling the bus interface circuits into a series;
a message bus controller coupled to the message bus and the request line conductors, the message bus system arbitrating messages on the message bus by according to order of the series of transmitting bus interface circuits.
12. The implantable medical device bus system of claim 11 wherein the message data includes a header and a message body, the header sent from an initiating one of the plurality of bus interface circuits, and wherein a responding one of the plurality of bus interface circuits waits until an acknowledgement is received from at least one other of the plurality of bus interface circuits before sending the message body.
13. The implantable medical device bus system claim 12 wherein the initiating one of the plurality of bus interface circuits is the same as the responding one of the plurality of bus interface circuits in a write operation.
14. The implantable medical device bus system claim 12 wherein the initiating one of the plurality of bus interface circuits is different from the responding one of the plurality of bus interface circuits in a read operation.
15. The implantable medical device bus system claim 11 wherein the bus system further includes priority line conductors, the priority line conductors coupling to the bus interface circuits, and wherein the bus interface circuits can request precedence for transmitting on the priority line conductors.
16. The implantable medical device bus system claim 15 wherein priority line conductors includes an external priority line for requesting precedence for transmitting to subsystems on an external integrated circuit and an internal priority line for requesting precedence for transmitting only to subsystems within an integrated circuit.
17. An implantable medical device bus system, comprising:
a streaming bus, the streaming bus including a plurality of streaming data conductors;
a plurality of streaming bus interface circuits coupled to the streaming bus, each of the plurality of streaming bus interface circuits coupled to a subsystem in an implantable medical device, the streaming bus interface circuits transmitting streaming data on the streaming bus in assigned time slots;
a message bus, the message bus including a plurality of message data conductors;
a plurality of message bus interface circuits coupled to the message bus, each of the plurality of message bus interface circuits coupled to subsystem in an implantable medical device, the message bus interface circuits sending message data on the message bus;
an event bus, the event bus including a plurality of event data conductors; and
a plurality of event bus interface circuits coupled to the message bus, each of the plurality of event bus interface circuits coupled to subsystem in an implantable medical device, the event bus interface circuits sending event data on the event bus, the event data having a limited data length.
18. The implantable medical device bus system of claim 17 further comprising a streaming bus controller coupled to the streaming bus, the streaming bus controller multiplexing the streaming bus into a plurality of time slots per frame for transmitting streaming data on the streaming data conductors, the streaming bus controller selectively sending configuration clock signals on a configuration clock conductor with configuration data on streaming data conductors between the streaming data on the streaming data conductors, the configuration data assigning time slots in the plurality of time slots to one or more of the subsystems in the implantable medical device.
19. The implantable medical device bus system of claim 17 further comprising a message bus request line conductors, the message bus request line conductors coupling the message bus interface circuits into a series, and further comprising a message bus controller coupled to the message bus and the request line controllers, the message bus system arbitrating messages on the message bus by according to order of the series of transmitting message bus interface circuits.
20. The implantable medical device bus system of claim 17 further comprising an event bus request line conductors, the event bus request line conductors coupling the event bus interface circuits into a series, and further comprising a event bus controller coupled to the event bus and the request line controllers, the event bus system arbitrating messages on the message bus by according to order of the series of transmitting event bus interface circuits.
21. The implantable medical device bus system of claim 17 wherein the assigned time slots in the streaming bus repeat by frame, and wherein the frame coincides with an event bus clock.
22. The implantable medical device bus system of claim 17 wherein the plurality of event bus interface circuits each include a data buffer, the data buffer large enough to store an entire event data.
US11/192,474 2005-07-29 2005-07-29 Implantable medical device bus system and method Abandoned US20070027485A1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US11/192,474 US20070027485A1 (en) 2005-07-29 2005-07-29 Implantable medical device bus system and method
EP06800606A EP1915196A2 (en) 2005-07-29 2006-07-31 Implantable medical device bus system and method
PCT/US2006/029936 WO2007016564A2 (en) 2005-07-29 2006-07-31 Implantable medical device bus system and method
CA002617058A CA2617058A1 (en) 2005-07-29 2006-07-31 Implantable medical device bus system and method
US12/366,946 US7913015B2 (en) 2005-07-29 2009-02-06 Implantable medical device bus system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/192,474 US20070027485A1 (en) 2005-07-29 2005-07-29 Implantable medical device bus system and method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/366,946 Continuation US7913015B2 (en) 2005-07-29 2009-02-06 Implantable medical device bus system and method

Publications (1)

Publication Number Publication Date
US20070027485A1 true US20070027485A1 (en) 2007-02-01

Family

ID=37564230

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/192,474 Abandoned US20070027485A1 (en) 2005-07-29 2005-07-29 Implantable medical device bus system and method
US12/366,946 Expired - Fee Related US7913015B2 (en) 2005-07-29 2009-02-06 Implantable medical device bus system and method

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/366,946 Expired - Fee Related US7913015B2 (en) 2005-07-29 2009-02-06 Implantable medical device bus system and method

Country Status (4)

Country Link
US (2) US20070027485A1 (en)
EP (1) EP1915196A2 (en)
CA (1) CA2617058A1 (en)
WO (1) WO2007016564A2 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080319497A1 (en) * 2007-06-25 2008-12-25 Advanced Bionics Corporation Architectures for an Implantable Medical Device System
US20120084483A1 (en) * 2010-09-30 2012-04-05 Agarwala Sanjive Die expansion bus
EP2700015A2 (en) * 2011-04-20 2014-02-26 Cochlear Limited Inter-chip communications for implantable stimulating devices
US20150082064A1 (en) * 2013-09-17 2015-03-19 Broadcom Corporation Power Management in a Configurable Bus
US20170373872A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co.,Ltd. Method for implementing a real-time industrial internet field broadband bus
US20170373879A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co.,Ltd. Method for implementing an industry internet field broadband bus
US20170373873A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co., Ltd. Industry internet field broadband bus architecture system
US20170371832A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co.,Ltd. Method for clock synchronization of an industrial internet field broadband bus
CN108885445A (en) * 2016-03-07 2018-11-23 软银机器人欧洲公司 Data communication bus for robot
CN110895848A (en) * 2018-09-13 2020-03-20 北京怡合春天科技有限公司 Intelligent queuing mode and system based on event bus

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8097926B2 (en) 2008-10-07 2012-01-17 Mc10, Inc. Systems, methods, and devices having stretchable integrated circuitry for sensing and delivering therapy
US9123614B2 (en) 2008-10-07 2015-09-01 Mc10, Inc. Methods and applications of non-planar imaging arrays
WO2010042653A1 (en) 2008-10-07 2010-04-15 Mc10, Inc. Catheter balloon having stretchable integrated circuitry and sensor array
US8886334B2 (en) 2008-10-07 2014-11-11 Mc10, Inc. Systems, methods, and devices using stretchable or flexible electronics for medical applications
US8389862B2 (en) 2008-10-07 2013-03-05 Mc10, Inc. Extremely stretchable electronics
US9723122B2 (en) 2009-10-01 2017-08-01 Mc10, Inc. Protective cases with integrated electronics
EP2712491B1 (en) 2011-05-27 2019-12-04 Mc10, Inc. Flexible electronic structure
US9757050B2 (en) 2011-08-05 2017-09-12 Mc10, Inc. Catheter balloon employing force sensing elements
WO2013052919A2 (en) * 2011-10-05 2013-04-11 Mc10, Inc. Cardiac catheter employing conformal electronics for mapping
US9226402B2 (en) 2012-06-11 2015-12-29 Mc10, Inc. Strain isolation structures for stretchable electronics
US9168094B2 (en) 2012-07-05 2015-10-27 Mc10, Inc. Catheter device including flow sensing
US9295842B2 (en) 2012-07-05 2016-03-29 Mc10, Inc. Catheter or guidewire device including flow sensing and use thereof
US9082025B2 (en) 2012-10-09 2015-07-14 Mc10, Inc. Conformal electronics integrated with apparel
US9171794B2 (en) 2012-10-09 2015-10-27 Mc10, Inc. Embedding thin chips in polymer
CN103106160B (en) * 2013-01-31 2015-07-01 中国航空无线电电子研究所 Airborne environment serial advanced technology attachment (STAT) bus storage control system and control method thereof
US9706647B2 (en) 2013-05-14 2017-07-11 Mc10, Inc. Conformal electronics including nested serpentine interconnects
WO2015021039A1 (en) 2013-08-05 2015-02-12 Xia Li Flexible temperature sensor including conformable electronics
KR20160065948A (en) 2013-10-07 2016-06-09 엠씨10, 인크 Conformal sensor systems for sensing and analysis
KR102365120B1 (en) 2013-11-22 2022-02-18 메디데이타 솔루션즈, 인코포레이티드 Conformal sensor systems for sensing and analysis of cardiac activity
JP6549150B2 (en) 2014-01-06 2019-07-24 エムシー10 インコーポレイテッドMc10,Inc. Method of enclosing conformal electronic device
EP3114911B1 (en) 2014-03-04 2023-05-03 Medidata Solutions, Inc. Multi-part flexible encapsulation housing for electronic devices
US9899330B2 (en) 2014-10-03 2018-02-20 Mc10, Inc. Flexible electronic circuits with embedded integrated circuit die
US10297572B2 (en) 2014-10-06 2019-05-21 Mc10, Inc. Discrete flexible interconnects for modules of integrated circuits
USD781270S1 (en) 2014-10-15 2017-03-14 Mc10, Inc. Electronic device having antenna
WO2016134306A1 (en) 2015-02-20 2016-08-25 Mc10, Inc. Automated detection and configuration of wearable devices based on on-body status, location, and/or orientation
WO2016140961A1 (en) 2015-03-02 2016-09-09 Mc10, Inc. Perspiration sensor
US10272010B2 (en) 2015-03-20 2019-04-30 Zoll Medical Corporation Systems and methods for testing a medical device
US10653332B2 (en) 2015-07-17 2020-05-19 Mc10, Inc. Conductive stiffener, method of making a conductive stiffener, and conductive adhesive and encapsulation layers
US10709384B2 (en) 2015-08-19 2020-07-14 Mc10, Inc. Wearable heat flux devices and methods of use
WO2017059215A1 (en) 2015-10-01 2017-04-06 Mc10, Inc. Method and system for interacting with a virtual environment
US10532211B2 (en) 2015-10-05 2020-01-14 Mc10, Inc. Method and system for neuromodulation and stimulation
US11709747B2 (en) * 2016-01-08 2023-07-25 Zoll Medical Corporation Patient assurance system and method
EP3420733A4 (en) 2016-02-22 2019-06-26 Mc10, Inc. System, device, and method for coupled hub and sensor node on-body acquisition of sensor information
CN115175014A (en) 2016-02-22 2022-10-11 美谛达解决方案公司 On-body sensor system
CN109310340A (en) 2016-04-19 2019-02-05 Mc10股份有限公司 For measuring the method and system of sweat
CN106161085B (en) * 2016-06-20 2019-05-03 深圳前海微众银行股份有限公司 The monitoring system and method for messaging bus
US10447347B2 (en) 2016-08-12 2019-10-15 Mc10, Inc. Wireless charger and high speed data off-loader
US10668291B2 (en) * 2018-03-06 2020-06-02 Medtronic, Inc. Impingement detection for implantable medical devices

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4570220A (en) * 1983-11-25 1986-02-11 Intel Corporation High speed parallel bus and data transfer method
US4791629A (en) * 1986-06-02 1988-12-13 Ibm Corporation Communications switching system
US5186169A (en) * 1987-11-13 1993-02-16 Biotronik Mess- Und Therapiegerate Gmbh & Co. Common signal transmission path cardiac pacemaker with switchable capacitors
US5237567A (en) * 1990-10-31 1993-08-17 Control Data Systems, Inc. Processor communication bus
US5448561A (en) * 1991-09-19 1995-09-05 Robert Bosch Gmbh Method & apparatus for data exchange in data processing installations
US5501702A (en) * 1994-06-06 1996-03-26 Medtronic, Inc. Time sharing multipolar rheography apparatus and method
US5941906A (en) * 1997-10-15 1999-08-24 Medtronic, Inc. Implantable, modular tissue stimulator
US6185454B1 (en) * 1998-04-29 2001-02-06 Medtronic, Inc. Power consumption reduction in medical devices employing just-in-time voltage control
US6208658B1 (en) * 1998-09-25 2001-03-27 Vertical Networks, Inc. Systems and methods for multiple mode voice and data communications using intelligently bridged TDM and packet buses and methods for performing telephony and data functions using the same
US20030115369A1 (en) * 2001-12-14 2003-06-19 Walter Randy L. Time slot protocol
US20040116151A1 (en) * 2002-10-08 2004-06-17 Bosch Jozef J.G. Digital system bus for use in low power instruments such as hearing aids and listening devices
US20040236886A1 (en) * 2002-03-15 2004-11-25 Laurent Viard Device and process for acquisition of measurements using a digital communication bus, particularly used during aircraft tests
US20050066088A1 (en) * 2000-06-16 2005-03-24 Medtronic, Inc. Implantable medical device configured for diagnostic emulation through serial communication
US20050107841A1 (en) * 1999-07-27 2005-05-19 Meadows Paul M. Rechargeable spinal cord stimulator system

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4205373A (en) * 1978-05-22 1980-05-27 Ncr Corporation System and method for accessing memory connected to different bus and requesting subsystem
EP0077328A4 (en) * 1981-04-27 1985-06-26 Textron Inc Multi-master processor bus.
US4742475A (en) * 1984-06-19 1988-05-03 Ibg International, Inc. Environmental control system
JPS5840965A (en) * 1981-09-04 1983-03-10 Hitachi Ltd Mail system using telephone circuit
US4586128A (en) * 1983-04-14 1986-04-29 Burroughs Corporation Arbitrator circuit and technique for use in a digital computing system having multiple bus controllers
US4660169A (en) * 1983-07-05 1987-04-21 International Business Machines Corporation Access control to a shared resource in an asynchronous system
US4641266A (en) * 1983-11-28 1987-02-03 At&T Bell Laboratories Access-arbitration scheme
US4796022A (en) * 1985-12-13 1989-01-03 Northern Telecom Limited Double transit bus system
JPH0619760B2 (en) * 1986-04-23 1994-03-16 日本電気株式会社 Information processing equipment
JPS63132365A (en) * 1986-11-22 1988-06-04 Nec Corp Bus adjustment control system
JPH0786853B2 (en) * 1988-02-29 1995-09-20 株式会社ピーエフユー Bus transfer control method
US4872157A (en) * 1988-03-31 1989-10-03 American Telephone And Telegraph Company, At&T Bell Laboratories Architecture and organization of a high performance metropolitan area telecommunications packet network
US5168568A (en) * 1989-02-06 1992-12-01 Compaq Computer Corporation Delaying arbitration of bus access in digital computers
US5132967A (en) * 1990-10-29 1992-07-21 International Business Machines Corporation Single competitor arbitration scheme for common bus
US5297144A (en) * 1991-01-22 1994-03-22 Spectrix Corporation Reservation-based polling protocol for a wireless data communications network
US5274800A (en) * 1991-02-22 1993-12-28 Hewlett-Packard Company Automatic signal configuration
US5495594A (en) * 1991-07-12 1996-02-27 Zilog, Inc. Technique for automatically adapting a peripheral integrated circuit for operation with a variety of microprocessor control signal protocols
JP3524110B2 (en) * 1992-11-06 2004-05-10 株式会社ルネサステクノロジ Microcomputer system
FR2710167B1 (en) * 1993-09-13 1995-11-24 Ouest Standard Telematique Sa Device for switching high speed protocol units, and corresponding switching method.
US6097707A (en) * 1995-05-19 2000-08-01 Hodzic; Migdat I. Adaptive digital wireless communications network apparatus and process
US6072796A (en) * 1995-06-14 2000-06-06 Avid Technology, Inc. Apparatus and method for accessing memory in a TDM network
US5701421A (en) * 1995-11-13 1997-12-23 Motorola, Inc. Pin and status bus structure for an integrated circuit
US6160653A (en) * 1997-03-26 2000-12-12 Sun Microsystems, Inc. Optical computer bus with dynamic bandwidth allocation
FR2767620B1 (en) * 1997-08-25 1999-09-24 Alsthom Cge Alcatel PROCESS FOR OPERATING A DIGITAL TRANSMISSION LINK TEMPORALLY SHARED BY SEVERAL UNITS AND UNIT FOR THE IMPLEMENTATION OF SUCH A PROCESS
US5822244A (en) * 1997-09-24 1998-10-13 Motorola, Inc. Method and apparatus for suspending a program/erase operation in a flash memory
US6163723A (en) * 1998-10-22 2000-12-19 Medtronic, Inc. Circuit and method for implantable dual sensor medical electrical lead
US6411302B1 (en) * 1999-01-06 2002-06-25 Concise Multimedia And Communications Inc. Method and apparatus for addressing multiple frame buffers
IT1308343B1 (en) * 1999-02-03 2001-12-11 St Microelectronics Srl PROCEDURE TO ARBITRATE INTERRUPTION PRIORITIES BETWEEN PERIPHERALS IN A MICROPROCESSOR BASED SYSTEM
AUPQ005099A0 (en) * 1999-04-29 1999-05-20 Canon Kabushiki Kaisha Sequential bus architecture
JP3784994B2 (en) * 1999-05-27 2006-06-14 株式会社東芝 Data processing device
US6446151B1 (en) * 1999-09-29 2002-09-03 Agere Systems Guardian Corp. Programmable time slot interface bus arbiter
US6513083B1 (en) * 1999-09-29 2003-01-28 Agere Systems Inc. Hierarchical bus arbitration
US6414971B1 (en) * 2000-01-31 2002-07-02 Sony Corporation System and method for delivering data packets in an electronic interconnect
WO2001097907A2 (en) * 2000-06-23 2001-12-27 Medtronic, Inc. Network compatible rf wireless link for medical device data management
US6654845B1 (en) * 2000-07-06 2003-11-25 Intel Corporation System and method implementing a secondary bus to avoid read data latency
US6589187B1 (en) * 2000-12-08 2003-07-08 Medtronic, Inc. Prioritized dynamic memory allocation of arrhythmia episode detail collection
US7058740B2 (en) * 2001-03-08 2006-06-06 Sony Corporation Effective bus utilization using multiple buses and multiple bus controllers
AUPR364701A0 (en) * 2001-03-09 2001-04-12 Fleming, Ronald Stephen Marine seismic surveys
AUPS043602A0 (en) * 2002-02-11 2002-03-07 Ferris, Brian Edward Communication system and method
US6918068B2 (en) * 2002-04-08 2005-07-12 Harris Corporation Fault-tolerant communications system and associated methods
US7478174B2 (en) * 2002-04-26 2009-01-13 The Boeing Company Systems and methods for maintaining network stability
US6980850B1 (en) * 2002-12-30 2005-12-27 Pacesetter, Inc. System and method for emulating a surface EKG using an implantable cardiac stimulation device
US6993379B1 (en) * 2002-12-30 2006-01-31 Pacesetter, Inc. System and method for emulating a surface EKG using an implantable cardiac stimulation device
US6813514B1 (en) * 2002-12-30 2004-11-02 Pacesetter, Inc. System and method for emulating a surface EKG using an implantable cardiac stimulation device
US7103412B1 (en) * 2003-05-02 2006-09-05 Pacesetter, Inc. Implantable cardiac stimulation device and method for detecting asymptomatic diabetes
US7214192B2 (en) * 2004-09-07 2007-05-08 Biomedix, Inc. Vascular testing system
US7166076B2 (en) * 2004-09-07 2007-01-23 Biomedix, Inc. Vascular testing system
US7172555B2 (en) * 2004-09-07 2007-02-06 Biomedix, Inc. Vascular testing system

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4570220A (en) * 1983-11-25 1986-02-11 Intel Corporation High speed parallel bus and data transfer method
US4791629A (en) * 1986-06-02 1988-12-13 Ibm Corporation Communications switching system
US5186169A (en) * 1987-11-13 1993-02-16 Biotronik Mess- Und Therapiegerate Gmbh & Co. Common signal transmission path cardiac pacemaker with switchable capacitors
US5237567A (en) * 1990-10-31 1993-08-17 Control Data Systems, Inc. Processor communication bus
US5448561A (en) * 1991-09-19 1995-09-05 Robert Bosch Gmbh Method & apparatus for data exchange in data processing installations
US5501702A (en) * 1994-06-06 1996-03-26 Medtronic, Inc. Time sharing multipolar rheography apparatus and method
US5941906A (en) * 1997-10-15 1999-08-24 Medtronic, Inc. Implantable, modular tissue stimulator
US6185454B1 (en) * 1998-04-29 2001-02-06 Medtronic, Inc. Power consumption reduction in medical devices employing just-in-time voltage control
US6208658B1 (en) * 1998-09-25 2001-03-27 Vertical Networks, Inc. Systems and methods for multiple mode voice and data communications using intelligently bridged TDM and packet buses and methods for performing telephony and data functions using the same
US20050107841A1 (en) * 1999-07-27 2005-05-19 Meadows Paul M. Rechargeable spinal cord stimulator system
US20050066088A1 (en) * 2000-06-16 2005-03-24 Medtronic, Inc. Implantable medical device configured for diagnostic emulation through serial communication
US20030115369A1 (en) * 2001-12-14 2003-06-19 Walter Randy L. Time slot protocol
US20040236886A1 (en) * 2002-03-15 2004-11-25 Laurent Viard Device and process for acquisition of measurements using a digital communication bus, particularly used during aircraft tests
US20040116151A1 (en) * 2002-10-08 2004-06-17 Bosch Jozef J.G. Digital system bus for use in low power instruments such as hearing aids and listening devices

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080319497A1 (en) * 2007-06-25 2008-12-25 Advanced Bionics Corporation Architectures for an Implantable Medical Device System
WO2009002579A1 (en) * 2007-06-25 2008-12-31 Boston Scientific Neuromodulation Corporation Improved architectures for an implantable medical device system
JP2012152606A (en) * 2007-06-25 2012-08-16 Boston Scientific Neuromodulation Corp Implantable stimulator device
US20110015705A1 (en) * 2007-06-25 2011-01-20 Boston Scientific Neuromodulation Corporation Architectures for an Implantable Medical Device System
US8649858B2 (en) 2007-06-25 2014-02-11 Boston Scientific Neuromodulation Corporation Architectures for an implantable medical device system
US8549463B2 (en) * 2010-09-30 2013-10-01 Texas Instruments Incorporated Die expansion bus
US20120084483A1 (en) * 2010-09-30 2012-04-05 Agarwala Sanjive Die expansion bus
EP2700015A4 (en) * 2011-04-20 2014-06-18 Cochlear Ltd Inter-chip communications for implantable stimulating devices
CN103620569A (en) * 2011-04-20 2014-03-05 耳蜗有限公司 Inter-chip communications for implantable stimulating devices
EP2700015A2 (en) * 2011-04-20 2014-02-26 Cochlear Limited Inter-chip communications for implantable stimulating devices
US9141576B2 (en) 2011-04-20 2015-09-22 Cochlear Limited Inter-chip communications for implantable stimulating devices
US20150082064A1 (en) * 2013-09-17 2015-03-19 Broadcom Corporation Power Management in a Configurable Bus
US10890962B2 (en) 2013-09-17 2021-01-12 Avago Technologies International Sales Pte. Limited Power management in a configurable bus
US9939881B2 (en) * 2013-09-17 2018-04-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management in a configurable bus
CN108885445A (en) * 2016-03-07 2018-11-23 软银机器人欧洲公司 Data communication bus for robot
AU2017230784B2 (en) * 2016-03-07 2020-03-26 Softbank Robotics Europe Data communication bus for a robot
US20190058612A1 (en) * 2016-03-07 2019-02-21 Softbank Robotics Europe Data communication bus for a robot
US20170373872A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co.,Ltd. Method for implementing a real-time industrial internet field broadband bus
US10164790B2 (en) * 2016-06-23 2018-12-25 Kyland Technology Co., Ltd. Method for implementing an industry internet field broadband bus
US10162790B2 (en) * 2016-06-23 2018-12-25 Kyland Technology Co., Ltd. Method for clock synchronization of an industrial internet field broadband bus
US10164785B2 (en) * 2016-06-23 2018-12-25 Kyland Technology Co., Ltd. Method for implementing a real-time industrial internet field broadband bus
US10164786B2 (en) * 2016-06-23 2018-12-25 Kyland Technology Co., Ltd. Industry internet field broadband bus architecture system
US20170371832A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co.,Ltd. Method for clock synchronization of an industrial internet field broadband bus
US20170373873A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co., Ltd. Industry internet field broadband bus architecture system
US20170373879A1 (en) * 2016-06-23 2017-12-28 Kyland Technology Co.,Ltd. Method for implementing an industry internet field broadband bus
CN110895848A (en) * 2018-09-13 2020-03-20 北京怡合春天科技有限公司 Intelligent queuing mode and system based on event bus

Also Published As

Publication number Publication date
WO2007016564A2 (en) 2007-02-08
US20090204168A1 (en) 2009-08-13
CA2617058A1 (en) 2007-02-08
WO2007016564A3 (en) 2007-11-01
US7913015B2 (en) 2011-03-22
EP1915196A2 (en) 2008-04-30

Similar Documents

Publication Publication Date Title
US7913015B2 (en) Implantable medical device bus system and method
EP0100662B1 (en) Digital communication system
US5247626A (en) Fddi controller having flexible buffer management
US5509126A (en) Method and apparatus for a dynamic, multi-speed bus architecture having a scalable interface
US7991017B2 (en) Deterministic communication system
US5263163A (en) Arbitration among multiple users of a shared resource
EP0094180A2 (en) Dual-count, round-robin distributed arbitration technique for serial buses
JPS5818656B2 (en) Distributed data processing system
EP2548127B1 (en) Requests and data handling in a bus architecture
NL8800636A (en) BASE STATION FOR A WIRELESS DIGITAL TELEPHONE SYSTEM.
JPS639261B2 (en)
US5167019A (en) Apparatus and method for interconnecting a plurality of devices to a single node in a node-limited serial data bus computer network
EP1302011A1 (en) Media access control for isochronous data packets in carrier sensing multiple access systems
JPH0652900B2 (en) Multi-master communication bus
US7120713B2 (en) Systems and methods for interfacing legacy equipment to high-speed data buses
CN113994638A (en) Subscriber station for a serial bus system and method for communication in a serial bus system
CN112269749A (en) I2C communication system
JP3516451B2 (en) Communication bus systems and stations used in such systems
Klobedanz et al. Distributed coordination of task migration for fault-tolerant FlexRay networks
US7406555B2 (en) Systems and methods for multiple input instrumentation buses
JP2632906B2 (en) Automatic processor module determination system for multiprocessor systems.
RU2423007C1 (en) Determined communications system
JPS6260050A (en) Interbus system
CN115884229B (en) Transmission delay management method, electronic device and storage medium
EP4332782A1 (en) Deterministic memory-to-memory pcie transfer

Legal Events

Date Code Title Description
AS Assignment

Owner name: MEDTRONIC, INC., MINNESOTA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KALLMYER, MR. TODD A.;WALSH, MR. KEVIN K.;REEL/FRAME:018044/0712

Effective date: 20050909

AS Assignment

Owner name: MEDTRONIC, INC., MINNESOTA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KALLMYER, TODD A.;WALSH, KEVIN K.;MASOUD, JAVAID;AND OTHERS;REEL/FRAME:019837/0081;SIGNING DATES FROM 20070628 TO 20070723

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE