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.

LMK04828: Dynamic Digital Delay steps

Part Number: LMK04828
Other Parts Discussed in Thread: LMK05028, LMK05318

I have some questions about using the dynamic digital delay on the LMK04828. I have a 1 PPS signal coming into my FPGA, and I want to align the clock edge of DCLKout0 so that the clock comes right after when the PPS is detected by the FPGA.

I figure I can set up a counter in the FPGA that increments every clock cycle, and  at every PPS detected: 1) outputs the value to a read-only register and 2) resets. Every PPS, I want to insert a DDLY of one VCO cycle and read the register. My theory is that by pushing the clock edge back incrementally, I should see a PPS cycle where the clock period in which the PPS is detected will 'jump' a cycle, which should result in the counter value being less by 1. If my logic is wrong, feel free to let me know, but I mostly just wanted to give a little context to my logic. The clock in question is 125 MHz

The sequence, as I understood it from the datasheet:

Set DCLKout0_DDLY_CNTH = C

Set DCLKout0_DDLY_CNTL = D

Set CLKout0_DDLY_PD = 0

Set DDLYd0_EN = 1;

Set SYNC_DIS0 = 0

Set SYNC_MODE (Reg 143) to SPI write (0x13)

Set SYSREF_MUX (Reg 139) to Pulser (0x02)

After that, am I understanding correctly that every time I write to DDLYd_STEP_CNT, the CNTH/CNTL are inserted for the number of clock cycles written to DDLYd_STEP_CNT?

Thanks

  • Dear Stephen,

    I like what you are proposing to align the 1 PPS with the output clock. This would be some kind of closed loop circuit however and I am not sure how stable that would...

    We have two device that can handle one PPS directly: LMK05028 and LMK05318 (will release this year). You may find these device to do what you are looking for better.

    I will let Timothy comment on the programming sequence.

    Regards, Simon.
  • Hello Stephen,

    Yes, your approach will work, however I'm not sure about the less than 1 count. But yes, there will be one setting with a minimum value. (However you would need to consider your maximum count value too, as that may be closer to 1 pps, but leading instead of lagging -- or vice versa).

    Having said that, there is an oversight in the LMK04828 datasheet to be updated, to use dynamic digital delay, also program the register following the CLKoutX_Y_DDLY_CNTH/L register to the same value.

    In your example, set 0x101 = 0xcd; but also 0x102 = 0xcd. You will see these registers in the LMK04828 TICS Pro software as CLKoutX_Y_DDLYd_CNTH/L on the User Controls page.
    * After synchronizing the outputs, do not change the CLKoutX_Y_DDLY_CNTH/L or CLKoutX_Y_DDLYd_CNTH/L values.
    * SYNC_MODE and SYSREF_MUX are do not care.
    * When SYNC_DIS0 = 0, be aware that SYNC signals could reset the divider and destroy the phase relationships.

    To perform a dynamic digital delay adjustment, with DDLYd0_EN = 1; simply program the DDLYd_STEP_CNT register and that many adjustments will be made.

    73,
    Timothy