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.

TI-JESD204-IP: Simulation of loopback design in Vivado

Part Number: TI-JESD204-IP
Other Parts Discussed in Thread: ADC08DJ3200

Hi everyone!

I'm currently trying to make the JESD204C-IP work on an Artix 7 FPGA from Xilinx (AC701 evaluation module and terasic loopback card). I was able to make the changes needed to make the example design with my evaluation card. The implementation and meeting timing is quite difficult but I'm able to do it. The problem come when I try to simulate it in Vivado. I do the steps written in the documentation, the qpll signal comes high and the tx module begins to work and send data, but the rx module never receives data or is not able to lock on it. The testbench is simply some clocks and signals that loopback. I've put a printscreen of my simulation where we can clearly see that the rx_lane_data never change. I changed the project to use 2 lane (as there is only two lanes routed on my board to the FMC connector) and 8bits data width as I want to ultimatly use the IP with a ADC08DJ3200.

Any help would be welcome

Étienne

  • HI everyone!

    I've try to debug it a little more but to no avail. I think the RX reset fsm of the transceiver doesn't end the configuration as the gt0_rx_mmcm_lock_out goes to 1 and both rxusrclk work but the gt0_rxresetdone_out stays to 0. Is there anything to do about that? The configuration is done by the rest of the IP that is not accessible to end user like me. I've put my project with my basic testbench if anyone needs more information.

    Étienne

    Loopback.rar

  • Hi Etienne,

    After checking with out team I have found that the below edits are required in order to use the top level file as the testbench. Can you confirm that you have followed these on your project?

    You will be able to use the top level file reference design (TI_204c_IP_ref) as the testbench. Kindly follow the steps below:

    • File edits:
      • Connect the dac_lane_txp/n signals to adc_lane_rxp/n (loop back data)
      • Connect the cc_sysref_out_p/n signals to the sysref_p/n signals (loop back an internally generated SYSREF). Alternatively, you can force your own sysref frequency on sysref_p/n.
      • Connect the adc_rx_sync_n to the dac_tx_sync_n (if you are using an 8b/10b mode)
      • Disconnect the following outputs of the VIO module in the reference design, so you can force them directly:
        • master_reset_n
        • rx_sync_reset_vio (becomes the rx_sync_reset of the JESD IP)
        • tx_sync_reset_vio (becomes the tx_sync_reset of the JESD IP)
    • Simulation steps
      • Force a clock of 156.25MHz on the refclk_p/n ports (reference clock to the transceiver)
      • Force a clock of 156.25Mhz on the sys_clk_p/n ports (reference clock to the PLL in the reference design)
      • Force master_reset_n to ‘0’, and tx_sync_reset_vio and rx_sync_reset_vio to ‘1’
      • Run for 100ns
      • Force master_reset_n to ‘1’
      • Run for a few us, until you see the QPLL0 lock signals transition to ‘1’ (indicating that transceiver PLLs have locked)
      • Force tx_sync_reset_vio to ‘0’. This will start the Tx part of the JESD IP
      • Run for a couple of us
      • Force the rx_sync_reset_vio to ‘0’. This will start the Rx part and it will lock onto the Tx.
    • You should now be able to monitor rx_lane_data and tx_lane_data signals of the IP to see that the same values are being looped back
      • You can also check the sample values in the refdesign_rx and refdesign_tx submodules

  • Hi, sorry for the delay,

    Yes everything you describe has been done. I didn't put the sysref_p/n in because the top level module says that it is not implemented for this design, but I've tried it anyway and it didn't change anything. As I said before, the TX signal works well. I will now review the connection to the transceiver IP to see if this is the problem

    Étienne