Ethernet Design Example Components User Guide

ID 683044
Date 4/01/2024
Public
Document Table of Contents

1.4.2. Adjusting Offset, Jitter, and Wander

The TOD clock supports several types of adjustments:
  • Offset—use the OffsetNS and OffsetFNS registers to adjust large offsets in assisting faster system convergence. The offset can be positive or negative. The maximum correction is (109 - 50) ns.
  • Jitter—use the JitterTimer and JitterAdjust registers to achieve small time scales (milliseconds or microseconds) frequency correction.

    The jitter adjustment can either be a positive or negative adjustment per unit time. This helps achieve better frequency corrections. For very low values of the jitter, such as 1 ns correction for every second, the timer must be larger and the adjustment value must be smaller.

    For example, to achieve 1 ns correction every second in a clock domain of 3.2 ns period, configure the registers as follow:
    • JitterTimer = 0x12A05F20, which is the hexadecimal value of (1000000000/3.2).
    • JitterAdjust = 0x10000, which sets the nanosecond field to 0x1 and the fractional nanosecond field to 0x0.
  • Wander—use the WanderTimeLSB, WanderTimeMSB, and WanderAdjust registers to achieve large time scale correction.

    The wander adjustment can either be a positive or negative adjustment per unit time. Wander adjustments are typically on larger time scales such as per hour. For very low values of the wander such as 1 ns per 24 hours, the timer must be larger and the adjustment value must be smaller.

    For example, to achieve 1 ns positive correction every 24 hours (86,400,000,000,000 ns) in a clock domain of 3.2 ns period, configure the registers as follow:
    • WanderAdjust[31:16] = 0x0001 (1 nanosecond)
    • WanderAdjust[15:0] = 0x0000 (0 fractional nanosecond)
    • WanderTimerLSB[30] = 0x0 (positive direction)
    • WanderTimerLSB[29:0] = 0x2D68_B000 (lower 30-bit of 86400000000000 ns/3.2 ns)
    • WanderTimerMSB[15:0] = 0x6239 (upper 16-bit of 86400000000000 ns/3.2 ns)
    For example, to achieve 1 ns negative correction every 24 hours (86,400,000,000,000 ns) in a clock domain of 3.2 ns period, configure the registers as follow:
    • WanderAdjust[31:16] = 0x0001 (1 nanosecond)
    • WanderAdjust[15:0] = 0x0000 (0 fractional nanosecond)
    • WanderTimerLSB[30] = 0x1 (negative direction)
    • WanderTimerLSB[29:0] = 0x2D68_B000 (lower 30-bit of 86400000000000 ns/3.2 ns)
    • WanderTimerMSB[15:0] = 0x6239 (upper 16-bit of 86400000000000 ns/3.2 ns)
Note: The adjustments are available only when PERIOD_CLOCK_FREQUENCY is set to 0.