Post Go back to editing

ZCU102 and AD9986 - operation at 122.88 MHz

Category: Software


I currently have a ZCU102 with an AD9986 board operating with 122.88 MHz as the main reference.

The HMC7044 on the AD9986 board is running with a PLL2 frequency of 3000 MHz.

The 3000 MHz is then used to create all clocks with 3000/12 generating 250 MHz for the DAC.ADC.

The AD9986 uses the 250 MHz reference to run at 12 GHz for the DAC and 6 GHz for the ADC.

I want to run all clocks as integer multiples from the 122.88 MHz, so I changed the HMC7044 PLL2 frequency from 3000 MHz to 2949.12 MHz.

Doing this makes the AD9986 DAC/ADC reference run at 245.76 MHz, and the DAC/ADC should be running at 11796.48 MHz and 5898.24 MHz.

Unfortunately, this change breaks the system where the rx and tx devices cannot be seen.

Running jesd_status shows the correct rate for the link clock at 245.76 MHz but the JESD lanes are not working.

When I use iio_oscilloscope, the rx and tx devices cannot be seen. These can be seen with an unedited dts file.


The dts file has the following lines.

adi,dac-frequency-hz = < 0x02 0xcb417800 >;

adi,adc-frequency-hz = < 0x01 0x65a0bc00 >;

These values equate to 3410065408 Hz and 1705032704 Hz which do not seem to relate to anything.


When I look at HMC7044 register values for channel dividers with the unedited dts file, I noticed that the values that I read from iio_oscilloscope do not all match the values defined in the dts file.

It looks like something in the system is making the values change.

If I do the same thing with the edited file (3000 MHz -> 2949.12 MHz), the channel divider values match between the dts file and those read from iio_oscilloscope.

Any help to make this work would be much appreciated.