The IEEE 1588 uses two types of time field formats:
- Time-of-Day (ToD) Format
- IEEE 1588-2008 format consisting of an unsigned 48-bit second field and a 32-bit nanosecond field. This format is compatible with version 1 of the standard.
- Correction Field Format
- Introduced in version 2 to handle Transparent clocks and better than 1 ns precision.
It is a signed 64-bit integer in units of 2-16 ns. For
example, 2.5 ns is represented as
64’h0000_0000_0002_8000
.
The system_timer
is implemented as an
internal, unsigned linear counter which counts time in units of 2-40 ns. Each clock cycle system_timer
is
incremented by the quantity increment_value
, which
represents the period of the system timer clock in the same units. For example, for a
nominal 644.0625 MHz clock, the increment value would be 42'h18D_3018_D302
(1,705,908,949,762 × 2-40 ns). This
increment value is configured by the MRMAC at
start-up. If KR4-FEC is used, a different initial value is configured: 42’h181_8181_8182
.
system_timer
through the various timestamping
interfaces (that is, TX and RX packet timestamps). This is equivalent to a timer which
counts in units of 2‑8 ns (that is, ~3.9 ps). User logic can map
these 55 bits directly into Bits[62:8] of a Correction Field format timestamp. The bottom
eight correction field bits should be set to 8’h0
as the
architecture does not support this degree of precision. The least-significant 32 bits of the MRMAC (that is, < 2-8 ns portion of the
counter) is not available through the timestamping interfaces. This allows the system_timer
to be adjusted at sub-nanosecond levels to track an
external master clock, as described in the next section.