After a value has been established in the
system_timer, it begins to increment by a fixed amount on a cycle-to-cycle
basis. This fixed amount is labeled as
the block diagram.
The amount of the increment can be adjusted in one of three methods. The
desired method is selected using the signal
ctl_tx/rx_ptp_st_adjust_type_N input. The update value is provided by
ctl_tx/rx_ptp_st_adjust_N and the operation is triggered by
toggling the value of
Updates can be performed at any time, although changes should only be performed once every 10 clocks (system clocks) to avoid issues with retiming.
- Method 1: Phase Adjustment (type = 2’b00)
system_timercan be shifted in time by a specific amount (that is, a phase shift) using the system timer phase adjustment method. The provided adjustment is defined to be in units of 2-8 ns and is directly added to
system_timerin addition to the usual timer increment. It is a one-time adjustment and you must repeat the operation again to add another amount. The maximum shift is (218 - 1) × 2-8 ns, or approximately 1 µs.
- Method 2: Coarse Frequency Set (type = 2’b01)
- In this mode, you can define a new increment value that is to be added
system_timeron a clock-by-clock basis. The provided increment value is interpreted as an unsigned integer in units of 2-8 ns. To make more fine-grained adjustments (< 2-8 ns) to
increment_value, the next method must be used.
- Method 3: Fine Frequency Adjust (type = 2’b10)
- This method allows you to make sub-nanosecond adjustments to the interval value. The provided increment value is interpreted as a signed integer in units of 2-40 ns. It is added to the existing timer increment. This is a signed value, so subtraction is possible if a negative adjustment is provided.