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: Deterministic phase using SPI_POL to generate SYNC

Part Number: LMK04828
Other Parts Discussed in Thread: LMK61E2

I am using an LMK04828 to gernate clock and SYSREF for a 500 MSa/s ADC, with a 250 MHz clock to the ZYNQMP FPGA.

In the future I would like to be able to synchrnoise multyiple boards, but for now I am just trying to get one board working.

To allow for multiple boards I am using refclk frequency = SYSREF frequency with 0 delay mode.

For the single board use case I am using an LMK61E2 to generate a reference clock of 15.625 MHz to Clkin1, with CLKin2 connected to backplane connector for a multi board case.

My SYSREF frequency = 500MHz/32. = 15.625 = the reference frequency. I am using nested 0-delay mode.

I have 156.25 MHZ VCXO and and using the 2500 MHz internal VCO.

I have setup most of the register from the Export Hex of TICS Pro and then added some extra writes at the end for synchronisation, trying to follow the data sheet section  9.3.2.1.1

To check the phase I am using SYSREF in continuous mode, but plan change to pulser mode. For the single board tests I am triggering the pulse burst from SPI, but for a multiboard solution I will drive CLKIN0 to trigger SYSREF from the backplane connector.

I appear not to be accurately synchronising the clocks. Trying multiple attempts at running the same configuration, the phase relationship between SYSREF and the sampling clock varies.

I am trying to assert SYNC by toggling SYNC_POL, but after I negate SYNC_POL, the clock outputs appear to still be in reset until I set SYNC_DISx, which is not what I expect and earlier posts suggest that this does not gaurantee the timing of the reset across all channels. I don't understand why the outputs do not reset only while SYNC_POL=1, but actuall stay reset until SYNC_DISx=1

The full register write sequence is below:

Addr=0=0000, data=80                --- Reset stops clocks.

Addr=2=0002, data=00

Addr=256=0100, data=05

Addr=257=0101, data=55

Addr=258=0102, data=55

Addr=259=0103, data=01

Addr=260=0104, data=20

Addr=261=0105, data=00

Addr=262=0106, data=B0

Addr=263=0107, data=13

Addr=264=0108, data=05

Addr=265=0109, data=55

Addr=266=010A, data=55

Addr=267=010B, data=01

Addr=268=010C, data=20

Addr=269=010D, data=00

Addr=270=010E, data=F0

Addr=271=010F, data=13

Addr=272=0110, data=0A

Addr=273=0111, data=55

Addr=274=0112, data=55

Addr=275=0113, data=00

Addr=276=0114, data=20

Addr=277=0115, data=00

Addr=278=0116, data=F0

Addr=279=0117, data=11

Addr=280=0118, data=0A

Addr=281=0119, data=55

Addr=282=011A, data=55

Addr=283=011B, data=00

Addr=284=011C, data=20

Addr=285=011D, data=00

Addr=286=011E, data=F0

Addr=287=011F, data=11

Addr=288=0120, data=0A

Addr=289=0121, data=55

Addr=290=0122, data=55

Addr=291=0123, data=00

Addr=292=0124, data=20

Addr=293=0125, data=00

Addr=294=0126, data=F1

Addr=295=0127, data=05

Addr=296=0128, data=0A

Addr=297=0129, data=55

Addr=298=012A, data=55

Addr=299=012B, data=00

Addr=300=012C, data=20

Addr=301=012D, data=00

Addr=302=012E, data=F1

Addr=303=012F, data=05

Addr=304=0130, data=0A

Addr=305=0131, data=55

Addr=306=0132, data=55

Addr=307=0133, data=01

Addr=308=0134, data=20

Addr=309=0135, data=00

Addr=310=0136, data=B0

Addr=311=0137, data=45 CLKout12_FMT set . ClkOut12 restarts at this point, but not locked to input.

Addr=312=0138, data=00

Addr=313=0139, data=00 SYSREF_MUX=0 for basic sync functionality as manual 9.3.2.1.1 1(a)

Addr=314=013A, data=00

Addr=315=013B, data=A0

Addr=316=013C, data=00

Addr=317=013D, data=08

Addr=318=013E, data=03

Addr=319=013F, data=0D

Addr=320=0140, data=00

Addr=321=0141, data=00

Addr=322=0142, data=00

Addr=323=0143, data=91  SYNC_MODE=1, SYNC_EN=1, SYSREF_DDLY_CLR=1

Addr=324=0144, data=00 Clock Outputs stop. Removes Sync DISABLE.

Addr=325=0145, data=7F

Addr=326=0146, data=00

Addr=327=0147, data=18

Addr=328=0148, data=02

Addr=329=0149, data=02

Addr=330=014A, data=02

Addr=331=014B, data=16

Addr=332=014C, data=00

Addr=333=014D, data=00

Addr=334=014E, data=C0

Addr=335=014F, data=7F

Addr=336=0150, data=03

Addr=337=0151, data=02

Addr=338=0152, data=00

Addr=339=0153, data=00

Addr=340=0154, data=78

Addr=341=0155, data=00

Addr=342=0156, data=01

Addr=343=0157, data=00

Addr=344=0158, data=01

Addr=345=0159, data=00

Addr=346=015A, data=01

Addr=347=015B, data=D4

Addr=348=015C, data=20

Addr=349=015D, data=00

Addr=350=015E, data=00

Addr=351=015F, data=0B

Addr=352=0160, data=00

Addr=353=0161, data=02

Addr=354=0162, data=24

Addr=355=0163, data=00

Addr=356=0164, data=00

Addr=357=0165, data=10

Addr=369=0171, data=AA

Addr=370=0172, data=02

Addr=380=017C, data=15

Addr=381=017D, data=33

Addr=358=0166, data=00

Addr=359=0167, data=00

Addr=360=0168, data=10

Addr=361=0169, data=51

Addr=362=016A, data=20

Addr=363=016B, data=00

Addr=364=016C, data=00

Addr=365=016D, data=00

Addr=366=016E, data=13

Addr=371=0173, data=00

Addr=386=0182, data=00

Addr=387=0183, data=00

Addr=388=0184, data=00

Addr=389=0185, data=00

Addr=392=0188, data=00

Addr=393=0189, data=00

Addr=394=018A, data=00

Addr=395=018B, data=00

Addr=323=0143, data=B1 SYNC_MODE=1, SYNC_EN=1, SYSREF_DDLY_CLR=1, SYNC_POL=1..
                        Expect sync reset to start here.

Addr=323=0143, data=91 SYNC_MODE=1, SYNC_EN=1, SYSREF_DDLY_CLR=1, SYNC_POL=0
                        Sync removed but output does NOT start.

Addr=324=0144, data=FF  SYNC_DISx set an all divider. Output restarts.

Addr=323=0143, data=10 

Addr=313=0139, data=03  SYREF_MUX=3=Continuous, SYSREF output.

Looking at the signals as I write the SPI register

  • I discovered at least part of my problem. I was setting CLKin0_OUT_MUX=0, in some sense in prepartion for when I use this input in the future.

    However this is not allowed when usign software SYNC.

    So for now I have set CLKin0_OUT_MUX=3 to disable this input.

    This seems repeatible now. I have SYSREF reliably 235 ps AFTER DCLK12. This is probably OK for this application, though I expected to get this closer.

    I delayed SYSREF 10 cycles of 2500 MHZ, so 1 cycle of 250 MHz. This has reduced the difference to about 100 ps. 

    This is accetable as the ADC and FPGA are sampling SYSREF on teh falling edge.

    William.

  • Great to know this.

    Regards,
    Ajeet Pal