GTS Ethernet Intel® FPGA Hard IP User Guide

ID 817676
Date 4/01/2024
Public

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

Document Table of Contents

5.4.3.1. TX UI Adjustment

  1. Request snapshot of initial TX TAM:
    csr_write (ptp_uim_tam_snapshot.tx_tam_snapshot, 1’b1)
  2. Read snapshotted initial TAM and counter values:
    tx_tam_0_31_0 = csr_read (ptp_tx_uim_tam_info0.tam_31_0[31:0])
    tx_tam_0_47_32 = csr_read (ptp_tx_uim_tam_info1.tam_47_32[15:0])
    tx_tam_0_cnt   = csr_read (ptp_tx_uim_tam_info1.tam_cnt[30:16])
    tx_tam_0_valid = csr_read (ptp_tx_uim_tam_info1.tam_valid[31])
    • If tx_tam_0_valid = 1, complete TAM by concatenating the initial TAM values:
      tx_tam_0 = {tx_tam_0_47_32, tx_tam_0_31_0};
    • If tx_tam_0_valid = 0, restart from Step1.
  3. Starting from time when step 1 is executed, wait for time duration as specified in section Minimum and Maximum Reference Time (TAM) Interval for UI Measurement (Hardware).
  4. Request snapshot of Nth TX TAM:
    csr_write (ptp_uim_tam_snapshot.tx_tam_snapshot, 1’b1)
  5. Read snapshotted Nth TAM and counter values:
    tx_tam_n_31_0 = csr_read (ptp_tx_uim_info0.tam_31_0[31:0])
    tx_tam_n_47_32 = csr_read (ptp_tx_uim_tam_info1.tam_47_32[15:0])
    tx_tam_n_cnt   = csr_read (ptp_tx_uim_tam_info1.tam_cnt[30:16])
    tx_tam_n_valid = csr_read (ptp_tx_uim_tam_info1.tam_valid[31])
    Form the TAM by concatenating snapshotted Nth TAM values:
    tx_tam_n = {tx_tam_n_47_32, tx_tam_n_31_0};
  6. Check if there was a large change to TOD value impacting TAM value:
    tx_tam_n_valid = csr_read (ptp_tx_uim_tam_info1.tam_valid[31])

    If tx_tam_n_valid = 0, restart from Step 1. If you used tx_tam_n as tx_tam_0 and tx_tam_n_cnt as tx_tam_0_cnt, you can skip Steps 1 and 2. Then, you can start the wait time in Step 3 when the Step 4 executes.

  7. Calculation:
    1. Get TAM interval:
      tx_tam_interval = <Refer to Reference Time Interval>
      tx_tam_interval_per_pl = tx_tam_interval / PL
    2. Calculate time elapsed:
      tx_tam_delta = 
         (tx_tam_n <= tx_tam_0) ? [(tx_tam_n + 10^9 ns) – tx_tam_0] 
                                : (tx_tam_n – tx_tam_0)
      Per Step 3, tx_tam_0 and tx_tam_n difference must be within the expected time range.
      • If tx_tam_delta (in ms) is lesser that the minimum time value specified by Time (ms) column of Table: Minimum and Maximum Reference Time (TAM) Interval Allowed for UI Measurement (Hardware Basic Mode), discard the result and restart from Step 3.
      • If tx_tam_delta (in ms) is greater than the maximum value specified by Time (ms) column of Table: Minimum and Maximum Reference Time (TAM) Interval Allowed for UI Measurement (Hardware Basic Mode), discard the result and restart from Step 1.
      Note: 10^9 ns = 48’h 3B9A_CA00_0000
    3. Calculate TAM count value:
      tx_tam_cnt = (tx_tam_n_cnt < tx_tam_0_cnt) ? [(tx_tam_n_cnt + 2^15) – tx_tam_0_cnt] 
      									        : (tx_tam_n_cnt – tx_tam_0_cnt)
      Per Step 3, tx_tam_0 and tx_tam_n difference must be within the expected time range.
      • If tx_tam_cnt (in ms) is lesser that the minimum time value specified by Number of Count column of Table: Minimum and Maximum Reference Time (TAM) Interval Allowed for UI Measurement (Hardware Basic Mode), discard the result and restart from Step 3.
      • If tx_tam_cnt (in ms) is greater than the maximum value specified by Number of Count column of Table: Minimum and Maximum Reference Time (TAM) Interval Allowed for UI Measurement (Hardware Basic Mode), discard the result and restart from Step 1.
    4. Calculate UI value:
      tx_ui = (tx_tam_delta) / (tx_tam_cnt * tx_tam_interval_per_pl)
  8. Write the calculated UI value to IP:
    csr_write (tx_ptp_ui, tx_ui)

    Ensure the format is {4-bit nanoseconds, 28-bit fractional nanoseconds}.

  9. After first UI measurement, for every minimum TAM interval or longer duration, repeat step 1 to 8. This is to prevent time counter drift from golden time-of-day in the system whenever clock ppm changes.