The ingress logic does not parse the ingress packets to search for 1588 (PTP) frames. Instead, it takes a timestamp for every received frame and outputs this value to the user logic. The feature is always enabled, but the timestamp output can be ignored by users not requiring this function.
See Port Descriptions for a detailed description of signals related to the RX timestamping function.
To compensate for lane skew, the alignment buffer fill levels for each PCS lane are provided as outputs. The RX timestamp function is shown in the following figure.
In the preceding figure, timestamps are captured for each word of lane 0 which is exiting the gearbox plane. The capture logic accounts for the gearbox dead cycle which occurs every 33 cycles.
Timestamps are filtered after the PCS decoder to retain only those timestamps corresponding to an SOP. The PCS also identifies the PCS lane on which the SOP occurred.
The lane alignment fill buffers are carried through to the user interface output. These average values of the fill levels are not expected to vary over time. The average value should be taken to the required accuracy to remove the clock cycle jitter. The alignment fill values reflect the static skew present in each lane.
The signals stat_rx_pcsl_number_0[4:0] to stat_rx_pcsl_number_19[4:0] can be used to correlate each PCS lane to a physical
lane.
Soft logic improves timestamp accuracy and
compensate for the lane alignment FIFO fill levels by adding or subtracting the relative
fill level of the selected lane. The reference fill level is the average fill level of the
RX lane aligner fill after the PCS lane number carried by rx_ptp_pcslane_out is translated to a PMD lane number via the stat_rx_pcsl_number_*. The relationship between the 100G
Ethernet subsystem and the soft logic is shown in the following figure.
The corrected timestamp is computed as:
Where:
-
rx_ptp_tstamp_outis the timestamp at the first gearbox, and is filtered by the PCS to correspond to the start of the SOP. Therx_ptp_tstamp_outvalue is a unit of time. Whereas the fill level is not a unit of time. To translate the fill level to time, multiply the fill level by the cycle period. -
rx_lane_aligner_fill_0is the time average of the alignment buffer fill level for the lane on which the timestamp was taken. - Reference fill level is the average
fill level of the RX lane aligner fill after the PCS lane number carried by
rx_ptp_pcslane_outis translated to a PMD lane number via thestat_rx_pcsl_number_*.