USB based synchronization and timing system
AssigneeChronologic Pty. Ltd.
InventorPeter Graham Foster
Life of this patent
Estimating the term…
Abstract
A synchronization apparatus, comprising: a USB device having a USB microcontroller, circuitry for observing USB traffic, and circuitry for decoding from a USB data stream a periodic data structure (such as a clock carrier signal) containing information about a distributed clock frequency and phase and outputting a decoded carrier signal; and circuitry for receiving the decoded carrier signal, for generating a software interrupt upon receipt of a predefined data packet (such as a SOF packet) and for passing the software interrupt to the USB microcontroller; wherein the USB microcontroller is configured to respond to the software interrupt (such as with an interrupt service routine provided therein) by generating an output signal adapted to be used as a synchronization reference signal.
Claims19
A method comprising:
- observing a decoded carrier signal;
- prompting a software interrupt based on a predefined data packet in the decoded carrier signal;
- executing in response to the software interrupt an interrupt service routine that generates an interrupt output signal;
- generating a timing reference signal in response to commands from the interrupt service routine;
- determining a USB microcontroller instruction that was executing when said software interrupt was received;
- determining a number of instruction cycles required by the USB microcontroller instruction;
- and
- assigning a timing validity weighting factor to the timing reference signal based on an uncertainty in reception time of the software interrupt.
A method for distributing a timing reference signal, comprising:
- connecting a device having a processor to a data bus;
- monitoring said data bus with said processor for data signals local to said device, wherein said data contains a periodic data structure;
- said processor responding to detection of said periodic data structure by generating a software interrupt;
- said processor responding to said software interrupt by executing an interrupt service routine;
- said interrupt service routine generating a timing reference signal;
- wherein said periodic data structure is one of a plurality of periodic data structures, and the method includes said processor responding to detection of each of said periodic data structures by generating respective software interrupts, said processor responding to said software interrupts by executing respective interrupt service routines, and said interrupt service routine generating respective timing reference signals, the method further comprising:
- identifying a software instruction being processed by said processor during reception of said respective software interrupt;
- determining a number of instruction cycles required by said processor to execute said software instruction;
- and
- assigning a weighting factor to each of said respective timing reference signals, wherein said weighting factor is a measure of an uncertainty in a period of time between generation of said respective software interrupt and said respective timing reference signal.
A method for distributing a timing reference signal, comprising:
- connecting a device having a processor to a data bus;
- monitoring said data bus with said processor for data signals local to said device, wherein said data contains a periodic data structure;
- said processor responding to detection of said periodic data structure by generating a software interrupt;
- said processor responding to said software interrupt by executing an interrupt service routine;
- said interrupt service routine generating a timing reference signal;
- wherein said periodic data structure is one of a plurality of periodic data structures, and the method includes said processor responding to detection of each of said periodic data structures by generating respective software interrupts, said processor responding to said software interrupts by executing respective interrupt service routines, and said interrupt service routine generating respective timing reference signals, the method further comprising:
- generating a plurality of weighted timing reference signals by combining a plurality of weighting factors with said plurality of timing reference signals, such that a contribution of a given one of said timing reference signals is weighted by its corresponding weighting factor.
A method for weighting a plurality of clock carrier signals comprising:
- monitoring a data bus for a periodic data structure with a processor;
- said processor responding to said periodic data structure by generating a software interrupt;
- said processor responding to said software interrupt by executing an interrupt service routine;
- said interrupt service routine generating a timing reference signal;
- determining a software instruction being processed by said processor during reception of said software interrupt;
- determining a number of instruction cycles required by said processor to execute said software instruction, wherein said number of instruction cycles represents a measure of an uncertainty in determination of a time said processor issued said software interrupt;
- and
- weighting said plurality of clock carrier signals according to said measure of the uncertainty in said time that said processor issued said software interrupt.
An apparatus for weighting a plurality of timing reference signals comprising:
- a processor that supports interrupt service routines;
- circuitry for observing data traffic locally to said processor;
- circuitry for decoding a periodic data structure from said data traffic;
- circuitry for generating an acknowledgement signal corresponding to decoding of said periodic data structure;
- circuitry for generating a software interrupt of said processor configured to issue an interrupt service routine upon receipt of said acknowledgement signal;
- and
- circuitry for generating a timing reference signal in response to commands from an interrupt service routine, the apparatus further comprising:
- an output for reporting which instruction was being executed when said software interrupt occurred;
- a mechanism for determining an uncertainty in a period of time between generation of said software interrupt and said timing reference signal;
- a mechanism for calculating a weighting factor for each of said plurality of timing reference signals.
A method for generating a synchronized USB, comprising synchronizing a respective local clock of each of a plurality of USB devices, wherein said synchronizing is achieved by a method comprising:
- observing a decoded carrier signal;
- prompting a software interrupt based on a predefined data packet in the decoded carrier signal;
- executing in response to the software interrupt an interrupt service routine that generates an interrupt output signal;
- generating a timing reference signal in response to commands from the interrupt service routine;
- determining a USB microcontroller instruction that was executing when said software interrupt was received;
- determining a number of instruction cycles required by the USB microcontroller instruction;
- and
- assigning a timing validity weighting factor to the timing reference signal based on the uncertainty in reception time of the software interrupt.
A synchronized USB, comprising a plurality of apparatuses for weighting a plurality of timing reference signals, wherein each of said apparatuses comprises:
- a processor that supports interrupt service routines;
- circuitry for observing data traffic locally to said processor;
- circuitry for decoding a periodic data structure from said data traffic;
- circuitry for generating an acknowledgement signal corresponding to decoding of said periodic data structure;
- circuitry for generating a software interrupt of said processor configured to issue an interrupt service routine upon receipt of said acknowledgement signal;
- and
- circuitry for generating a timing reference signal in response to commands from an interrupt service routine, the apparatus, further comprising:
- an output for reporting which instruction was being executed when said software interrupt occurred;
- a mechanism for determining an uncertainty in the a period of time between generation of said software interrupt and said timing reference signal;
- a mechanism for calculating a weighting factor for each of said plurality of timing reference signals.
Dependencies are inferred from the claim text.