ChipEnet IEEE 1588 Clock IP core
IEEE 1588 clock standard is an Ethernet packet protocol for synchronizing clocks on a
local area network, LAN. Each clock is a 64 bit count with the LSB representing 1 ns.
The master clock periodically, 1/4 sec to 64 second intervals, broadcast its clock value to
all of the slave clocks in the LAN. Each slave clock, in turn, can send delay calibration
packets to the master for time stamping and subsequent return of the time stamp.
These delay values are used by each slave to determine its offset from the master clock.
Ideally, all 64 bit clocks in a LAN will have identical values at all times.
So an IEEE 1588 clock can be called a Packet Locked Loop, PLL. Like any active
synchronized circuit, the IEEE 1588 clock is a servo and is usually implemented with a
PID algorithm of some sort. Unlike a traditional phase locked loop, the feedback
reference is infrequent and unreliable. The main problem with the IEEE 1588 protocol is
that it implicitly assumes the packets will arrive at the destination reliably and with no
delays. This assumption is, of course, untrue. Any Ethernet LAN, when congested or
operating under high loads, will arbitrarily delay packets or even delete them. Thus the
performance of an IEEE 1588 clock may vary considerably depending on the LAN traffic.
Many vendors demonstrate or claim performance of their IEEE 1588 clock only under
ideal network conditions. In distinct contrast, the ChipEnet IEEE 1588 clock has been
designed to operate under less than ideal network conditions. Custom algorithms have
been implemented in the clock servo to reject noise and extract the correct clock values.
The ChipEnet IEEE 1588 clock consists of an Ethernet MAC, 10/100Mbit or Gigabit, with
built in timestamping circuits plus complete IEEE 1588 packet parsing logic and a servo
clock. No additional processor or software is needed. The servo clock use the PHY clock
as the default oscillator or an optional oscillator may be used. No special PHY is needed.
Just reset and the clock starts ticking with the 64 bit value always montonically
increasing. Please take a look at the Youtube video to see the performance under actual
operating conditions. The last part of the video shows the robustness of the servo clock
under high network congestion conditions. Note that the clock does not change at all
when 50% of the packets are randomly delayed.
http://www.youtube.com/watch?v=GtFxeJHJSLM
Other applications for IEEE 1588 protocol
Besides synchronizing clocks on a LAN, the IEEE 1588 protocol can be used for other
interesting applications. The protocol basically provides a mechanism for adjusting a 64
bit binary variables on all nodes of a LAN from a central location. This means a master
node can speedup or slow down this common variable across the entire LAN. A specific
node can be individually changed if the master only send packets to that node so
specific nodes can be skewed on command. What does this mean ? Many dumb devices
can be controlled from a central point using low cost Ethernet network. The application
is up to the imagination. Any variable which can be mapped to a changing binary value
can be controlled. Temperature, linear position, speed, etc., are all candidates for control
using the IEEE 1588 protocol. The protocol can also be modified to support additional
features.