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.

LMK04828BEVM: LMK04828B - MULTI BOARD SYNC ISSUE using 96MHz

Part Number: LMK04828BEVM
Other Parts Discussed in Thread: LMX2594, LMK04828, LMK04832

Hi Team

As shown in the attached block diagram “SETUP-BD”, we are using LMK04828B and LMX2594 on our custom board to provide all RF reference clocks and the SYSREF clock to the RFSoC 49DR device.

As shown in the block diagram, we are testing multi-SoC synchronization for the DAC channels generated from two RFSoC 49DR devices.

We are using an external clock source through a splitter to provide synchronized clocks to LMK CLKIN0, in order to lock both LMK04828B devices with in-phase external clocks. Additionally, we are using a trigger to generate the DAC outputs at the same time.

We are able to synchronize both RFSoC DAC outputs when using an external 5 MHz clock source. Both DAC outputs are in phase. I have attached the LMK04828 configuration files used for this test case (“5MHz-LMK” and “5MHz-LMK-SYSREF”).

For some applications, we need to use an external 96 MHz clock instead of 5 MHz to synchronize the LMK04828B. I modified the existing 5 MHz CLKIN0-based clock configuration to 96 MHz, as shown in the attached snapshots (“96MHz-LMK” and “96MHz-LMK-SYNC”). However, when using the external 96 MHz clock, even though PLL1 and PLL2 of the LMK04828B are locked, we observe a phase difference between the DAC outputs.

Upon further investigation, we found that there is some delay in DAC generation when using the 96 MHz clock configuration.

Initially, I used a PLL1 R divider value of 96 to match a SYSREF clock of 5 MHz, and we observed a larger phase difference compared to the attached 96 MHz clock configuration (where a PLL1 R divider value of 16 is used).

My questions are:

  1. What procedures should be followed to synchronize the LMK04828B using an external 96 MHz clock?
  2. Do I need to provide an additional trigger to the SYNC pin of the LMK when using a 96 MHz external clock?
  3. Do you have any application notes that explain multi-LMK04828B synchronization?SETUP-BD.PNG5MHz-LMK.PNG96MHz-LMK-SYNC.PNG96MHz-LMK.PNG5MHz-LMK-SYSREF.PNG
  • The PLL R divider is not part of the SYNC process on LMK04828. Even if you synchronize the outputs using the SYNC procedure, because the R-divider phase is unknown in the 96MHz case, the alignment between the devices will be random. In principle it may be technically possible to find a procedure of register writes that can disable the input clock, reset the R dividers on both devices simultaneously, and restart the input clock on both devices, ensuring the R-dividers in both devices are initialized to the same phase; in practice, this has never been attempted, so I cannot recommend trying to do this.

    I think you must use LMK04832 instead of LMK04828. LMK04832 is a p2p alternative to LMK04828, which has almost identical features, but crucially it includes the ability to synchronize the R-divider through an external SYNC pin or CLKin0 source. With this capability, you could synchronize the R-dividers in both devices simultaneously to the same 96MHz clock cycle, and guarantee that the SYSREFs are aligned across both devices. I've attached a migration guide which offers some assistance in making the switch: 0841.LMK04828 to LMK04832 Migration Guide.pdf

    Note that R-divider SYNC must be delivered externally, by either SYNC pin or by CLKin0. The setup and hold time for this signal is on the order of 100ps, though the exact timing of the synchronization may be offset by 3-5ns across temperature when using the SYNC pin since this goes through some MOS structures with different tempco than the CML signal path in CLKinX and the R-dividers.

    We do have an app note that explains multi-device synchronization, see https://www.ti.com/lit/an/snaa294/snaa294.pdf. The app note is written with LMK04828 in mind, but includes reference to cases where R-divider sync would be used (such as this case).