Post Go back to editing

xilinx jesd204c link establishment failed

Category: Hardware
Product Number: ADRV9029

dear teams,

Now I porting ADI’s no-OS project to an HDL project based on Xilinx JESD204C. At present, the JESD204B link has not been established.

configuration of my jesd204c:

fpga jesd204c tx:

Offset address Register name Parameter Actual parameter
0x03C OFSADDR_CTRL_8B10_CFG 0x03 0B 1F 03 ILA multiframes:4 Enable Link Error counters : 1 Error Reporting via sync : 0 ILA Required: 1 Scrambling:1 Frames per Multiframe (K): 1F(32) Octets per Frame (F):3(4)
0x050 OFSADDR_CTRL_SYSREF 0x01 1 = The core will align the LMFC/LEMC counter on all SYSREF events; no longer configured
0x048 OFSADDR_CTRL_TEST_MODE 0x00 GT loopback: (TX only)00: Normal operation
0x040 OFSADDR_CTRL_LANE_ENA 0x0f
0x034 OFSADDR_CTRL_SUB_CLASS 0x01 1 = Subclass 1
0x074 CTRL_TX_ILA_CFG1 0x00170F07 -> 0x000F0F07 Control bits per Sample:0 N'=16 N=16 M=8
0x078 CTRL_TX_ILA_CFG2 0x00 Control word per Sample:0x0 high density = 0 S=0(1)
0x07C CTRL_TX_ILA_CFG3 0x00 ADJDIR:0 PHAD:0 ADJCNT:0

fpga jesd024c rx:

Offset address Register Parameter Actual parameter
0x03C OFSADDR_CTRL_8B10_CFG 0x030B1F03 ILA multiframes:4 Enable Link Error counters : 1 Error Reporting via sync : 0 ILA Required: 1 Scrambling:1 Frames per Multiframe (K): 1F(32) Octets per Frame (F):3(4)
0x050 OFSADDR_CTRL_SYSREF 0x01
0x048 OFSADDR_CTRL_TEST_MODE 0x00
0x034 OFSADDR_CTRL_SUB_CLASS 0x01

adrv9029 framer:

    \"framer\": [ \n\
      { \n\
        \"serializerLaneCrossbar\": { \n\
          \"lane0FramerOutSel\": 0, \n\
          \"lane1FramerOutSel\": 1, \n\
          \"lane2FramerOutSel\": 2, \n\
          \"lane3FramerOutSel\": 3 \n\
        }, \n\
        \"adcCrossbar\": { \n\
          \"conv0\": 1, \n\
          \"conv1\": 0, \n\
          \"conv2\": 3, \n\
          \"conv3\": 2, \n\
          \"conv4\": 5, \n\
          \"conv5\": 4, \n\
          \"conv6\": 7, \n\
          \"conv7\": 6, \n\
          \"conv8\": 127, \n\
          \"conv9\": 127, \n\
          \"conv10\": 127, \n\
          \"conv11\": 127, \n\
          \"conv12\": 127, \n\
          \"conv13\": 127, \n\
          \"conv14\": 127, \n\
          \"conv15\": 127, \n\
          \"conv16\": 127, \n\
          \"conv17\": 127, \n\
          \"conv18\": 127, \n\
          \"conv19\": 127, \n\
          \"conv20\": 127, \n\
          \"conv21\": 127, \n\
          \"conv22\": 127, \n\
          \"conv23\": 127 \n\
        }, \n\
        \"enableJesd204C\": 0, \n\
        \"bankId\": 0, \n\
        \"deviceId\": 1, \n\
        \"lane0Id\": 0, \n\
        \"jesd204M\": 8, \n\
        \"jesd204K\": 32, \n\
        \"jesd204F\": 4, \n\
        \"jesd204Np\": 16, \n\
        \"jesd204E\": 0, \n\
        \"scramble\": 1, \n\
        \"serializerLanesEnabled\": 15, \n\
        \"lmfcOffset\": 0, \n\
        \"syncbInSelect\": 0, \n\
        \"overSample\": 0, \n\
        \"syncbInLvdsMode\": 1, \n\
        \"syncbInLvdsPnInvert\": 1, \n\
        \"newSysrefOnRelink\": 0, \n\
        \"sysrefForStartup\": 0, \n\
        \"sysrefNShotEnable\": 0, \n\
        \"sysrefNShotCount\": 0, \n\
        \"sysrefIgnoreWhenLinked\": 0 \n\
      }, \n\
      
          \"serCfg\": [ \n\
      { \n\
        \"serAmplitude\": 0, \n\
        \"serPreEmphasis\": 0, \n\
        \"serPostEmphasis\": 0, \n\
        \"serInvertLanePolarity\": 1 \n\
      }, \n\
      { \n\
        \"serAmplitude\": 0, \n\
        \"serPreEmphasis\": 0, \n\
        \"serPostEmphasis\": 0, \n\
        \"serInvertLanePolarity\": 1 \n\
      }, \n\
      { \n\
        \"serAmplitude\": 0, \n\
        \"serPreEmphasis\": 0, \n\
        \"serPostEmphasis\": 0, \n\
        \"serInvertLanePolarity\": 1 \n\
      }, \n\
      { \n\
        \"serAmplitude\": 0, \n\
        \"serPreEmphasis\": 0, \n\
        \"serPostEmphasis\": 0, \n\
        \"serInvertLanePolarity\": 1 \n\
      } \n\
    ], \n\

adrv9029 deframer:

    \"deframer\": [ \n\
      { \n\
        \"deserializerLaneCrossbar\": { \n\
          \"deframerInput0LaneSel\": 0, \n\
          \"deframerInput1LaneSel\": 1, \n\
          \"deframerInput2LaneSel\": 2, \n\
          \"deframerInput3LaneSel\": 3 \n\
        }, \n\
        \"enableJesd204C\": 0, \n\
        \"bankId\": 0, \n\
        \"deviceId\": 1, \n\
        \"lane0Id\": 0, \n\
        \"jesd204M\": 8, \n\
        \"jesd204K\": 32, \n\
        \"jesd204F\": 4, \n\
        \"jesd204Np\": 16, \n\
        \"jesd204E\": 0, \n\
        \"scramble\": 1, \n\
        \"deserializerLanesEnabled\": 15, \n\
        \"lmfcOffset\": 0, \n\
        \"syncbOutSelect\": 0, \n\
        \"syncbOutLvdsMode\": 1, \n\
        \"syncbOutLvdsPnInvert\": 0, \n\
        \"syncbOutCmosSlewRate\": 0, \n\
        \"syncbOutCmosDriveLevel\": 0, \n\
        \"dacCrossbar\": { \n\
          \"tx1DacChanI\": 1, \n\
          \"tx1DacChanQ\": 0, \n\
          \"tx2DacChanI\": 3, \n\
          \"tx2DacChanQ\": 2, \n\
          \"tx3DacChanI\": 5, \n\
          \"tx3DacChanQ\": 4, \n\
          \"tx4DacChanI\": 7, \n\
          \"tx4DacChanQ\": 6 \n\
        }, \n\
        \"newSysrefOnRelink\": 0, \n\
        \"sysrefForStartup\": 1, \n\
        \"sysrefNShotEnable\": 0, \n\
        \"sysrefNShotCount\": 0, \n\
        \"sysrefIgnoreWhenLinked\": 0 \n\
      }, \n\
      
          \"desCfg\": [ \n\
      { \n\
        \"highBoost\": 0, \n\
        \"configOption1\": 0, \n\
        \"configOption2\": 0, \n\
        \"configOption3\": 0, \n\
        \"configOption4\": 0, \n\
        \"configOption5\": 0, \n\
        \"configOption6\": 0, \n\
        \"configOption7\": 0, \n\
        \"configOption8\": 0, \n\
        \"configOption9\": 0, \n\
        \"configOption10\": 0, \n\
        \"desInvertLanePolarity\": 0 \n\
      }, \n\
      { \n\
        \"highBoost\": 0, \n\
        \"configOption1\": 0, \n\
        \"configOption2\": 0, \n\
        \"configOption3\": 0, \n\
        \"configOption4\": 0, \n\
        \"configOption5\": 0, \n\
        \"configOption6\": 0, \n\
        \"configOption7\": 0, \n\
        \"configOption8\": 0, \n\
        \"configOption9\": 0, \n\
        \"configOption10\": 0, \n\
        \"desInvertLanePolarity\": 1 \n\
      }, \n\
      { \n\
        \"highBoost\": 0, \n\
        \"configOption1\": 0, \n\
        \"configOption2\": 0, \n\
        \"configOption3\": 0, \n\
        \"configOption4\": 0, \n\
        \"configOption5\": 0, \n\
        \"configOption6\": 0, \n\
        \"configOption7\": 0, \n\
        \"configOption8\": 0, \n\
        \"configOption9\": 0, \n\
        \"configOption10\": 0, \n\
        \"desInvertLanePolarity\": 0 \n\
      }, \n\
      { \n\
        \"highBoost\": 0, \n\
        \"configOption1\": 0, \n\
        \"configOption2\": 0, \n\
        \"configOption3\": 0, \n\
        \"configOption4\": 0, \n\
        \"configOption5\": 0, \n\
        \"configOption6\": 0, \n\
        \"configOption7\": 0, \n\
        \"configOption8\": 0, \n\
        \"configOption9\": 0, \n\
        \"configOption10\": 0, \n\
        \"desInvertLanePolarity\": 1 \n\
      } \n\
    ], \n\

Debuging result:

TX DAC Link (FPGA TX FRAMER -> ADRV9029 TX DEFRAMER):

  1. Data captured by FPGA ILA:

data -
tx_sync 1
rx_reset_done 1
  1. FPGA TX_STAT_STATUS: 0x1002(SYSREF captured)

bit value description
15 1 8b10b 1= 8b10b rx misalignment has been detected.
14 0 8b10b 1= the link has started outputting data on the axi-stream port
13 0 8b10b 1 = The link has achieved Code Group Sync
12 0 8b10b 1 = The receiver has signaled SYNC has been achieved.
10 0 1 = The receiver buffer has overflowed.
5 0 64B66B
4 0 64B66B
2 0 SYSREF error
1 1 SYSREF captured
0 0 Interrupt pending
  1. adi_adrv9025_DeframerStatusGet() returned data: 0x12 (FS LOST, frame synchronization lost, sysref received; the correct value should be 0x87)

status bit value description
7 0 Valid checksum
6 0 EOF Event
5 0 EOMF Event
4 1 FS lost; frame synchronization
3 0 user data valid
2 0 reserved
1 1 sysref received
0 0 sync_level

RX ADC Link (ADRV9029 ADC FRAMER -> FPGA RX DEFRAMER)

Data captured by FPGA ILA:

rx_sync 0
data -
rx_reset_done 1

FPGA RX_STAT_STATUS:0x2 (SYSREF capturedd)

bit value description
15 0 8b10b 1= 8b10b rx misalignment has been detected.
14 0 8b10b 1= the link has started outputting data on the axi-stream port
13 0 8b10b 1 = The link has achieved Code Group Sync
12 0 8b10b 1 = The receiver has signaled SYNC has been achieved.
10 0 1 = The receiver buffer has overflowed.
5 0 64B66B
4 0 64B66B
2 0 SYSREF error
1 1 SYSREF captured
0 0 Interrupt pending

adi_adrv9025_FramerStatusGet() returned data: 0x0A (SYNCIN LEVEL 1, SYSREF phase established by framer; the correct value should be 0x0A)

status bit value description
7 0 reserved
6 0 reserved
5 0 reserved
4 0 reserved
3 1 SYNCIN LEVEL(1 high 0 low)
2 0 SYSREF phase error
1 1 SYSREF phase established by framer
0 0 Configuration error: 1

my hdl prj(vivado2025.1):drive.google.com/.../view

my noos prj and cfg file:https://drive.google.com/file/d/1QK4T439lnm6Kb3SLwF1wWA0J9sXEjrMb/view?usp=drive_link

Where should I start troubleshooting this issue?

best regards,

zjy

Thread Notes