Ethernet Design Example Components User Guide

ID 683044
Date 11/21/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

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.