E-tile Hard IP User Guide: E-Tile Hard IP for Ethernet and E-Tile CPRI PHY Intel® FPGA IPs

ID 683468
Date 12/13/2021
Public

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

Document Table of Contents

2.12.8. 1588 PTP Registers

The 1588 PTP registers together with the 1588 PTP signals process and provide Precision Time Protocol (PTP) timestamp information as defined in the IEEE 1588-2008 Precision Clock Synchronization Protocol for Networked Measurement and Control Systems Standard. The 1588 PTP module provides you the support to implement the 1588 Precision Time Protocol in your design.

Table 76.  TX 1588 PTP Registers

Addr

Name

Bit

Description

HW Reset Value

Access

0xA00 TXPTP_REVID [31:0] IP core revision ID.

0x0504_2018

RO
0xA01 TXPTP_SCRATCH [31:0] Scratch register available for testing. 32'b0 RW
0xA05 TX_PTP_CLK_PERIOD [19:0]

20-bit register holding the datapath clock period in the IEEE 1588v2 format. This value is used to estimate delays through the datapath.

Period of the 402.83 MHz EHIP clock in 1588v2 format.

Bits[19:16]: nanoseconds (ns)

Bits[15:0]: fractions of nanosecond

0x27B81 RW
0xA0A TX_PTP_EXTRA_LATENCY [31:0] User-defined extra latency the IP core adds to outgoing TX 1-step and 2-step timestamps.

[31]: Sign bit, set to 1 for negative extra latency

Bits[30:16]: Extra latency in nanoseconds

Bits[15:0]: Extra latency in fractions of nanosecond (value/17'h10000)

For example, to set a TX extra latency of +2.5 ns, set tx_ptp_extra_latency to 32'h00028000.

32'b0 RW
0xA0D PTP_DEBUG [31:0]

Controls a small number of PTP debug features.

  • Bit[0] = 1: instead of inserting PTP field values in TX packets when executing PTP TX 1-step commands, insert fixed values
    • Insert 8'hAA in all bytes that would have been used for timestamp bytes
    • Insert 8'hBB in all bytes that would have been used for correction field bytes
    • Insert 8'hCC in all bytes that would have been used for Extension bytes
  • Bit[31:1]: Reserved
0x0 RW
0xB10 TX_UI_REG [31:0] Sets the time of a single serial bit on the TX Serial interface.

Sets the time for a single TX serial bit. This time is used to generate TX timestamp estimates.

  • Bit[31:24]: Nanoseconds field for the time of a single serial TX bit
  • [23:0]: Fractional nanoseconds field for the time of a single serial TX bit
0x9EE01/ 0x18D302 RW
0xB11 RX_UI_REG [31:0] Sets the time of a single serial bit on the RX Serial interface.

Sets the time for a single RX serial bit. This time is used to generate RX timestamp estimates.

  • Bit[31:24]: Nanoseconds field for the time of a single serial RX bit
  • [23:0]: Fractional nanoseconds field for the time of a single serial RX bit
0x9EE01/ 0x18D302 RW
Table 77.  RX 1588 PTP Registers

Addr

Name

Bit

Description

HW Reset Value

Access

0xB00 RXPTP_REVID [31:0] IP core revision ID.

0x0504 2018

RO
0xB01 RXPTP_SCRATCH [31:0] Scratch register available for testing. 32'b0 RW
0xB06 RX_PTP_EXTRA_LATENCY [31:0]

32-bit specifying extra latency that EHIP adds to the incoming RX timestamps.

  • Bit[31]: Sign bit, set to 1 for negative latency
  • Bits[30:16]: Extra latency in nanoseconds
  • Bits[15:0]: Extra latency in fractions of a nanosecond

For example, to set an RX extra latency of 5.00 ns, set rx_ptp_extra_latency to 32'h00050000.

32'b0 RW
Table 78.  10G/25G PTP PPM UI Adjustment Registers

Addr

Name

Bit

Description

HW Default Value

Access

0xB19 TAM_SNAPSHOT [0] Time value control register.

When set, the values of the reference time value and AM count number are recorded in TX_TAM and TX_COUNT registers.

0x0

RW
0xB1A TX_TAM_L [31:0] This register represents the lower 32-bits of the TX TAM value.

TX_TAM[31:0]:

  • Bits[31:16]: Nanosecond field for the LSB
  • Bits[15:0]: Fractional nanoseconds field
0x0 RO
0xB1B TX_TAM_H [15:0] This register represents the upper 16-bits of the TX_TAM value.

TX_TAM[47:32]: Nanosecond field for the MSB

0x0 RO
0xB1C TX_COUNT [15:0] Contains the TX_AM count value. 0x0 RO
0xB1D RX_TAM_L [31:0] This register represents the lower 32-bits of the RX TAM value.

RX_TAM[31:0]:

  • Bits[31:16]: Nanosecond field for the LSB
  • Bits[15:0]: Fractional nanoseconds field
0x0 RO
0xB1E RX_TAM_H [15:0] This register represents the upper 16-bits of the RX_TAM value.

RX_TAM[47:32]: Nanosecond field for the MSB

0x0 RO
0xB1F RX_COUNT [15:0] Contains the RX_AM count value. 0x0 RO
Table 79.  100G PTP PPM UI Adjustment Registers
Addr Name Description HW Default Value Access
0xC00 mlptp_tx_ui UI time in ns and fns. Sets the time for a single TX serial bit. This time is used to generate TX timestamp estimates.
  • Bit [31:24]: Nanoseconds field for the time of a single serial TX bit
  • Bit [23:0]: Fractional nanoseconds field for the time of a single serial TX bit
0x0009 EE01 RW
0xC01 mlptp_rx_ui UI time in ns and fns. Sets the time for a single RX serial bit. This time is used to generate RX timestamp estimates.
  • Bit [31:24]: Nanoseconds field for the time of a single serial RX bit
  • Bit [23:0]: Fractional nanoseconds field for the time of a single serial RX bit
0x0CCC CCCD RW
0xC10 vl0_offset_data_0
  • Bit [31]: vl_offset_data_valid—Indicate VL Offset Data is valid to be used for calculation
  • Bit [23:10]: AM_COUNT—Alignment Marker Count
  • Bit [9:5]: BA_POS—Block Aligner Position
  • Bit [4:3]: BA_PHASE—Block Aligner Phase
  • Bit [2:0]: GBSTATE—Gearbox state for the selected virtual lane
0bxxxx xxxx xxxx xxxx xxxx xxxx xxxx x000 RO
0xC12 vl1_offset_data_0
0xC14 vl2_offset_data_0
0xC16 vl3_offset_data_0
0xC18 vl4_offset_data_0
0xC1A vl5_offset_data_0
0xC1C vl6_offset_data_0
0xC1E vl7_offset_data_0
0xC20 vl8_offset_data_0
0xC22 vl9_offset_data_0
0xC24 vl10_offset_data_0
0xC26 vl11_offset_data_0
0xC28 vl12_offset_data_0
0xC2A vl13_offset_data_0
0xC2C vl14_offset_data_0
0xC2E vl15_offset_data_0
0xC30 vl16_offset_data_0
0xC32 vl17_offset_data_0
0xC34 vl18_offset_data_0
0xC36 vl19_offset_data_0
0xC11 vl0_offset_data_1
  • Bit [31]: vl_offset_data_valid—Indicate VL Offset Data is valid to be used for calculation.
  • Bit [11:10]: LOCAL_PL—Local Physical Lane Index Number
  • Bit [9:5]: REMOTE_VL—Remote Virtual Lane Index Number
  • Bit [4:0]: LOCAL_VL—Local Virtual Lane Index Number
0bxxxx xxxx xxxx xxxx xxxx xxxx xxx0 0000 RO
0xC13 vl1_offset_data_1
0xC15 vl2_offset_data_1
0xC17 vl3_offset_data_1
0xC19 vl4_offset_data_1
0xC1B vl5_offset_data_1
0xC1D vl6_offset_data_1
0xC1F vl7_offset_data_1
0xC21 vl8_offset_data_1
0xC23 vl9_offset_data_1
0xC25 vl10_offset_data_1
0xC27 vl11_offset_data_1
0xC29 vl12_offset_data_1
0xC2B vl13_offset_data_1
0xC2D vl14_offset_data_1
0xC2F vl15_offset_data_1
0xC31 vl16_offset_data_1
0xC33 vl17_offset_data_1
0xC35 vl18_offset_data_1
0xC37 vl19_offset_data_1
0xC40 vl0_offset_cfg_0
  • Bit [6:5]: LOCAL_PL—Physical Lane for the VL Offset
  • Bit [4:0]: REMOTE_VL—Virtual Lane Index for the VL Offset
0bxxxx xxxx xxxx xxxx xxxx xxxx xxx0 0000 RW
0xC42 vl1_offset_cfg_0
0xC44 vl2_offset_cfg_0
0xC46 vl3_offset_cfg_0
0xC48 vl4_offset_cfg_0
0xC4A vl5_offset_cfg_0
0xC4C vl6_offset_cfg_0
0xC4E vl7_offset_cfg_0
0xC50 vl8_offset_cfg_0
0xC52 vl9_offset_cfg_0
0xC54 vl10_offset_cfg_0
0xC56 vl11_offset_cfg_0
0xC58 vl12_offset_cfg_0
0xC5A vl13_offset_cfg_0
0xC5C vl14_offset_cfg_0
0xC5E vl15_offset_cfg_0
0xC60 vl16_offset_cfg_0
0xC62 vl17_offset_cfg_0
0xC64 vl18_offset_cfg_0
0xC66 vl19_offset_cfg_0
0xC41 vl0_offset_cfg_1
  • Bit [31]: sign_bit—Sign bit.
  • Bit [30:16]: offset_ns—Virtual lane offset (nanoseconds)
  • Bit [15:0]: offset_frac_ns—Virtual lane offset (fractional nanoseconds)
  RW
0xC43 vl1_offset_cfg_1
0xC45 vl2_offset_cfg_1
0xC47 vl3_offset_cfg_1
0xC49 vl4_offset_cfg_1
0xC4B vl5_offset_cfg_1
0xC4D vl6_offset_cfg_1
0xC4F vl7_offset_cfg_1
0xC51 vl8_offset_cfg_1
0xC53 vl9_offset_cfg_1
0xC55 vl10_offset_cfg_1
0xC57 vl11_offset_cfg_1
0xC59 vl12_offset_cfg_1
0xC5B vl13_offset_cfg_1
0xC5D vl14_offset_cfg_1
0xC5F vl15_offset_cfg_1
0xC61 vl16_offset_cfg_1
0xC63 vl17_offset_cfg_1
0xC65 vl18_offset_cfg_1
0xC67 vl19_offset_cfg_1
0xC70 mlptp_tam_snapshot Time value control register. When set, the values of the reference time value and AM count number are recorded TX and RX registers.
Request TAM snapshot to calculate unit interval (ui). TX and RX TAM snapshot are independent:
  • Bit [0]: tx_tam_snapshot

    Set this bit to 1'b1 to request TX TAM snapshot. Asserting this bit generates a single pulse to hardware.

  • Bit [1]: rx_tam_snapshot

    Set this bit to 1'b1 to request RX TAM snapshot. Asserting this bit generates a single pulse to hardware.

0bxxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx0 RW
0xC71 mlptp_tx_tam_l

TX TAM lower bits. Bit [31:0] of TAM

Result returned upon TAM snapshot request, consists of TAM partial bits.

0x0000 0000 RO
0xC72 mlptp_tx_tam_h

TX TAM upper bits. Bit [15:0] of TAM

Result returned upon TAM snapshot request, consists of TAM partial bits.

0xXXXX 0000 RO
0xC73 mlptp_tx_am_count TX TAM counter. Bit [15:0]—16 bits of TAM counter.

Result returned upon TAM snapshot request, consists of TAM partial bits.

0xXXXX 0000 RO
0xC74 mlptp_rx_tam_l

RX TAM lower bits. Bit [31:0] of TAM

Result returned upon TAM snapshot request, consists of TAM partial bits.

0x0000 0000 RO
0xC75 mlptp_rx_tam_h

RX TAM upper bits. Bit [15:0] of TAM

Result returned upon TAM snapshot request, consists of TAM partial bits.

0xXXXX 0000 RO
0xC76 mlptp_rx_am_count RX TAM counter. Bit [15:0]—16 bits of TAM counter.

Result returned upon TAM snapshot request, consists of TAM partial bits.

0xXXXX 0000 RO
0xC77 mlptp_tx_ref_lane Physical lane that TAM associates with.
  • Bit [2:0]: tx_ref_lane
    TX reference lane—3 bit number of TX physical lane (any can be reference):
    • Resetting TX datapath, or the entire core will clear this bit to 0

Only applicable to multi-lane designs.

0bxxxx xxxx xxxx xxxx xxxx xxxx xxxx x000 WO
0xC78 mlptp_rx_ref_lane Physical lane that TAM associates with.
  • Bit [2:0]: rx_ref_lane
    RX reference lane—3 bit number of RX physical lane which packet last arrives at.
    • rx_pcs_fully_aligned deassertion will clear the bits to 0
    • Resetting RX datapath or the entire core will also clear the bits to 0

Only applicable to multi-lane designs.

0bxxxx xxxx xxxx xxxx xxxx xxxx xxxx x000 WO
0xC79 mlptp_tx_user_cfg Indicates user has completed all necessary TX configuration:
  • Bit [0] = 1 means configured.
  • Bit [0] = 0 means not configured yet:
    • has programmed TX extra latency to Hard IP
    • has programmed TX VL offset to Hard IP (Multi-lane variant only)
Register value will be automatically cleared in the following condition:
  • tx_lanes_stable deassertion
  • Resetting TX datapath or the entire core
0bxxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx0 WO
0xC7A mlptp_rx_user_cfg Indicates user has completed all necessary RX configuration:
  • Bit [0] = 1 means configured.
  • Bit [0] = 0 means not configured yet:
    • has programmed RX extra latency to Hard IP
    • has programmed RX VL offset to Hard IP (Multi-lane variant only)
Register value will be automatically cleared in the following condition:
  • rx_pcs_fully_aligned deassertion
  • Resetting RX datapath or the entire core
0bxxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx0 WO
0xC7B mlptp_status PTP Status Register:
  • Bit [3]: rx_ptp_ready (RX PTP Ready). 1'b1 means ready.
  • Bit [2]: tx_ptp_ready (TX PTP Ready). 1'b1 means ready.
  • Bit [1]: rx_ptp_offset_data_valid (RX calculation data valid/ready to read). 1'b1 means valid.
  • Bit [0]: tx_ptp_offset_data_valid (TX calculation data valid/ready to read). 1'b1 means valid.
0xXXXX XXX0 RO
0xC7C mlptp_tx_const_delay Constant delay value used in TAM adjustment calculation. Constant delay for specific physical lane.
  • Bit [31:0]: data_constdelay
0x0000 0000 RO
0xC7D mlptp_rx_const_delay Constant delay value used in TAM adjustment calculation. Constant delay for specific physical lane.
  • Bit [31:0]: data_constdelay
0x0000 0000 RO
0xC7E mlptp_tx_l0_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC7F mlptp_rx_l0_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC80 mlptp_tx_l0_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC81 mlptp_rx_l0_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC82 mlptp_tx_l0_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO
0xC83 mlptp_rx_l0_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO
0xC84 mlptp_tx_l1_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC85 mlptp_rx_l1_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC86 mlptp_tx_l1_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC87 mlptp_rx_l1_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC88 mlptp_tx_l1_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO
0xC89 mlptp_rx_l1_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO
0xC8A mlptp_tx_l2_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC8B mlptp_rx_l2_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC8C mlptp_tx_l2_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC8D mlptp_rx_l2_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC8E mlptp_tx_l2_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO
0xC8F mlptp_rx_l2_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO
0xC90 mlptp_tx_l3_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC91 mlptp_rx_l3_offset Time offset value used in TAM adjustment calculation. Time offset for specific physical lane.
  • Bit [31:0]: data_offset
0x0000 0000 RO
0xC92 mlptp_tx_l3_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC93 mlptp_rx_l3_time Time value used in TAM adjustment calculation. Marker time for specific physical lane.
  • Bit [27:0]: data_time
0xX000 0000 RO
0xC94 mlptp_tx_l3_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO
0xC95 mlptp_rx_l3_wire_dly Wire delay value used in TAM adjustment calculation. Wire delay for specific physical lane.
  • Bit [19:0]: data_wiredelay
0xXXX0 0000 RO