Serial Lite IV Intel® FPGA IP User Guide

ID 683655
Date 2/10/2023
Public

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

Document Table of Contents

3.4.3.1. Starting the PMA Adaptation Flow

For E-tile Serial Lite IV Intel FPGA IP core variations, perform the following steps to start the PMA adaptation:

  1. Assert the TX, RX Digital Resets (tx_pcs_fec_phy_reset_n, rx_pcs_fec_phy_reset_n, tx_core_rst_n, rx_core_rst_n) and reconfiguration reset (reconfig_reset) signals. Release the reconfiguration reset (reconfig_reset) signal.
  2. Trigger the PMA analog reset and re-load the initial PMA settings.
    1. Write 0x200[7:0] = 0x00.
    2. Write 0x201[7:0] = 0x00.
    3. Write 0x202[7:0] = 0x00.
    4. Write 0x203[7:0] = 0x81.
    5. Read 0x207 until it becomes 0x80. This indicates that the operation completed successfully.
    6. Write 0x91[0] = 1 to load the initial settings in the programming file.
  3. Apply the control status registers (CSR) Reset (csr_phy_reset_n) signal and de-assert the CSR Reset (csr_phy_reset_n) signal.
  4. De-assert the TX Digital reset (tx_pcs_fec_phy_reset_n) and (tx_core_rst_n) signals.
  5. Configure the Attenuation Value (VOD) (skip this step if using internal serial loopback).
    1. Write 0x84[7:0] = 0x01.
    2. Write 0x85[7:0] = 0x40.
    3. Write 0x86[7:0] = 0x15.
    4. Write 0x87[7:0] = 0x00.
    5. Write 0x90[0] = 1’b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B [0] until it changes to 0.
    8. Write 0x8A[7] to 1 to clear the 0x8A[7] flag.
  6. Set the operation mode, enable Internal Serial Loopback Mode via PMA attribute code. Attribute = 0x8, data = 0x101.
    1. Write 0x84[7:0] = 0x01.
    2. Write 0x85[7:0] = 0x01.
    3. Write 0x86[7:0] = 0x08.
    4. Write 0x87[7:0] = 0x00.
    5. Write 0x90[0] = 1’b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B[0] until it changes to 0.
    8. Write 0x8A[7] to 1'b1 to clear the 0x8A[7] value.
  7. Perform Initial Adaptation in Serial Loopback Mode. Attribute = 0xA, data = 0x1.
    1. Write 0x84[7:0] = 0x01.
    2. Write 0x85[7:0] = 0x00.
    3. Write 0x86[7:0] = 0x0A.
    4. Write 0x87[7:0] = 0x00.
    5. Write 0x90[0] = 1'b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B[0] until it changes to 0.
    8. Write 0x8A[7] to 1'b1 to clear the 0x8A[7] value.
  8. Verify that the initial adaptation status is complete using interrupt code. Attribute = 0x0126, data = 0x0B00.
    1. Write 0x84[7:0] = 0x00.
    2. Write 0x85[7:0] = 0x0B.
    3. Write 0x86[7:0] = 0x26.
    4. Write 0x87[7:0] = 0x01.
    5. Write 0x90[0] = 1'b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B[0] until it changes to 0.
    8. Write 0x8A[7] to 1'b1 to clear the 0x8A[7] value.
    9. Read register 0x88. Repeat Step 8 until 0x88[0] = 0, to confirm that adaptation is no longer in process.
  9. Enable mission mode and disable internal serial loopback (skip this step if using internal serial loopback). Attribute = 0x8, data = 0x100.
    1. Write 0x84[7:0] = 0x00.
    2. Write 0x85[7:0] = 0x01.
    3. Write 0x86[7:0] = 0x08.
    4. Write 0x87[7:0] = 0x00.
    5. Write 0x90[0] = 1'b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B[0] until it changes to 0.
    8. Write 0x8A[7] to 1'b1 to clear the 0x8A[7] value.
  10. Run initial adaptation via PMA attribute code (skip this step if using internal serial loopback). Attribute = 0xA, data = 0x1.
    1. Write 0x84[7:0] = 0x01.
    2. Write 0x85[7:0] = 0x00.
    3. Write 0x86[7:0] = 0x0A.
    4. Write 0x87[7:0] = 0x00.
    5. Write 0x90[0] = 1'b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B[0] until it changes to 0.
    8. Write 0x8A[7] to 1'b1 to clear the 0x8A[7] value.
  11. Verify that the initial adaptation status is complete using interrupt code (skip this step if using internal serial loopback). Attribute = 0x0126, data = 0x0B00.
    1. Write 0x84[7:0] = 0x00.
    2. Write 0x85[7:0] = 0x0B.
    3. Write 0x86[7:0] = 0x26.
    4. Write 0x87[7:0] = 0x01.
    5. Write 0x90[0] = 1'b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B[0] until it changes to 0.
    8. Write 0x8A[7] to 1'b1 to clear the 0x8A[7] value.
    9. Read register 0x88. Repeat Step 11 until 0x88[0] = 0, to confirm that adaptation is no longer in process.
  12. Perform Continuous adaptation via PMA attribute code (skip this step if using internal serial loopback). Attribute = 0xA, data = 0x6.
    1. Write 0x84[7:0] = 0x06.
    2. Write 0x85[7:0] = 0x00.
    3. Write 0x86[7:0] = 0x0A.
    4. Write 0x87[7:0] = 0x00.
    5. Write 0x90[0] = 1'b1.
    6. Read 0x8A[7]. It should be 1.
    7. Read 0x8B[0] until it changes to 0.
    8. Write 0x8A[7] to 1'b1 to clear the 0x8A[7] value.
  13. De-assert RX Digital reset (rx_pcs_fec_phy_reset_n) and (rx_core_rst_n) signals.
  14. Verify that the link status signals (tx_link_up) and (rx_link_up) transitions high. If the link status signals are not high, repeat all the steps above.
  15. Send packets.
Figure 25. Reset and Adaptation Flow Sequence