This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADC12DJ3200: Synchronization problem using two ADC12DJ3200

Part Number: ADC12DJ3200
Other Parts Discussed in Thread: LMK04828
  •  Conditions

One XC7VX690T carries two ADC12DJ3200 FPGA Mezzanine Cards. The structure of FMC is as follows.

The LMK04828 is configured in 0-delay mode and provides SYSREF, REFCLK, GLBCLK.

The LMK04828 is first configured through SPI, then the ADCs are configured through SPI.

The ADCs use JMODE0.

  •   Phenomenon

When using the JESD204B Test Pattern Control Register (address = 0x205) = 4: Ramp test mode, the two ADCs acquire synchronization, that is, data from two ADCs can be aligned every time power on (draw waveforms in matlab).

Other conditions remain the same. When only change the JESD204B Test Pattern Control Register (address = 0x205) to 0: Normal operation, the Analog signal is supplied with a sine wave divided by a power divider from a signal source. Draw waveforms in matlab. Under one configuration conditions, the relative relationship of the starting point will not change with each trigger. But not aligned. By reconfiguring the ADC via SPI, the starting position of the acquired data will change. 

  • Questions

1, In the Ramp test mode, the two ADCs are synchronized, and in the normal operation mode the acquired data is not aligned. This indicates that the JESD204B link synchronization and ADC core acquisition are not synchronized. Is this correct?

2, Is there any special timing for ADC initialization when two ADCs are synchronized? For example reset the ADC cores.

3, Are there special requirements with SPI clock?

4, What else can be done?

 

Thank you in advance for your answers.

  • Hi Alex
    I'm looking into your questions and will respond in more detail later.
    Can you provide the setup sequence including all register writes you are following when setting up and checking data alignment in the 2 different conditions:
    a) Ramp test mode JMODE0
    b) Normal data mode JMODE0
    Best regards,
    Jim B
  • Hi Jim
    Here is the configuration of ADCs.
    a)Ramp test mode JMODE0
    r_w = 1’b0;
    W1W0=2'b0;
    case(RegIndex)
    (5'h0):begin w_data<={r_w,W1W0, 13'h0000, 8'hb0};end //device rst
    (5'h1):begin w_data<={r_w,W1W0, 13'h2b5, 8'h0};end // TAD
    (5'h2):begin w_data<={r_w,W1W0, 13'h2b6, 8'h0};end // TAD
    (5'h3):begin w_data<={r_w,W1W0, 13'h2b7, 8'h0};end // TAD
    (5'h4):begin w_data<={r_w,W1W0, 13'h0029, 8'h38};end //SYSREF enable
    (5'h5):begin w_data<={r_w,W1W0, 13'h0029, 8'h78};end
    (5'h6):begin w_data<={r_w,W1W0,13'h02B8,8'h01};end // TAD_RAMP
    (5'h7):begin w_data<={r_w,W1W0,13'h02B1,8'h0D};end // SRC_CFG
    (5'h8):begin w_data<={r_w,W1W0, 13'h0200, 8'h0};end //JESD204B disable
    (5'h9):begin w_data<={r_w,W1W0, 13'h0061, 8'h0};end //CAL_EN: stop calibration
    (5'hA):begin w_data<={r_w,W1W0, 13'h0201, 8'h0};end // JMODE
    (5'hB):begin w_data<={r_w,W1W0, 13'h0202, 8'h10};end // KM1
    (5'hC):begin w_data<={r_w,W1W0, 13'h0204, 8'h01};end // JCTRL
    (5'hD):begin w_data<={r_w,W1W0, 13'h0205, 8'h04};end // JTEST: Ramp test mode
    (5'hE):begin w_data<={r_w,W1W0, 13'h02B0, 8'h0};end // SYSREF Calibration Disabled
    (5'hF):begin w_data<={r_w,W1W0, 13'h0062, 8'h05};end // CAL_CFG: FG
    (5'h10):begin w_data<={r_w,W1W0, 13'h81, 8'h0};end //TAJ_B_PG
    (5'h11):begin w_data<={r_w,W1W0, 13'h80, 8'h0};end //TAJ_A_PG
    (5'h12):begin w_data<={r_w,W1W0, 13'h0061, 8'h01};end //CAL_EN: start calibration
    (5'h13):begin w_data<={r_w,W1W0, 13'h0213, 8'h0f};end // OVR_CFG
    (5'h14):begin w_data<={r_w,W1W0, 13'h0200, 8'h01};end // JESD204B enable
    (5'h15):begin w_data<={r_w,W1W0, 13'h006c, 8'h00};end // CAL_SOFT_TRIG
    (5'h16):begin w_data<={r_w,W1W0, 13'h006c, 8'h01};end
    default:begin end
    endcase
    b) Normal data mode JMODE0
    r_w = 1’b0;
    W1W0=2'b0;
    case(RegIndex)
    (5'h0):begin w_data<={r_w,W1W0, 13'h0000, 8'hb0};end //device rst
    (5'h1):begin w_data<={r_w,W1W0, 13'h2b5, 8'h0};end // TAD
    (5'h2):begin w_data<={r_w,W1W0, 13'h2b6, 8'h0};end // TAD
    (5'h3):begin w_data<={r_w,W1W0, 13'h2b7, 8'h0};end // TAD
    (5'h4):begin w_data<={r_w,W1W0, 13'h0029, 8'h38};end //SYSREF enable
    (5'h5):begin w_data<={r_w,W1W0, 13'h0029, 8'h78};end
    (5'h6):begin w_data<={r_w,W1W0,13'h02B8,8'h01};end // TAD_RAMP
    (5'h7):begin w_data<={r_w,W1W0,13'h02B1,8'h0D};end // SRC_CFG
    (5'h8):begin w_data<={r_w,W1W0, 13'h0200, 8'h0};end //JESD204B disable
    (5'h9):begin w_data<={r_w,W1W0, 13'h0061, 8'h0};end //CAL_EN: stop calibration
    (5'hA):begin w_data<={r_w,W1W0, 13'h0201, 8'h0};end // JMODE
    (5'hB):begin w_data<={r_w,W1W0, 13'h0202, 8'h10};end // KM1
    (5'hC):begin w_data<={r_w,W1W0, 13'h0204, 8'h01};end // JCTRL
    (5'hD):begin w_data<={r_w,W1W0, 13'h0205, 8'h00};end // JTEST: 0: Test mode disabled. Normal operation
    (5'hE):begin w_data<={r_w,W1W0, 13'h02B0, 8'h0};end // SYSREF Calibration Disabled
    (5'hF):begin w_data<={r_w,W1W0, 13'h0062, 8'h05};end // CAL_CFG: FG
    (5'h10):begin w_data<={r_w,W1W0, 13'h81, 8'h0};end //TAJ_B_PG
    (5'h11):begin w_data<={r_w,W1W0, 13'h80, 8'h0};end //TAJ_A_PG
    (5'h12):begin w_data<={r_w,W1W0, 13'h0061, 8'h01};end //CAL_EN: start calibration
    (5'h13):begin w_data<={r_w,W1W0, 13'h0213, 8'h0f};end // OVR_CFG
    (5'h14):begin w_data<={r_w,W1W0, 13'h0200, 8'h01};end // JESD204B enable
    (5'h15):begin w_data<={r_w,W1W0, 13'h006c, 8'h00};end // CAL_SOFT_TRIG
    (5'h16):begin w_data<={r_w,W1W0, 13'h006c, 8'h01};end
    default:begin end
    endcase

    Another problem:
    I read SYSREF_POS register and the position of '1' changes when the ADC is reconfigured via SPI. Is this a normal phenomenon?
    If normal, how to use SYSREF_SEL (address = 0x029) when I disable SYSREF Calibration.
  • Hi Alex
    Sorry for the lack of response. Have you made any progress on this since the last post?
    If not I'll try to get back to you sometime tomorrow.
    Best regards,
    Jim B
  • Hi Jim,
    I have just solved this problem. The SYSREF output for ADC is not configured correctly. In that case, ADC should work in the subclass0 mode.