Post Go back to editing

SYSREF capture on AD9083EBZ

Category: Hardware
Product Number: AD9083

Hello everyone, 

I am using the evaluation board AD9083EBZ and trying to implement a subclass 1 JESD204B interface between the ADC and an FPGA.

By default the SYSREF input to the ADC on the eval board is disconnected and the SYSREF+/- pins are tied to about 476mV through a potential divider from AVDD. I want to instead use the on board clock generator AD9528 to generate the SYSREF signal and send it to the 2 devices.

I've managed to configure the SYSREF geneartor and I can output either N-shot pulses or continuous SYSREF from the 2 corresponding outputs (Output 0 going to the FPGA through the FMC connector and Output 12 going to the ADC).

I've confirmed that the SYSREF is being captured on the FPGA side by reading a register flag in the receiving logic IP core. Now I'm trying to do the same for the ADC. As far as I can tell register 0x27E contains the flags that indicate a captured SYSREF and whether the phase is correct (bits 1 and 2 respectively).

Initially I thought that simply installing a jumper across the resistor pads R11 and R12 (on the eval board AD9083EBZ) would enable me to send the SYSREF through and be done with it.

However, after trying multiple SYSREF options the flags in register 0x27E remained 0. 

Then I measured the voltage levels going into the SYSREF +/- pins and compared them to the datasheets.

It looks like the voltages match the output levels described in the AD9528 datasheet. I even tried all available options - LVDS (1.25V common mode, ~350mVp-p), LVDS Boost (1.25V common mode, ~550mVp-p) and HSTL (0.95V common mode, ~700mVp-p).

Then I noticed that the SYSREF input to the ADC expects different levels (0.5V common mode, ~700mVp-p typical). In fact, the voltage from the clock gen never dropped below the 0.5V common mode in this configuration.

Since then I've tried different combinations of resistors to bring the common mode voltage to about 0.5V, but that's also resulted in lower p-p amplitude (about 330 - 500mV depending on the output mode). 

Right now I'm not sure where the problem is. Some possibilities I'm thinking of:

1. The amplitude is not enough to detect the logic levels at the ADC, even though it's now centered correctly around 500mV. The datasheet doesn't explicitly specify a minimum threshold for detecting 0 or 1 on the SYSREF input, it simply states the typical and max differential peak-to-peak voltage.

2. I'm capturing the SYSREF signal (and perhaps it's supposed to work by simply installing the R11 and R12 jumpers), but register 0x27E is not the correct one to look at for confirmation.

3. There is some configuration that I need to do to the ADC before it will even acknowledge the arrival of a SYSREF pulse (The ADC is configured by calling the functions described in the datasheet with some modifications.

I've verified that the datapath and JTX PLLs are locked by reading the corresponding registers). 

Right now it looks like the ADC is sending K characters to the FPGA, by the devices are not synched, so it can't get through the CGS stage. Which is why I'm hoping I can synchronize them using the SYSREF pulse.

I'm looking for any comments that could help me troubleshoot the issue.

Thank you and best wishes,

Tsvetan

 
  • Hi  

    Thanks for using AD9083.

    Kindly give time for the product owner ( ) to look into this and provide their response.

  • Thank you very much. I just checked out the previous posts and replies by jmoreno5 and found this one "How to connect sysref to AD9528".

    It seems to be the same issue and I think I also managed to find the engineering note referenced there.

    /cfs-file/__key/communityserver-discussions-components-files/426/Engineer_5F00_Note_5F00_AD9083-SYSREF-Interface-with-LVDS.pdf

    This is something I can get started with, but if you have any further comments or new information, please share.

  • Hi  ,

    Thank you for your patience.

    Since you already found the engineering note for AD9083 Sysref interface with LVDS, i'm assuming that you already made the necessary modifications with the sysref connection to the ADC. Currently, the evaluation board has no sysref connection from AD9528 to the ADC, i'm assuming you already done this. As to use the AD9528 to provide the sysref signal, there's some configuration you need to do with AD9528 to generate the sysref signal. I'll get back to you more about this.

    jmoreno5

  • Hi jmoreno5,

    Thank you for your reply.

    I think I've managed to configure the AD9528 to output the SYSREF signal. I was able to select between the N-shot pulse and continuous options and set the K divider to select the pulse width or period. I can also select between the different output level options.

    The level shifter in the engineer's note has now been implemented on the board and I've written the specified registers with the recommended values. The levels are now closer to what's specified for the AD9083. I've tried sending SYSREF pulses in N-shot and continuous wave modes, but reading register 0x27E still returns 0.

    I even tried disabling the N-shot detection in register 0x284 and go to continuous detection by writing 0 to it and still can't get the AD9083 to acknowledge it's received a SYSREF.

    Any other info or ideas would be helpful.

    Kind regards,

    Tsvetan

  • Hi   ,

    Do you have any additional suggestions?

    I managed to get the link working using Subclass 0, but I really need to figure out Subclass 1 for when we need to synchronize multiple devices.

    I've made the modifications described in the engineering note and wrote the specified registers, but I still can't capture SYSREF on the ADC's side.

    Is there a particular setup for the Clock Generator for this to work (i.e. K divider setting, output divider, output levels mode, etc.)? I think I've tried pretty much everything, but let me know if you have a particular register set that's been verified to work.

    If the levels are still not optimal, should we think about including an active, buffered level shifter on these pins?

    Kind regards,

    cekobidonq

  • Hi  ,  ,

    Do you have any other ideas on this issue? We're currently in the process of producing our own board, which will include an active level shifter to adjust the LVDS levels to the optimal values, but it would be good to know if there are any other issues with device configuration, etc. that could be preventing this from working.

    Kind regards,

    Tsvetan

  • Hi  ,

    Can you send me screenshot of your configuration summary? I'll try to check it on my side.

    Thanks.

    jmoreno5

  • Hi  ,

    Good news! I managed to detect SYSREF.

    I found the final clue in the no-OS drivers, file ad9083.c, function ad9083_setup(). (I must clarify that I'm not using the drivers directly, due to compatibility issues, but I was replicating the contents of the adi functions with the required changes in my code.)

    This function contains the exact sequence of adi_ad9083 function calls that's described in the datasheet (section Programming Guide) with 1 crucial difference. Before calling adi_ad9083_jtx_startup() there is a check if the jesd_subclass parameter is 1, in which case it executes 4 register writes, into registers 0x1C0, 0x260 and 0xD40.

    The values of 0x1C0 and 0x260 are the ones described in the Engineer Note and I had already included this in my code. However, the one that actually gets SYSREF to work is writing 0 to register 0xD40 [bit 1]. This is a reserved bit from the register named CLOCK_PD. There is no information in the datasheet, the drivers or the Engineer Note about what it does, but I can only assume it powers down the SYSREF receiver on AD9083.

    Now normally, the default value of this bit is 0 anyway, but one of the main functions for initialization adi_ad9083_device_clock_config_set() explicitly writes 1 to this bit (among other bits in this register).

    Anyway, I've included this sequence into my code now and I was able to capture SYSREF (after issuing SYSREF, register 0x27E now reads 0A).

    I'll have to re-configure my FPGA design to Subclass 1 operation to start experimenting with SYSREF synchronization, but it will have to be next week. But I think the main hurdle has now been passed.

    I would recommend that you include some details on bit 1 of register 0xD40 in the Engineer's Note, make the document more official (give it a title, document number, etc.) and make it available in the documentation section on the main product page for AD9083.  And I presume eventually all these things will have to make it into a datasheet revision.

    There are also several other issues with the datasheet I've noticed personally, I'd be happy to share them if they'd be useful to you.

    Kind regards,

    Cekobidonq

  • Hi  ,

    Thank you for sharing your findings and yes, that should be the fix for it, Register 0xD40[1] serves as sysref clock receiver buffer and it was power down during the clock device initialization. 

    Thanks.