LMK04828: Need help with LMK04828 configuration: PLL2 not locking, unexpected output frequencies.

Part Number: LMK04828

Tool/software:

Greetings.

I am trying to configure LMK04828 to use a 100 MHz oscillator connected to OSCin (bypassing the CLKin inputs entirely) to generate 100 MHz clocks on all DCLKoutX pins.

The issue is that PLL2 is not achieving lock. Consequently, some outputs (e.g., DCLKout6, DCLKout8) are defaulting to incorrect frequencies in the 300-312.5 MHz range instead of the target 100 MHz.

My loop filter design for PLL2 uses the following components:

  • C1 = 56 pF

  • C2 = 1.8 nF

  • R2 = 820 Ω

The register configuration was generated using TICS Pro. What are the critical settings I should double-check for this OSCin-bypass mode to ensure PLL2 can lock correctly? I'm programming the chip from Zynq MPSoC FPGA using SPI (CS,SCLK,SDIO). After writing each register (24 bits), I make CS High & while writing, I make it low. 

Thanks in advance! 

- Srujan

  • Hi Srujan,

    I don't see any issue with your config. It appears to be locking. I think the issue may be with your loop filter.

    I imported your config from TICS Pro to Pllatinum Sim, and the results I got are attached. Please try with this loop filter.

    Thanks,

    Michael

  • Hi Michael. 

    Thanks for the reply. 

    C3, C4, R3, R4 are internal values. C1,C2 & R2 are external loop filter values. Will your suggested values of C1,C2 & R2 still work? 

    Is it normal that DCLKoutX generate random frequencies when PLL2 is not locked? 

  • Hi Srujan,

    I took a look over the register settings for C3, C4, R3, and R4 and found that some of these values are not obtainable with the internal values. 

    For the sake of ease, you can try a 2nd order loop filter with these values:

    Thanks,

    Michael

  • Hi Michael.

    As suggested by you, I have used 2nd order loop filter with values (C1 = 10nF, C2 = 4.7nF, R2 = 680 ohm) & Reserved internal loop filter. 

    Still I'm unable to get the PLL2 locked. 

    For your reference, I'm attaching my schematic. 

    I'm programming all the registers in the recommended sequence from TICS Pro.

    Here are my simulation results from Vivado.

    R0 (INIT)	0x000090
    R0	0x000010
    R2	0x000200
    R3	0x000306
    R4	0x0004D0
    R5	0x00055B
    R6	0x000600
    R12	0x000C51
    R13	0x000D04
    R256	0x010018
    R257	0x010155
    R258	0x010255
    R259	0x010301
    R260	0x010402
    R261	0x010500
    R262	0x0106F1
    R263	0x010701
    R264	0x010818
    R265	0x010955
    R266	0x010A55
    R267	0x010B00
    R268	0x010C02
    R269	0x010D00
    R270	0x010EF1
    R271	0x010F01
    R272	0x011018
    R273	0x011155
    R274	0x011255
    R275	0x011300
    R276	0x011402
    R277	0x011500
    R278	0x0116F1
    R279	0x011701
    R280	0x011818
    R281	0x011955
    R282	0x011A55
    R283	0x011B00
    R284	0x011C02
    R285	0x011D00
    R286	0x011EF1
    R287	0x011F01
    R288	0x012018
    R289	0x012155
    R290	0x012255
    R291	0x012300
    R292	0x012402
    R293	0x012500
    R294	0x0126F1
    R295	0x012701
    R296	0x012818
    R297	0x012955
    R298	0x012A55
    R299	0x012B00
    R300	0x012C02
    R301	0x012D00
    R302	0x012EF1
    R303	0x012F01
    R304	0x013018
    R305	0x013155
    R306	0x013255
    R307	0x013300
    R308	0x013402
    R309	0x013500
    R310	0x0136F1
    R311	0x013701
    R312	0x013800
    R313	0x013900
    R314	0x013A0C
    R315	0x013B00
    R316	0x013C00
    R317	0x013D08
    R318	0x013E03
    R319	0x013F00
    R320	0x01408F
    R321	0x014100
    R322	0x014200
    R323	0x014311
    R324	0x014400
    R325	0x01457F
    R326	0x014600
    R327	0x01475F
    R328	0x014803
    R329	0x014903
    R330	0x014A02
    R331	0x014B16
    R332	0x014C00
    R333	0x014D00
    R334	0x014EC0
    R335	0x014F7F
    R336	0x015003
    R337	0x015102
    R338	0x015200
    R339	0x015300
    R340	0x015478
    R341	0x015500
    R342	0x015678
    R343	0x015700
    R344	0x015896
    R345	0x015904
    R346	0x015AB0
    R347	0x015BD4
    R348	0x015C20
    R349	0x015D00
    R350	0x015E00
    R351	0x015F0B
    R352	0x016000
    R353	0x016101
    R354	0x016244
    R355	0x016300
    R356	0x016400
    R357	0x01650C
    R369	0x0171AA
    R370	0x017202
    R380	0x017C15
    R381	0x017D33
    R358	0x016600
    R359	0x016700
    R360	0x01680C
    R361	0x01695D
    R362	0x016A20
    R363	0x016B00
    R364	0x016C2D
    R365	0x016DEE
    R366	0x016E13
    R371	0x017300
    R386	0x018200
    R387	0x018300
    R388	0x018400
    R389	0x018500
    R392	0x018800
    R393	0x018900
    R394	0x018A00
    R395	0x018B00
    R8189	0x1FFD00
    R8190	0x1FFE00
    R8191	0x1FFF53
    

    When I program the chip, I'm getting around 3.1V at CPout2 pin. But still, PLL2 is not getting locked & required frequencies are not getting generated. 

  • Hi Srujan,

    I took a look over your schematic and I have a few qualms.

    For starters, you mentioned that the device is set up in single-loop mode, using OSCin as the input. However, you have a loop filter instantiated for CPout1, and you have the output of the loop filter feeding into the Vtune pin of what appears to be a VCXO. Note that if you are using single-loop mode, no voltage will be applied to CPout1, which means no voltage will be applied to the Vtune pin, which means that there will be no input to the OSCin ports (can you probe those inputs? I suspect the input may not be as expected).

    Furthermore, I believe there is an issue with your configuration. I used your configuration on a LMK04828EVM that I reworked to accept an input through OSCin that bypasses the on board VCXO. When doing so, I saw no lock. However, when I rewrote the file based on suggested defaults, I achieved lock with PLL2 - with OSCin being fed with a 100MHz signal from a SMA100A signal generator.

    My suggestion would be to rethink your clock source - a VCXO is not appropriate for this use case, as compared to a XO. Additionally, I have attached the file that achieved lock on my setup for your evaluation. Use the second-order loop filter values I suggested earlier for CPout2 and set all remaining loop filter components to the lowest possible value to reduce their effect.

    lmk04828_singleloop_confirmedworking.tcs

    R0 (INIT)	0x000090
    R0	0x000010
    R2	0x000200
    R3	0x000306
    R4	0x0004D0
    R5	0x00055B
    R6	0x000600
    R12	0x000C51
    R13	0x000D04
    R256	0x010003
    R257	0x010155
    R258	0x010255
    R259	0x010301
    R260	0x010402
    R261	0x010500
    R262	0x0106F1
    R263	0x010755
    R264	0x01080C
    R265	0x010955
    R266	0x010A55
    R267	0x010B00
    R268	0x010C02
    R269	0x010D00
    R270	0x010EF1
    R271	0x010F05
    R272	0x011008
    R273	0x011155
    R274	0x011255
    R275	0x011300
    R276	0x011402
    R277	0x011500
    R278	0x0116F9
    R279	0x011700
    R280	0x011818
    R281	0x011955
    R282	0x011A55
    R283	0x011B00
    R284	0x011C02
    R285	0x011D00
    R286	0x011EF1
    R287	0x011F33
    R288	0x012008
    R289	0x012155
    R290	0x012255
    R291	0x012300
    R292	0x012402
    R293	0x012500
    R294	0x0126F9
    R295	0x012700
    R296	0x012808
    R297	0x012955
    R298	0x012A55
    R299	0x012B00
    R300	0x012C02
    R301	0x012D00
    R302	0x012EF9
    R303	0x012F00
    R304	0x013006
    R305	0x013155
    R306	0x013255
    R307	0x013300
    R308	0x013402
    R309	0x013500
    R310	0x0136F1
    R311	0x013733
    R312	0x013805
    R313	0x013904
    R314	0x013A0C
    R315	0x013B00
    R316	0x013C00
    R317	0x013D08
    R318	0x013E03
    R319	0x013F00
    R320	0x01408F
    R321	0x014100
    R322	0x014200
    R323	0x014310
    R324	0x014400
    R325	0x01457F
    R326	0x014618
    R327	0x01471B
    R328	0x014802
    R329	0x014942
    R330	0x014A02
    R331	0x014B16
    R332	0x014C00
    R333	0x014D00
    R334	0x014EC0
    R335	0x014F7F
    R336	0x015003
    R337	0x015102
    R338	0x015200
    R339	0x015300
    R340	0x015478
    R341	0x015500
    R342	0x015678
    R343	0x015700
    R344	0x015896
    R345	0x015900
    R346	0x015A78
    R347	0x015BD4
    R348	0x015C20
    R349	0x015D00
    R350	0x015E00
    R351	0x015F0B
    R352	0x016000
    R353	0x016101
    R354	0x016244
    R355	0x016300
    R356	0x016400
    R357	0x01650C
    R369	0x0171AA
    R370	0x017202
    R380	0x017C15
    R381	0x017D33
    R358	0x016600
    R359	0x016700
    R360	0x01680C
    R361	0x016959
    R362	0x016A20
    R363	0x016B00
    R364	0x016C00
    R365	0x016D00
    R366	0x016E13
    R371	0x017300
    R386	0x018200
    R387	0x018300
    R388	0x018400
    R389	0x018500
    R392	0x018800
    R393	0x018900
    R394	0x018A00
    R395	0x018B00
    R8189	0x1FFD00
    R8190	0x1FFE00
    R8191	0x1FFF53
    

    Thanks,

    Michael

  • Hi Michael,

    Thanks for the reply.

    I am currently operating the LMK04828 in single-loop mode, but I observe that CPout1 is providing ~1.69 V to the Voltage Control pin of the VCXO. Is this behavior expected in single-loop operation?

    Additionally, although my project requirement is to eventually use dual-loop mode (with CLKin1 = 10 MHz or 100 MHz), I am initially testing frequency generation in single-loop mode. Could you please clarify if this approach is valid, and whether the CPout1 voltage I am observing is normal in this configuration?

  • Hi Srujan,

    I went into lab to verify what the CPout1 voltage would be. I loaded the exact configuration I sent you, and I used a multimeter to probe CPout1 - which I measured at a value that was practically identical to yours (1.65V). My board is locked in single-loop mode and operating as expected. The behavior you are seeing is expected and correct.

    Are you seeing PLL2 lock when CPout1 is at that value?

    Thanks,

    Michael

  • Hi Michael,

    I'm not seeing PLL2 lock. But when I probe at CPout2, I get 3.1V (as the image I posted above) 

  • Hi Srujan,

    Do you have any other means of providing a clock input to OSCin? Or would you be able to probe the output of the VCXO? The way your system is currently setup, a control voltage is being sent from CPout1 that does not correspond to any clock, whatsoever. Typically, the control voltage is generated based upon the interaction of the input and local reference (VCXO), and that control voltage is then input to the VCXO to appropriately tune the output. The voltage you are applying is practically meaningless to the VCXO, and I suspect that is why you are unable to achieve lock.

    I have been doing all of my tests with a SMA100A signal generator, which provides a single-ended sine wave - and these tests have all resulted in PLL2 locking. 

    Thanks,

    Michael

  • Hi Michael, 

    Now, I established dual-loop mode with CLKin1 = 10MHz. Still I'm unable to achieve any lock of both PLL1 & PLL2. 

    Here is the configuration that I used. 

    R0 (INIT)	0x000090
    R0	0x000000
    R2	0x000200
    R3	0x000306
    R4	0x0004D0
    R5	0x00055B
    R6	0x000600
    R12	0x000C51
    R13	0x000D04
    R256	0x010018
    R257	0x010155
    R258	0x010255
    R259	0x010301
    R260	0x010402
    R261	0x010500
    R262	0x0106F1
    R263	0x010701
    R264	0x010818
    R265	0x010955
    R266	0x010A55
    R267	0x010B00
    R268	0x010C02
    R269	0x010D00
    R270	0x010EF1
    R271	0x010F01
    R272	0x011018
    R273	0x011155
    R274	0x011255
    R275	0x011300
    R276	0x011402
    R277	0x011500
    R278	0x0116F1
    R279	0x011701
    R280	0x011818
    R281	0x011955
    R282	0x011A55
    R283	0x011B00
    R284	0x011C02
    R285	0x011D00
    R286	0x011EF1
    R287	0x011F01
    R288	0x012018
    R289	0x012155
    R290	0x012255
    R291	0x012300
    R292	0x012402
    R293	0x012500
    R294	0x0126F1
    R295	0x012701
    R296	0x012818
    R297	0x012955
    R298	0x012A55
    R299	0x012B00
    R300	0x012C02
    R301	0x012D00
    R302	0x012EF1
    R303	0x012F01
    R304	0x013018
    R305	0x013155
    R306	0x013255
    R307	0x013300
    R308	0x013402
    R309	0x013500
    R310	0x0136F1
    R311	0x013701
    R312	0x013800
    R313	0x013900
    R314	0x013A0C
    R315	0x013B00
    R316	0x013C00
    R317	0x013D08
    R318	0x013E03
    R319	0x013F00
    R320	0x01400F
    R321	0x014100
    R322	0x014200
    R323	0x014300
    R324	0x0144FF
    R325	0x01457F
    R326	0x014610
    R327	0x01471B
    R328	0x014803
    R329	0x014903
    R330	0x014A02
    R331	0x014B16
    R332	0x014C00
    R333	0x014D00
    R334	0x014EC0
    R335	0x014F7F
    R336	0x015003
    R337	0x015102
    R338	0x015200
    R339	0x015300
    R340	0x015478
    R341	0x015500
    R342	0x01560C
    R343	0x015700
    R344	0x015896
    R345	0x015900
    R346	0x015A78
    R347	0x015BD4
    R348	0x015C20
    R349	0x015D00
    R350	0x015E00
    R351	0x015F0B
    R352	0x016000
    R353	0x016101
    R354	0x016244
    R355	0x016300
    R356	0x016400
    R357	0x01650C
    R369	0x0171AA
    R370	0x017202
    R380	0x017C15
    R381	0x017D33
    R358	0x016600
    R359	0x016700
    R360	0x01680C
    R361	0x016959
    R362	0x016A20
    R363	0x016B00
    R364	0x016C2D
    R365	0x016DEE
    R366	0x016E13
    R371	0x017300
    R386	0x018200
    R387	0x018300
    R388	0x018400
    R389	0x018500
    R392	0x018800
    R393	0x018900
    R394	0x018A00
    R395	0x018B00
    R8189	0x1FFD00
    R8190	0x1FFE00
    R8191	0x1FFF53
    

  • Hi Michael,

    In single loop mode, is it ok to bypass the control voltage pin of VCXO and generate frequency? Right now, I only have VCXO as Oscin source

  • Hi Srujan,

    I will be able to test this in lab tomorrow. In the meantime, can you share how you are determining the lock status of each PLL?

    Thanks,

    Michael

  • Hi Michael,

    I have connected LEDs to the outputs of STATUS_LD1 and STATUS_LD2. Additionally, when I program the chip, I observe random frequency variations on outputs other than the one I have configured.

  • Hi Srujan,

    Can you please show me a scope shot of the VCXO output? Can you probe close to the VCXO and show me what signal is being sent to the input of the LMK04828?

    Also, this works best in single-loop mode. I have gotten it to work with a reliable signal generator. I think the issue may just be your clock source.

    Thanks,

    Michael

  • Hi Michael,

    Thanks for the reply.

    It was identified that a firmware issue was preventing PLL2 from locking. This issue has now been resolved, and PLL2 is locking as expected.

    However, PLL1 is not locking. I am providing a 10 MHz reference input to the CLKin1 pins. In most cases, PLL1 does not lock; occasionally, the lock indicator LED glows briefly and then turns off.

    The loop filter being used has the following component values:

    • C1 = 4.7 nF

    • C2 = 68 nF

    • R2 = 71 kΩ

    This configuration corresponds to a loop bandwidth of approximately 100 Hz with a phase margin of 60°.

    Here is my configuration.

    R0 (INIT)	0x000090
    R0	0x000010
    R2	0x000200
    R3	0x000306
    R4	0x0004D0
    R5	0x00055B
    R6	0x000600
    R12	0x000C51
    R13	0x000D04
    R256	0x010018
    R257	0x010155
    R258	0x010255
    R259	0x010301
    R260	0x010402
    R261	0x010500
    R262	0x0106F1
    R263	0x010701
    R264	0x010818
    R265	0x010955
    R266	0x010A55
    R267	0x010B00
    R268	0x010C02
    R269	0x010D00
    R270	0x010EF1
    R271	0x010F01
    R272	0x011018
    R273	0x011155
    R274	0x011255
    R275	0x011300
    R276	0x011402
    R277	0x011500
    R278	0x0116F1
    R279	0x011701
    R280	0x011818
    R281	0x011955
    R282	0x011A55
    R283	0x011B00
    R284	0x011C02
    R285	0x011D00
    R286	0x011EF1
    R287	0x011F01
    R288	0x012018
    R289	0x012155
    R290	0x012255
    R291	0x012300
    R292	0x012402
    R293	0x012500
    R294	0x0126F1
    R295	0x012701
    R296	0x012818
    R297	0x012955
    R298	0x012A55
    R299	0x012B00
    R300	0x012C02
    R301	0x012D00
    R302	0x012EF1
    R303	0x012F01
    R304	0x013018
    R305	0x013155
    R306	0x013255
    R307	0x013300
    R308	0x013402
    R309	0x013500
    R310	0x0136F1
    R311	0x013701
    R312	0x013801
    R313	0x013904
    R314	0x013A0C
    R315	0x013B00
    R316	0x013C00
    R317	0x013D08
    R318	0x013E03
    R319	0x013F00
    R320	0x01400F
    R321	0x014100
    R322	0x014200
    R323	0x014300
    R324	0x01447F
    R325	0x01457F
    R326	0x014610
    R327	0x01471B
    R328	0x014803
    R329	0x014913
    R330	0x014A33
    R331	0x014B16
    R332	0x014C00
    R333	0x014D00
    R334	0x014EC0
    R335	0x014F7F
    R336	0x015003
    R337	0x015102
    R338	0x015200
    R339	0x015300
    R340	0x015478
    R341	0x015500
    R342	0x01560C
    R343	0x015700
    R344	0x015896
    R345	0x015900
    R346	0x015A78
    R347	0x015BD4
    R348	0x015C20
    R349	0x015D00
    R350	0x015E00
    R351	0x015F0B
    R352	0x016000
    R353	0x016101
    R354	0x016244
    R355	0x016300
    R356	0x016400
    R357	0x01650C
    R369	0x0171AA
    R370	0x017202
    R380	0x017C15
    R381	0x017D33
    R358	0x016600
    R359	0x016700
    R360	0x01680C
    R361	0x016959
    R362	0x016A20
    R363	0x016B00
    R364	0x016C00
    R365	0x016D00
    R366	0x016E13
    R371	0x017300
    R386	0x018200
    R387	0x018300
    R388	0x018400
    R389	0x018500
    R392	0x018800
    R393	0x018900
    R394	0x018A00
    R395	0x018B00
    R8189	0x1FFD00
    R8190	0x1FFE00
    R8191	0x1FFF53
    

    Input clock signals 

  • Hello Srujan,
    Is your 10MHz source a Sine Wave by chance? 
    Sine Waves suffer from low slew rate especially at lower frequencies such as 10MHz. 
    LMK048xx PLL1 is known to struggle with 10MHz Sine Wave inputs. 

    I would add a clock buffer in the input path or using a high frequency to determine if that's the issue. 

    Best regards, 

    Vicente