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.

LMK04832: Turning on continuous SYSREF with SYNC/SYSREF_REQ pin

Part Number: LMK04832

Hi,

In our application, we are using 1 LMK04832 to synchronize 4 ADCs & 1 FPGA at the same time.To feed every ADC, CLKout0/CLKout8/CLKout10/CLKout12 output 1GHz device clock, CLKout1/CLKout9/CLKout11/CLKout13 output 15.625MHz continuous SYSREF clock.To feed FPGA, CLKout4/CLKout6 output 250MHz device clock(which is connected to FPGA's MGTHREFCLK input), CLKout5/CLKout7 output 15.625MHz continuous SYSREF clock(which is connected to FPGA's SYSREF input), CLKout2/CLKout3 output 250MHz system clock(which is connected to FPGA's logic). For LMK04832, we are using 125MHz clock to feed CLKin2, while it is working at PLL2 Single Loop Mode with running VCO1 at 3GHz. The PDF of PLL2 is configured as 125MHz. And we select the output of N Prescaler to source the N Divider of PLL2(the schematic is attached at last).

For establishing fixed deterministic phase relationship of the phase of the SYSREF output to the phase of device clock output, and also generating all device clock outputs before SYSREF is turning on, we'd like to use SYNC/SYSREF_REQ pin(the rising edge of SYNC/SYSREF_REQ is used as the triger) to turning on continuous SYSREF generation at any time after the device clock generated steadily.

Now we have programed LMK04832 as the following recommanded programming sequence(the configuration file is attached at last). But after the rising edge of SYNC/SYSREF_REQ is asserting, we found that the phase relationship of SYSREF to device clock is changing dynamically(the realtime waveform, which is recorded as mp4 video, is also attached at last). So how can we achieve the fixed deterministic phases? Whether the programming sequence is wrong or the register value is wrong?

Furthermore, when we enable the SYSREF analog delay function, while enabling more than two channels, the frequency of continuous SYSREF clock is changed to low frequency clock unreasonably, which is undesirable and instable. So should LMK04832 be capable of running multiple channels of SYSREF analog delay modules at the same time? If so, how can we implement this function in our design.

; ROM_INIT coe file
; Content :
;

memory_initialization_radix = 16 ;
memory_initialization_vector =

; HIGH = address
; LOW = DATA

; =============================
; 1-a: prepare for manual sync : sync_pol = 0, sync_mode = 1; sysref_mux = 0
; =============================
014301
013900

; =============================
; 1-b: setup output dividers as per example
; =============================
010003
01080C
01100C
01180C
012003
012803
013003
010200
010A00
011200
011A00
012200
012A00
013200

; =============================
; others
; =============================
010744
010F11
011711
011F11
012744
012F44
013500
013744
013824
013F80
014100
014200
014500
014618
01470A
014802
014902
014A00
014B06
014C00
014D00
014EC0
014F7F
015001
015102
015200
015300
015478
015500
015678
015700
015896
015900
015A78
015BD4
015C20
015D00
015E1E
015F0B
016000
016101
01624C
016300
016400
01650C
016958
016A20
016B00
016C00
016D00
016E13
017310
017700
018200
018300
016600
016700
01680C

; =============================
; 1-c: setup output dividers as per example
; =============================
013A00
013BC0

; =============================
; 1-d: setup SYSREF
; =============================
014008
014311
013E01
010420
010C10
011420
011C20
012420
012C20
013420

; =============================
; 1-e: clear local SYSREF DDLY
; =============================
014391

; =============================
; 2-a: set device clock and SYSREF divider digital delays
; =============================
01010A
01090A
01110A
01190A
01210A
01290A
01310A
013C00
013D08

; =============================
; 2-b: set device clock digital delay half steps
; =============================
010340
010B40
011340
011B40
012340
012B40
013340

; =============================
; 2-c: Set SYSREF clock digital delay as required to achieve known phase relationships
; =============================
010602
010E01
011601
011E01
012602
012E02
013602

; =============================
; 2-d: To allow SYNC to affect dividers
; =============================
014400

; =============================
; 2-e: Perform SYNC by toggling SYNC_POL = 1 then SYNC_POL = 0
; =============================
0143B1
014391

; =============================
; 3-a: Prevent SYNC (SYSREF) from affecting dividers
; =============================
0144FF

; =============================
; 4-a: Release reset of local SYSREF digital delay
; =============================
014311

; =============================
; 5-a: Allow pin SYNC event to start
; =============================
014311

; =============================
; 5-b: Select Continuous as SYSREF signal
; =============================
013912

LMK04832_SCH.pdf

  • I want to correct a mistake: the input source of LMK04832 is CLKin0 with feeding 125MHz Clock.

    And we modify the configuration file again which is attached at last, plz ignore the first ROM file and take this one for precedence.

    W 000 00000080
    
    
    ; =============================
    ; others
    ; =============================
    
    W 000 00010744
    W 000 00010F11
    W 000 00011711
    W 000 00011F11
    W 000 00012744
    W 000 00012F44
    W 000 00013500
    W 000 00013744
    W 000 00013824
    W 000 00013F80
    W 000 00014100
    W 000 00014200
    
    
    ; =============================
    ; 1-a: prepare for manual sync
    ; =============================
    
    W 000 00014300
    W 000 00013900
    
    ; =============================
    ; 1-b: setup output dividers as per example
    ; =============================
    
    W 000 00010003
    W 000 0001080C
    W 000 0001100C
    W 000 0001180C
    W 000 00012003
    W 000 00012803
    W 000 00013003
    W 000 00010200
    W 000 00010A00
    W 000 00011200
    W 000 00011A00
    W 000 00012200
    W 000 00012A00
    W 000 00013200
    
    ; =============================
    ; 1-c: setup output dividers as per example
    ; =============================
    W 000 00013A00
    W 000 00013BC0
    
    ; =============================
    ; 1-d: setup SYSREF
    ; =============================
    
    W 000 00014008
    W 000 00014310
    W 000 00013E01
    W 000 00010420
    W 000 00010C10
    W 000 00011420
    W 000 00011C20
    W 000 00012420
    W 000 00012C20
    W 000 00013420
    
    ; =============================
    ; 1-e: clear local SYSREF DDLY
    ; =============================
    
    W 000 00014390
    
    ; =============================
    ; 2-a: set device clock and SYSREF divider digital delays
    ; =============================
    
    W 000 0001010A
    W 000 0001090A
    W 000 0001110A
    W 000 0001190A
    W 000 0001210A
    W 000 0001290A
    W 000 0001310A
    W 000 00013C00
    W 000 00013D08
    
    ; =============================
    ; 2-b: set device clock digital delay half steps
    ; =============================
    
    W 000 00010340
    W 000 00010B40
    W 000 00011340
    W 000 00011B40
    W 000 00012340
    W 000 00012B40
    W 000 00013340
    
    ; =============================
    ; 2-c: Set SYSREF clock digital delay as required to achieve known phase relationships
    ; =============================
    
    W 000 00010602
    W 000 00010E01
    W 000 00011601
    W 000 00011E01
    W 000 00012602
    W 000 00012E02
    W 000 00013602
    
    ; =============================
    ; 2-d: To allow SYNC to affect dividers
    ; =============================
    
    W 000 00014400
    
    ; =============================
    ; 2-e: Perform SYNC by toggling SYNC_POL = 1 then SYNC_POL = 0
    ; =============================
    
    W 000 000143B0
    W 000 00014390
    
    ; =============================
    ; 3-a: Prevent SYNC (SYSREF) from affecting dividers
    ; =============================
    
    W 000 000144FF
    
    ; =============================
    ; 4-a: Release reset of local SYSREF digital delay
    ; =============================
    
    W 000 00014310
    
    ; =============================
    ; 5-a: Allow pin SYNC event to start
    ; =============================
    ;014311
    
    W 000 00014310
    
    ; =============================
    ; 5-b: Select Continuous as SYSREF signal
    ; =============================
    
    W 000 00013912
    
    
    ; =============================
    ; others
    ; =============================
    
    
    W 000 00014500
    W 000 00014618
    W 000 0001470A
    W 000 00014802
    W 000 00014902
    W 000 00014A00
    W 000 00014B06
    W 000 00014C00
    W 000 00014D00
    W 000 00014EC0
    W 000 00014F7F
    W 000 00015001
    W 000 00015102
    W 000 00015200
    W 000 00015300
    W 000 00015478
    W 000 00015500
    W 000 00015678
    W 000 00015700
    W 000 00015896
    W 000 00015900
    W 000 00015A78
    W 000 00015BD4
    W 000 00015C20
    W 000 00015D00
    W 000 00015E1E
    W 000 00015F0B
    W 000 00016000
    W 000 00016101
    W 000 0001624C
    W 000 00016300
    W 000 00016400
    W 000 0001650C
    
    W 000 00017310
    
    W 000 00016600
    W 000 00016700
    W 000 0001680C
    
    W 000 00016958
    W 000 00016A20
    W 000 00016B00
    W 000 00016C00
    W 000 00016D00
    W 000 00016E13
    
    W 000 00017700
    W 000 00018200
    W 000 00018300
    
    
    

  • Kaibo,

    I need some time to convert this to a usable format for TICS Pro and reproduce the setup. I'll have an update for you tomorrow.

    Regards,

    Derek Payne

  • Kaibo,

    Thanks for your patience.

    • I notice that in step 2-e where you toggle SYNC_POL to trigger the divider SYNC, you have not configured the SYNC_MODE mux for the SYNC pin path. "Software" SYNC technically uses the SYNC pin input state (usually fixed LOW by the SYNC pin internal pull-down) to generate the SYNC_POL inversion signal. In your preparatory step 1-d, you configure 0x014310, which leaves SYNC_MODE in the disabled state; the SYNC pol toggle is never received by the dividers. This should instead be 0x014311.
    • The same is true in step 1-e, where the SYSREF_CLR is toggled; this should be 0x014391 instead.
    • The same is true in step 2-e, where the correct SYNC_POL toggle would write 0x143B1, 0x14391 instead.
    • Step 5-a appears to be superfluous.
    • You have several clocks that are using divide-by-3. You should enable DCC & HS (duty cycle correction and half-step) for these clocks. Even if you don't use the half-step adjust, the duty cycle correction is required to get divide-by-3 to work correctly. In step 2-b:
      • 0x010344
      • 0x012344
      • 0x012B44
      • 0x013344

    The steps above should stabilize the clocks under normal operation, to the point where you get repeatable results after synchronization.

    I would also recommend disabling PLL1 (0x014088 in step 1-d), and OSCout (0x013820 in initial others step) just to save power, since you are using the PLL2-only configuration.

    I don't understand what effect you're describing when using SYSREF analog delay. Does the frequency of the SYSREF change?

    Regards,

    Derek Payne

  • Hi Derek,

    Thank you for your prompt reply!

    We have tried for several times according to your suggestions. But it seems to still have no effect. In all of the cases, generally, there are two situations:

    A. Only Change every 0x143/0x140/0x138 as your suggestion( and also, I have deleted Step 5-a).

    B. Besides option A, we also change 0x103/0x123/0x12B/0x133 to 0x44. (For this situation, the configuration file is attached at last)

    In case A, the frequency of DCLK & SCLK output is steady, but the phase between them is still changing dynamically.

    In case B, the frequency of SCLK output is changing dynamically, which is much lower than 15.625MHz, while the frequency of DCLK output is steady 1GHz(the realtime waveform, which is recorded as mp4 video, is also attached at last. In the video, the blue waveform is DCLK-1GHz, the yellow waveform is SCLK-SYSREF, which has the dynamically changing frequency all the time.).

    According as Figure7&8 in the Datasheet, however the DCC module can only have an affect on the DCLK outputs, turning on the dcc module seems to have a powerful influence on SCLK outputs in case B. So how can we achieve the fixed deterministic phases of DCLK to SCLK in the triggerable continuous SYSREF mode?When DCC is required? Why enabling DCC can cause SCLK-SYSREF output unsteady?

    W 000 00000080
    
    
    ; =============================
    ; others
    ; =============================
    
    W 000 00010744
    W 000 00010F11
    W 000 00011711
    W 000 00011F11
    W 000 00012744
    W 000 00012F44
    W 000 00013500
    W 000 00013744
    W 000 00013820		;0203
    W 000 00013F80
    W 000 00014100
    W 000 00014200
    
    
    ; =============================
    ; 1-a: prepare for manual sync
    ; =============================
    
    W 000 00014301		;0203
    W 000 00013900
    
    ; =============================
    ; 1-b: setup output dividers as per example
    ; =============================
    
    W 000 00010003
    W 000 0001080C
    W 000 0001100C
    W 000 0001180C
    W 000 00012003
    W 000 00012803
    W 000 00013003
    W 000 00010200
    W 000 00010A00
    W 000 00011200
    W 000 00011A00
    W 000 00012200
    W 000 00012A00
    W 000 00013200
    
    ; =============================
    ; 1-c: setup output dividers as per example
    ; =============================
    W 000 00013A00
    W 000 00013BC0
    
    ; =============================
    ; 1-d: setup SYSREF
    ; =============================
    
    W 000 00014088		;0203
    W 000 00014311		;0203
    W 000 00013E01
    W 000 00010420
    W 000 00010C10
    W 000 00011420
    W 000 00011C20
    W 000 00012420
    W 000 00012C20
    W 000 00013420
    
    ; =============================
    ; 1-e: clear local SYSREF DDLY
    ; =============================
    
    W 000 00014391		;0203
    
    ; =============================
    ; 2-a: set device clock and SYSREF divider digital delays
    ; =============================
    
    W 000 0001010A
    W 000 0001090A
    W 000 0001110A
    W 000 0001190A
    W 000 0001210A
    W 000 0001290A
    W 000 0001310A
    W 000 00013C00
    W 000 00013D08
    
    ; =============================
    ; 2-b: set device clock digital delay half steps
    ; =============================
    
    W 000 00010344		;0203
    W 000 00010B40
    W 000 00011340
    W 000 00011B40
    W 000 00012344		;0203
    W 000 00012B44		;0203
    W 000 00013344		;0203
    
    ; =============================
    ; 2-c: Set SYSREF clock digital delay as required to achieve known phase relationships
    ; =============================
    
    W 000 00010602
    W 000 00010E01
    W 000 00011601
    W 000 00011E01
    W 000 00012602
    W 000 00012E02
    W 000 00013602
    
    ; =============================
    ; 2-d: To allow SYNC to affect dividers
    ; =============================
    
    W 000 00014400
    
    ; =============================
    ; 2-e: Perform SYNC by toggling SYNC_POL = 1 then SYNC_POL = 0
    ; =============================
    
    W 000 000143B1		;0203
    W 000 00014391		;0203
    
    ; =============================
    ; 3-a: Prevent SYNC (SYSREF) from affecting dividers
    ; =============================
    
    W 000 000144FF
    
    ; =============================
    ; 4-a: Release reset of local SYSREF digital delay
    ; =============================
    
    W 000 00014310
    
    ; =============================
    ; 5-b: Select Continuous as SYSREF signal
    ; =============================
    
    W 000 00013912
    
    
    ; =============================
    ; others
    ; =============================
    
    
    W 000 00014500
    W 000 00014618
    W 000 0001470A
    W 000 00014802
    W 000 00014902
    W 000 00014A00
    W 000 00014B06
    W 000 00014C00
    W 000 00014D00
    W 000 00014EC0
    W 000 00014F7F
    W 000 00015001
    W 000 00015102
    W 000 00015200
    W 000 00015300
    W 000 00015478
    W 000 00015500
    W 000 00015678
    W 000 00015700
    W 000 00015896
    W 000 00015900
    W 000 00015A78
    W 000 00015BD4
    W 000 00015C20
    W 000 00015D00
    W 000 00015E1E
    W 000 00015F0B
    W 000 00016000
    W 000 00016101
    W 000 0001624C
    W 000 00016300
    W 000 00016400
    W 000 0001650C
    
    W 000 00017310
    
    W 000 00016600
    W 000 00016700
    W 000 0001680C
    
    W 000 00016958
    W 000 00016A20
    W 000 00016B00
    W 000 00016C00
    W 000 00016D00
    W 000 00016E13
    
    W 000 00017700
    W 000 00018200
    W 000 00018300
    
    
    

  • Kaibo,

    This is very strange - there should be no effect from enabling the DCC module on the SYSREF outputs. Moreover, the SYSREF should be phase-stable to both of your clocks.

    I tested your configuration and programming sequence on an evaluation board in our lab, and I did not see any of this strangeness - when I apply 3.3V to the SYNC pin, I see a stable, phase-aligned SYSREF.

    I see in your programming sequence you preface the SPI data with lots of leading zeros. Are you toggling the chip select in such a way that only 24 bits are programmed? I assume this must be the case since you're getting 1GHz output, and programming wouldn't work if you were trying to program 32 bit transactions or something. You might also confirm with readback (if possible) that you are programming what you think you are programming, but again I suspect this isn't the issue and your board may not be set up for readback. It's probably simpler and quicker to check communication by just toggling the powerdown bit and observing the device powering down.

    After completing your programming sequence, try programming 0x013903 to set the output to continuous SYSREF. Does this work as expected? If yes, revert to 0x013912 and apply the SYNC trigger to generate your continuous SYSREF, then probe the voltage at the SYNC pin voltage (pin 6) and ensure that it is above the minimum VIH of 1.2V and below the VIL of 0.4V for high/low signals respectively. In theory even this shouldn't be an issue - the SYSREF_REQ function should be synchronous to the SYSREF divider, so glitch pulses should never happen.

    If even continuous SYSREF is not working as expected, this suggests there is something wrong with either your device or your board. The schematic in your post looks similar to the EVM, and I assume the layout is as well - but it might be prudent to check that you have sufficient supply current available (LDO should be up to 1.5A for this device, though steady state device current should be closer to 1A with your configuration) and that the supply voltage at the clock output power supply pins or the SYSREF power supply are receiving sufficient voltage. If you have another board, check if the issue is replicable on multiple boards.

    Regards,

    Derek Payne