Clock recovery using a direct smoothing process
First Claim
1. A method for synchronizing a clock of a receiver with a clock of a transmitter, wherein the transmitter is adapted to transmit a sequence of time references to the receiver, each time reference being representative of a time of the transmitter clock at the transmission of the time reference, the method comprising the steps of:
- for each time reference of a subset of the sequence;
estimating a difference between the time reference and a time of the receiver clock corresponding to a reception of the time reference, wherein the difference is estimated based at least in part on a linear model of at least one previous difference between at least one previous time reference and a time of the receiver clock corresponding to a reception of each of the at least one previous time references;
updating an intercept coefficient of the linear model based at least in part on a previous value of the intercept coefficient associated with a previously received time reference, a previous value of a slope coefficient of the linear model associated with the previously received time reference, and an error between an actual difference between the time reference and the time of the receiver clock at the reception of the time reference and the estimated difference;
updating a slope coefficient of the linear model based at least in part on the previous value of the slope coefficient, and the error between an actual difference and the estimated difference; and
modifying, for each time reference of the subset, a frequency of the receiver clock by a frequency offset based at least in part on the updated slope coefficient;
wherein the difference is estimated based at least in part on an equation;
{circumflex over (x)}T(T−
1)={circumflex over (b)}1(T−
1)+{circumflex over (b)}2(T−
1)Δ
t(T)where {circumflex over (x)}T(T−
1) represents the estimated difference associated with a time reference received at time T and determined at a previous time reference received at time T−
1, {circumflex over (b)}1(T−
1) represents a value of the intercept coefficient associated with a previous time reference received at time T−
1 previous to time T, {circumflex over (b)}2(T−
1) represents a value of the slope coefficient associated with the previous time reference, and Δ
t(T) represents one of a group consisting of;
an elapsed time between the reception of the time reference and the reception of the previous time reference and a constant value substantially equal to one.
8 Assignments
0 Petitions
Accused Products
Abstract
A system and method for synchronizing a local clock to a reference clock using a linear model of the error between the local clock and the reference clock is disclosed. In one embodiment, a direct smoothing process is used in conjunction with the linear model to estimate a frequency offset by which the frequency of an oscillator of the local clock is adjusted. Also disclosed herein is a phased-lock loop (PLL) adapted to synchronize a local clock with a reference clock using the direct smoothing process, as well as a system implementing the PLL for timing the playout of data received from a transmitter.
259 Citations
17 Claims
-
1. A method for synchronizing a clock of a receiver with a clock of a transmitter, wherein the transmitter is adapted to transmit a sequence of time references to the receiver, each time reference being representative of a time of the transmitter clock at the transmission of the time reference, the method comprising the steps of:
-
for each time reference of a subset of the sequence; estimating a difference between the time reference and a time of the receiver clock corresponding to a reception of the time reference, wherein the difference is estimated based at least in part on a linear model of at least one previous difference between at least one previous time reference and a time of the receiver clock corresponding to a reception of each of the at least one previous time references; updating an intercept coefficient of the linear model based at least in part on a previous value of the intercept coefficient associated with a previously received time reference, a previous value of a slope coefficient of the linear model associated with the previously received time reference, and an error between an actual difference between the time reference and the time of the receiver clock at the reception of the time reference and the estimated difference; updating a slope coefficient of the linear model based at least in part on the previous value of the slope coefficient, and the error between an actual difference and the estimated difference; and modifying, for each time reference of the subset, a frequency of the receiver clock by a frequency offset based at least in part on the updated slope coefficient; wherein the difference is estimated based at least in part on an equation;
{circumflex over (x)}T(T−
1)={circumflex over (b)}1(T−
1)+{circumflex over (b)}2(T−
1)Δ
t(T)where {circumflex over (x)}T(T−
1) represents the estimated difference associated with a time reference received at time T and determined at a previous time reference received at time T−
1, {circumflex over (b)}1(T−
1) represents a value of the intercept coefficient associated with a previous time reference received at time T−
1 previous to time T, {circumflex over (b)}2(T−
1) represents a value of the slope coefficient associated with the previous time reference, and Δ
t(T) represents one of a group consisting of;
an elapsed time between the reception of the time reference and the reception of the previous time reference and a constant value substantially equal to one.- View Dependent Claims (2, 3, 4, 5, 6, 7)
where {circumflex over (b)}1(T) represents an updated value of the intercept coefficient associated with a time reference received at a time T, {circumflex over (b)}1(T−
1) represents a value of the intercept coefficient associated with a previous time reference received at time T−
1 previous to time T, {circumflex over (b)}2(T−
1) represents a value of the slope coefficient associated with the previous time reference, β
represents a real-value weighting factor between zero and one, e1(T) represents the error between the actual difference and the estimated difference; and
Δ
t(T) represents one of a group consisting of;
an elapsed time between the reception of the time reference and the reception of the previous time reference and a constant value substantially equal to one.
-
-
3. The method as in claim 1, wherein the step of updating the slope coefficient is based at least in part on an equation:
-
4. The method as in claim 1, wherein the frequency offset is based at least in part on the slope coefficient associated with the time reference.
-
5. The method as in claim 4, wherein the step of modifying the frequency of the receiver clock is based at least in part on an equation:
-
fr(T)=fr(T−
1)+Δ
f(T)where fr(T) represents the frequency of the receiver clock after modification, fr(T−
1) represents the frequency of the receiver clock prior to modification, and Δ
f(T) represents a frequency offset equivalent to the slope coefficient associated with the time reference received at time T.
-
-
6. The method as in claim 1, wherein the transmitter and receiver are part of a packet-switched network, and wherein the sequence of time references include a sequence of timestamps transmitted from the transmitter to the receiver as packets over the packet-switched network.
-
7. A computer signal embodied in a carrier wave readable by a computing system and encoding a computer program of instructions for executing a computer process for performing the method recited as in claim 1.
-
8. A phase-locked loop (PLL) for synchronizing a local clock to a reference clock, the PLL comprising:
-
an oscillator being adapted to output a local frequency; a loop filter being adapted to; for each time reference of a sequence of time references of the reference clock; estimate a difference between the time reference and a time of the local clock corresponding to a reception of the time reference, wherein the difference is estimated based at least in part on a linear model of at least one previous difference between at least one previous time reference and a time of the receiver clock corresponding to a reception of each of the at least one previous time references; update an intercept coefficient of the linear model based at least in part on a previous value of the intercept coefficient associated with a previous time reference of the sequence, a previous value of a slope coefficient of the linear model associated with the previous time reference, and an error between an actual difference between the time reference and a time of the local clock at the reception of the time reference and the estimated difference; and update a slope coefficient of the linear model based at least in part on the previous value of the slope coefficient, and the error between the actual difference and the estimated difference; wherein the loop filter is adapted to estimate the difference based at least in part on an equation;
{circumflex over (x)}T(T−
1)={circumflex over (b)}1(T−
1)+{circumflex over (b)}2(T−
1)Δ
t(T)where {circumflex over (x)}T(T−
1) represents the estimated difference associated with a time reference received at time T and determined at a previous time reference received at time T−
1, {circumflex over (b)}1(T−
1) represents a value of the intercept coefficient associated with a previous time reference received at time T−
1 previous to time T, {circumflex over (b)}2(T−
1) represents a value of the slope coefficient associated with the previous time reference, and Δ
t(T) represents one of a group consisting of;
an elapsed time between the reception of the time reference and the reception of the previous time reference and a constant value substantially equal to one; andan oscillator input conditioner operably connected to the loop filter and the oscillator and being adapted to modify the local frequency of the oscillator by a frequency offset based at least in part on the updated slope coefficient. - View Dependent Claims (9, 10, 11, 12, 13)
where {circumflex over (b)}1(T) represents an updated value of the intercept coefficient associated with a time reference received at time T, {circumflex over (b)}1(T−
1) represents a value of the intercept coefficient associated with a previous time reference received at time T−
1 previous to time T, {circumflex over (b)}2(T−
1) represents a value of the slope coefficient associated with the previous time reference, β
represents a real-value weighting factor between zero and one, e1(T) represents the error between the actual difference and the estimated difference, and Δ
t(T) represents one of a group consisting of;
an elapsed time between the reception of the time reference and the reception of the previous time reference and a constant value substantially equal to one.
-
-
11. The PLL as in claim 8, wherein loop filter is adapted to update the slope coefficient based at least in part on an equation:
-
12. The PLL as in claim 8, wherein oscillator input conditioner is adapted to modify the frequency of the local clock based at least in part on an equation:
-
fr(T)=fr(T−
1)+Δ
f(T)where fr(T) represents the frequency of the local clock after modification, fr(T−
1) represents the frequency of the local clock prior to modification, and Δ
f(T) represents a frequency offset equivalent to the slope coefficient associated with a time reference received at time T.
-
-
13. The PLL as in claim 8, wherein the reference clock is a clock of a transmitter and the local clock is a clock of a receiver in a packet-switched network, and wherein the sequence of time references include a sequence of timestamps transmitted from the transmitter to the receiver as packets over the packet-switched network.
-
14. In a packet-switched network, a system for playout of data of a sequence of packets transmitted from a transmitter, the system comprising:
-
a data buffer being adapted to store a data payload of each packet of the sequence of packets; a timestamp buffer being adapted to store a transmitter timestamp of each packet of the sequence of packets, the transmitter timestamp being representative of a time of a clock of the transmitter at a transmission of the packet; a playout module operably connected to the data buffer and the timestamp buffer and being adapted to direct an output of a data payload from the data buffer when a corresponding transmitter timestamp in the timestamp buffer is equivalent to a time of a local clock; and a phased-lock loop (PLL) being adapted to provide the local clock and being further adapted to; for each packet of the sequence of packets; estimate a difference between a timestamp of the packet and a time of the local clock corresponding to a reception of the packet, wherein the difference is estimated based at least in part on a linear model of at least one previous difference between at least one previous time reference and a time of the receiver clock corresponding to a reception of each of the at least one previous time references; update an intercept coefficient of the linear model based at least in part on a previous value of the intercept coefficient associated with a previous packet of the sequence, a previous value of a slope coefficient of the linear model associated with the previous packet, and an error between an actual difference between the timestamp and the time of the local clock at reception of the time reference and the estimated difference; update the slope coefficient of the linear model based at least in part on the previous value of the slope coefficient, and the error between the actual difference and the estimated difference; and modify a frequency of the local clock by a frequency offset based at least in part on the updated slope coefficient; wherein the PLL is adapted to estimate the difference based at least in part on an equation;
{circumflex over (x)}T(T−
1)={circumflex over (b)}1(T−
1)+{circumflex over (b)}2(T−
1)Δ
t(T)where {circumflex over (x)}T(T−
1) represents the estimated difference associated with a timestamp received at time T and determined at a previous time reference received at time T−
1, {circumflex over (b)}1(T−
1) represents a value of the intercept coefficient associated with a previous timestamp received at time T−
1 previous to time T, {circumflex over (b)}2(T−
1) represents a value of the slope coefficient associated with the previous timestamp, and Δ
t(T) represents one of a group consisting of;
an elapsed time between the reception of the timestamp and the reception of the previous timestamp and a constant value substantially equal to one.- View Dependent Claims (15, 16, 17)
where {circumflex over (b)}1(T) represents an updated value of the intercept coefficient associated with a timestamp received at time T, {circumflex over (b)}1(T−
1) represents a value of the intercept coefficient associated with a previous timestamp received at time T−
1 previous to time T, {circumflex over (b)}2(T−
1) represents a value of the slope coefficient associated with the previous timestamp, β
represents a real-value weighting factor between zero and one, e1(T) represents the error between the actual difference and the estimated difference, and Δ
t(T) represents one of a group consisting of;
an elapsed time between the reception of the time reference and the reception of the previous time reference and a constant value substantially equal to one.
-
-
16. The system as in claim 14, wherein the PLL is adapted to update the slope coefficient based at least in part on an equation:
-
17. The system as in claim 14, wherein the PLL is adapted to modify the frequency of the local clock based at least in part on an equation:
-
fr(T)=fr(T−
1)+Δ
f(T)where fr(T) represents the frequency of the local clock after modification, fr(T−
1) represents the frequency of the local clock prior to modification, and Δ
f(T) represents a frequency offset equivalent to the slope coefficient associated with the time reference received at time T.
-
Specification