LMX2694-EP: LMX2694-EP Poor Locking Performance

Part Number: LMX2694-EP

Hi,

We are using LMX2694 to create a 9280 MHz clock from a 300 MHz osc in. We notice that the LMX2694 reports it's "locked" per R110 (readback = 0x0448). However, we notice on triggering the calibration that its output starts at 9280 MHz and drifts over the course of 20 seconds or so to 9200 MHz. Also, when we probe VTUNE, either with an oscilloscope or a DMM, the output frequency of the LMX2694 jumps up to ~9400 MHz. The DC value of V tune is about 365 mV.

image.png

image.pnglmx2694.txt 

 

  • Another item to note, after the initial drift, if we halt the OSC_IN signal, the output of the LMX2694 is unaffected, indicating to us that the VCO is essentially free running. The output frequency is also very sensitive to temperature after the initial transient. 

  • Here is an image of the VTUNE node versus time. When the calibration is triggered

  • Are you loading all registers before triggering the calibration? There are several coefficients for VCO calibration that need to be changed from POR default values before calibrating the VCO. Make sure you write all registers at least once after every POR cycle or RESET toggle (TICS Pro shortcut: Ctrl+L).

    If that's not the problem, a few other things to check:

    • What is the amplitude and slew rate of the 50MHz signal? Has it been properly terminated, e.g. by the EVM input circuitry defaults?
    • Have you confirmed the supply voltage at the device looks nominal?
    • Can you check that any configuration at all can lock, such as the default configuration?
  • We right all registers using the hex file generated from TICs pro v1.7.8.0. Adding a reset (write 0x000002, write 0x000000) at the beginning of the sequence seemed to have no effect. We have confirmed 3.3V nominal supply to all of the supply nodes on the chip. The 50 Mhz signal, I assume you mean the 300 MHz OSCIN signal, this is an LVDS signal from LMK1D2102RGR. Differential amplitude is about 0.37 Vptp, which we previously discussed in this thread https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1619666/lmx2694-ep-lvds-oscin. The only configuration we can get to lock to the correct frequency is with the 300 MHz divided down to 1.85 MHz into the PFD, however the lock is extremely poor, the sidebands on the output signal are egregious.  

    Our application is a custom board, we are not working with the eval kit and TICs pro cannot connect to the device directly. 

  • I just noticed, in the hex file you provided, there are several hex data which are visibly not matching the address values next to them. Can you check if the sequence that you're writing on your system is actually diverting register writes from R13/R12 and R6/5/4/3/2 to R0?

  • Hi Derek,

    That's unfortunately the way TICS Pro outputs the HEX files. We've been correcting that by hand. See another example below. 

    R114	0x720000
    R113	0x710000
    R112	0x700000
    R111	0x6F0000
    R110	0x6E0000
    R109	0x6D0000
    R108	0x6C00F1
    R107	0x6B0000
    R106	0x6A0007
    R105	0x694440
    R104	0x680000
    R103	0x670000
    R102	0x660000
    R101	0x650000
    R100	0x640000
    R99	0x630000
    R98	0x620000
    R97	0x610000
    R96	0x600000
    R95	0x5F0000
    R94	0x5E0000
    R93	0x5D0000
    R92	0x5C0000
    R91	0x5B0000
    R90	0x5A0000
    R89	0x590000
    R88	0x580000
    R87	0x570000
    R86	0x560000
    R85	0x550000
    R84	0x540000
    R83	0x530000
    R82	0x520000
    R81	0x510000
    R80	0x500000
    R79	0x4F0000
    R78	0x4E0064
    R77	0x4D0000
    R76	0x4C000C
    R75	0x4B0840
    R74	0x4A1000
    R73	0x4906E4
    R72	0x48001B
    R71	0x470050
    R70	0x46C350
    R69	0x450000
    R68	0x4403E8
    R67	0x430000
    R66	0x4201F4
    R65	0x410000
    R64	0x401388
    R63	0x3F0000
    R62	0x3E0322
    R61	0x3D00A8
    R60	0x3C09C4
    R59	0x3B0001
    R58	0x3A0001
    R57	0x390020
    R56	0x380000
    R55	0x370000
    R54	0x360000
    R53	0x350000
    R52	0x340420
    R51	0x330080
    R50	0x320000
    R49	0x314180
    R48	0x300300
    R47	0x2F0300
    R46	0x2E07FF
    R45	0x2DC8DF
    R44	0x2C1F83
    R43	0x2B0000
    R42	0x2A0000
    R41	0x290000
    R40	0x280000
    R39	0x270003
    R38	0x260000
    R37	0x258304
    R36	0x240136
    R35	0x230004
    R34	0x220000
    R33	0x211E21
    R32	0x200393
    R31	0x1F03EC
    R30	0x1E318C
    R29	0x1D318C
    R28	0x1C0488
    R27	0x1B0002
    R26	0x1A0DB0
    R25	0x190624
    R24	0x18071A
    R23	0x17007C
    R22	0x160001
    R21	0x150401
    R20	0x14D048
    R19	0x1327B7
    R18	0x120064
    R17	0x11012C
    R16	0x100080
    R15	0x0F064F
    R14	0x0E1E70
    R13	0x0D0004
    R12	0x0C000A
    R11	0x0B0018
    R10	0x0A10D8
    R9	0x090604
    R8	0x082000
    R7	0x0700B2
    R6	0x060000
    R5	0x05005B
    R4	0x0400D0
    R3	0x030006
    R2	0x020000
    R1	0x01080B
    R0	0x000018
    

  • Looking at the register map for R13, I see that the default value is 0x4000; yet somehow, our R13 (corrupted) reads 0x000D04, and your corrected R13 reads 0x0D0004. This should read 0x0D4000. Similar results are observed across the other registers.

    I think we should prevent TICS Pro from producing corrupted data! Converting it manually is error-prone, and the point of the tool is to allow you to automate that process; if it's not working correctly, the tool needs to be fixed.

    Close any open copies of TICS Pro.

    In C:\ProgramData\Texas Instruments\TICS Pro\Configurations\Devices\PLL + VCO\LMX2694, delete LMX2694.tcb. It's a copy of the last state of the profile, and it likely has corrupted data that is causing the address values to be missing.

    For your hex register export data, I have generated a corrected .tcs and .txt file pair that should match the intent of the original image in the first post. Please try this and see if it works. Don't re-use the existing files you have, as those files corrupt the address values. A subsequent version of TICS Pro prevents this from happening; for 1.7.8.0, we just have to be careful.

    Can you please check if loading these files preserves the dark gray address portion of the bitfields in the raw registers page in TICS Pro, for R13, R12, R6, R5, R4, R3, R2?

    LMX2694-TI.tcs

    R114	0x720000
    R113	0x710000
    R112	0x700000
    R111	0x6F0000
    R110	0x6E0000
    R109	0x6D0000
    R108	0x6C00F1
    R107	0x6B0000
    R106	0x6A0007
    R105	0x694440
    R104	0x680000
    R103	0x670000
    R102	0x660000
    R101	0x650000
    R100	0x640000
    R99	0x630000
    R98	0x620000
    R97	0x610000
    R96	0x600000
    R95	0x5F0000
    R94	0x5E0000
    R93	0x5D0000
    R92	0x5C0000
    R91	0x5B0000
    R90	0x5A0000
    R89	0x590000
    R88	0x580000
    R87	0x570000
    R86	0x560000
    R85	0x550000
    R84	0x540000
    R83	0x530000
    R82	0x520000
    R81	0x510000
    R80	0x500000
    R79	0x4F0000
    R78	0x4E0064
    R77	0x4D0000
    R76	0x4C000C
    R75	0x4B0840
    R74	0x4A1000
    R73	0x4906E4
    R72	0x48001B
    R71	0x470058
    R70	0x46C350
    R69	0x450000
    R68	0x4403E8
    R67	0x430000
    R66	0x4201F4
    R65	0x410000
    R64	0x401388
    R63	0x3F0000
    R62	0x3E0322
    R61	0x3D00A8
    R60	0x3C09C4
    R59	0x3B0001
    R58	0x3A0001
    R57	0x390020
    R56	0x380000
    R55	0x370000
    R54	0x360000
    R53	0x350000
    R52	0x340420
    R51	0x330080
    R50	0x320000
    R49	0x314180
    R48	0x300300
    R47	0x2F0300
    R46	0x2E07FE
    R45	0x2DC8DF
    R44	0x2C1F23
    R43	0x2B0001
    R42	0x2A0000
    R41	0x290000
    R40	0x280000
    R39	0x270003
    R38	0x260000
    R37	0x258104
    R36	0x24004D
    R35	0x230004
    R34	0x220000
    R33	0x211E21
    R32	0x200393
    R31	0x1F43EC
    R30	0x1E318C
    R29	0x1D318C
    R28	0x1C0488
    R27	0x1B0002
    R26	0x1A0DB0
    R25	0x190624
    R24	0x18071A
    R23	0x17007C
    R22	0x160001
    R21	0x150401
    R20	0x14D048
    R19	0x1327B7
    R18	0x120064
    R17	0x11012C
    R16	0x100080
    R15	0x0F064F
    R14	0x0E1E70
    R13	0x0D4000
    R12	0x0C500A
    R11	0x0B0018
    R10	0x0A10D8
    R9	0x090604
    R8	0x082000
    R7	0x0700B2
    R6	0x067802
    R5	0x0503E8
    R4	0x040E43
    R3	0x030642
    R2	0x020500
    R1	0x01080B
    R0	0x006018
    

  • Hi Derek,

    Yes with the .txt file you shared, we are able to lock to the reference properly! Here is what we readback for each of the registers you identify, R12, R6, R5, R4, R3, R2, with R12 at the top and R2 at the bottom. 

    00500a
    007802
    0003e8
    000e43
    000642
    000500

    If we upgrade to the latest TICS PRO can we circumvent this issue? 

  • The new version of TICS Pro should prevent this kind of tcs/hex file corruption, including when reading from older, corrupted files. It also documents when you are reading in from a corrupted file, by highlighting mismatched addresses encoded in the data. As an example, I deliberately set the value of R3, R2, and R1 to 0 in a TCS file, and tried loading the file on the latest TICS Pro (1.7.10.1):

    Likewise, when importing the original hex file you provided, it documents that the addresses have been corrupted:

    If the actual register data is corrupt (instead of just the appended address), the tool can't protect against that - register data is arbitrary and user-specified. But without the address corruption issue you encountered, it's unlikely that data corruption would occur, because the source of data corruption is usually address corruption causing writes and reads to be misdirected to corrupted addresses. So I think that the latest TICS Pro mostly circumvents this issue, yes, with the caveat that already-broken saved configs or hex files are going to stay broken.