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.

DAC39RF10EVM: No output on the DCLKout ports of LMK04828b chip

Part Number: DAC39RF10EVM
Other Parts Discussed in Thread: LMX1204, DAC38J84EVM, LMK04828

Tool/software:

Hello,

I am trying to configure a DAC39RF10EVM board  connected to a ZCU102 (via an FMC+ to FMC adapter) but I am unable to get an output on the clock outputs of the LMK04828b chip. I have checked and the LMX1204 has the correct LOGICLOCK and LOGISYSREF frequency and amplitude. Interestingly, the SYSREF output (SDCLKOUT11) is working correctly.

I have tried several approaches:

- Program the system using the latest and previous DAC39RF10EVM GUI. Result: see above.

- Manually programming the chip using one of the PS SPI buses present on the SoC (shorting the pins to allow for the FMC SPI control) with the same sequence as the GUI. Result: see above.

Manually programming the chip using a PS SPI on the SoC using the registers obtained from configuring the device with TICS: Results: no output on neither DCLOCKout or SDCLOCKout.

In the past I have configured the same chip successfully on a DAC38J84EVM board just by programming the register values obtained using the dedicated GUI, so I tried that too with no luck. For this last approach I did have to change a few values since some configurations are note exposed to that GUI. 

I have attached the SPI log of created by the DAC39RF10EVM GUI as well the register map created by the TICS software.

Any help would be appreciated.


20:45:12.1597 | DAC39RF10.write[0x107, 0xbc]
20:45:15.9831 | DAC39RF10.write[0x107, 0xbc]
20:45:29.9347 | DAC39RF10.write[0x2e0, 0x0]
20:45:29.9367 | DAC39RF10.write[0x100, 0x0]
20:45:29.9387 | DAC39RF10.write[0x130, 0x9]
20:45:29.9387 | DAC39RF10.write[0x131, 0xb]
20:45:29.9387 | DAC39RF10.write[0x132, 0xf]
20:45:29.9387 | DAC39RF10.write[0x133, 0x5]
20:45:29.9387 | DAC39RF10.write[0x134, 0x3]
20:45:29.9387 | DAC39RF10.write[0x135, 0x0]
20:45:29.9387 | DAC39RF10.write[0x136, 0x1]
20:45:29.9387 | DAC39RF10.write[0x137, 0x2]
20:45:29.9387 | DAC39RF10.write[0x138, 0x7]
20:45:29.9387 | DAC39RF10.write[0x139, 0xd]
20:45:29.9387 | DAC39RF10.write[0x13a, 0xc]
20:45:29.9387 | DAC39RF10.write[0x13b, 0xe]
20:45:29.9387 | DAC39RF10.write[0x13c, 0x6]
20:45:29.9387 | DAC39RF10.write[0x13d, 0x4]
20:45:29.9387 | DAC39RF10.write[0x13e, 0xa]
20:45:29.9387 | DAC39RF10.write[0x13f, 0x8]
20:45:29.9407 | DAC39RF10.write[0x12e, 0xff]
20:45:29.9407 | DAC39RF10.write[0x12f, 0xff]
20:45:29.9427 | DAC39RF10.write[0x100, 0x1]
20:45:29.9447 | DAC39RF10.write[0x2e0, 0x1]
20:45:31.7419 | DAC39RF10.write[0x2e0, 0x0]
20:45:31.7439 | DAC39RF10.write[0x100, 0x0]
20:45:31.7459 | DAC39RF10.write[0x130, 0x9]
20:45:31.7459 | DAC39RF10.write[0x131, 0xb]
20:45:31.7459 | DAC39RF10.write[0x132, 0xf]
20:45:31.7459 | DAC39RF10.write[0x133, 0x5]
20:45:31.7459 | DAC39RF10.write[0x134, 0x3]
20:45:31.7459 | DAC39RF10.write[0x135, 0x0]
20:45:31.7459 | DAC39RF10.write[0x136, 0x1]
20:45:31.7459 | DAC39RF10.write[0x137, 0x2]
20:45:31.7459 | DAC39RF10.write[0x138, 0x7]
20:45:31.7459 | DAC39RF10.write[0x139, 0xd]
20:45:31.7459 | DAC39RF10.write[0x13a, 0xc]
20:45:31.7459 | DAC39RF10.write[0x13b, 0xe]
20:45:31.7459 | DAC39RF10.write[0x13c, 0x6]
20:45:31.7459 | DAC39RF10.write[0x13d, 0x4]
20:45:31.7459 | DAC39RF10.write[0x13e, 0xa]
20:45:31.7459 | DAC39RF10.write[0x13f, 0x8]
20:45:31.7489 | DAC39RF10.write[0x12e, 0xff]
20:45:31.7489 | DAC39RF10.write[0x12f, 0xff]
20:45:31.7509 | DAC39RF10.write[0x100, 0x1]
20:45:31.7529 | DAC39RF10.write[0x2e0, 0x1]
20:45:35.8479 | LMX1204.write[0x0, 0x1]
20:45:35.8509 | LMX1204.write[0x0, 0x0]
20:45:35.8529 | LMX1204.write[0x17, 0x2000]
20:45:35.8549 | LMX1204.write[0x17, 0x2040]
20:45:35.8569 | LMX1204.write[0x56, 0x4]
20:45:35.8589 | LMX1204.write[0x2, 0x203]
20:45:35.8609 | LMX1204.write[0x48, 0x1]
20:45:35.8629 | LMX1204.write[0x41, 0x65f0]
20:45:35.8649 | LMX1204.write[0xf, 0xb01]
20:45:35.8669 | LMX1204.write[0xf, 0xb01]
20:45:35.8689 | LMX1204.write[0x10, 0x1100]
20:45:35.8709 | LMX1204.write[0xf, 0xb81]
20:45:35.8729 | LMX1204.write[0xf, 0xb80]
20:45:35.8749 | LMX1204.write[0x48, 0x5]
20:45:35.8769 | LMK04828.write[0x16a, 0x20]
20:45:35.8799 | LMX1204.write[0x3, 0xff86]
20:45:35.8819 | LMX1204.write[0x4, 0x360f]
20:45:35.8839 | LMX1204.write[0x4, 0x361f]
20:45:35.8859 | LMX1204.write[0x4, 0x361f]
20:45:35.8879 | LMX1204.write[0x5, 0x4936]
20:45:35.8899 | LMX1204.write[0x6, 0x36dc]
20:45:35.8919 | LMX1204.write[0x3, 0xdf86]
20:45:35.8939 | LMX1204.write[0x4, 0x361d]
20:45:35.8964 | LMX1204.write[0x4, 0x361d]
20:45:35.8984 | LMX1204.write[0x4, 0x361d]
20:45:35.9004 | LMX1204.write[0x5, 0x4936]
20:45:35.9024 | LMX1204.write[0x6, 0x36dc]
20:45:35.9044 | LMX1204.write[0x3, 0x9f86]
20:45:35.9064 | LMX1204.write[0x4, 0x3619]
20:45:35.9084 | LMX1204.write[0x4, 0x3619]
20:45:35.9104 | LMX1204.write[0x5, 0x4936]
20:45:35.9124 | LMX1204.write[0x5, 0x4936]
20:45:35.9144 | LMX1204.write[0x6, 0x36dc]
20:45:35.9164 | LMX1204.write[0x3, 0x1f86]
20:45:35.9184 | LMX1204.write[0x4, 0x3611]
20:45:35.9204 | LMX1204.write[0x4, 0x3611]
20:45:35.9234 | LMX1204.write[0x5, 0x4936]
20:45:35.9254 | LMX1204.write[0x6, 0x36dc]
20:45:35.9274 | LMX1204.write[0x6, 0x36dc]
20:45:35.9294 | LMX1204.write[0x8, 0x120]
20:45:35.9314 | LMX1204.write[0x7, 0x0]
20:45:35.9334 | LMX1204.write[0x7, 0x0]
20:45:35.9354 | LMX1204.write[0x7, 0x6]
20:45:35.9374 | LMX1204.write[0x7, 0x36]
20:45:35.9394 | LMX1204.write[0x9, 0x20]
20:45:35.9414 | LMX1204.write[0x8, 0x120]
20:45:35.9434 | LMX1204.write[0x7, 0x37]
20:45:35.9454 | LMX1204.write[0x6, 0xb6dc]
20:45:35.9474 | LMX1204.write[0x8, 0x130]
20:45:35.9494 | LMK04828.write[0x0, 0x80]
20:45:35.9514 | LMK04828.write[0x0, 0x4]
20:45:35.9544 | LMK04828.write[0x13f, 0x0]
20:45:35.9564 | LMK04828.write[0x140, 0x17]
20:45:35.9584 | LMK04828.write[0x140, 0x57]
20:45:35.9604 | LMK04828.write[0x140, 0x77]
20:45:35.9624 | LMK04828.write[0x140, 0xf7]
20:45:35.9644 | LMK04828.write[0x173, 0x40]
20:45:35.9664 | LMK04828.write[0x173, 0x60]
20:45:35.9684 | LMK04828.write[0x138, 0x44]
20:45:35.9704 | LMK04828.write[0x147, 0x32]
20:45:35.9724 | LMK04828.write[0x147, 0x31]
20:45:35.9744 | LMK04828.write[0x16a, 0x60]
20:45:35.9764 | LMK04828.write[0x143, 0x11]
20:45:35.9784 | LMK04828.write[0x147, 0x30]
20:45:35.9804 | LMK04828.write[0x139, 0x4]
20:45:35.9824 | LMK04828.write[0x16a, 0x20]
20:45:35.9854 | LMK04828.write[0x143, 0x11]
20:45:35.9874 | LMK04828.write[0x143, 0x10]
20:45:35.9894 | LMK04828.write[0x139, 0x4]
20:45:35.9914 | LMK04828.write[0x140, 0xf7]
20:45:35.9934 | LMK04828.write[0x140, 0xf7]
20:45:35.9954 | LMK04828.write[0x140, 0xf7]
20:45:35.9969 | LMK04828.write[0x104, 0x20]
20:45:35.9999 | LMK04828.write[0x107, 0x10]
20:45:36.0019 | LMK04828.write[0x106, 0x78]
20:45:36.0039 | LMK04828.write[0x106, 0x70]
20:45:36.0059 | LMK04828.write[0x12c, 0x20]
20:45:36.0079 | LMK04828.write[0x12f, 0x11]
20:45:36.0099 | LMK04828.write[0x12e, 0x70]
20:45:36.0119 | LMK04828.write[0x12e, 0x70]
20:45:36.0139 | LMK04828.write[0x113, 0x2]
20:45:36.0159 | LMK04828.write[0x114, 0x20]
20:45:36.0179 | LMK04828.write[0x110, 0x48]
20:45:36.0199 | LMK04828.write[0x110, 0x68]
20:45:36.0219 | LMK04828.write[0x144, 0x4]
20:45:36.0239 | LMK04828.write[0x116, 0x71]
20:45:36.0259 | LMK04828.write[0x116, 0x71]
20:45:36.0279 | LMK04828.write[0x110, 0x61]
20:45:36.0299 | LMK04828.write[0x117, 0x1]
20:45:36.0329 | LMK04828.write[0x11b, 0x2]
20:45:36.0349 | LMK04828.write[0x11c, 0x20]
20:45:36.0369 | LMK04828.write[0x118, 0x48]
20:45:36.0389 | LMK04828.write[0x118, 0x68]
20:45:36.0409 | LMK04828.write[0x144, 0xc]
20:45:36.0429 | LMK04828.write[0x11e, 0x71]
20:45:36.0449 | LMK04828.write[0x11e, 0x71]
20:45:36.0469 | LMK04828.write[0x118, 0x61]
20:45:36.0489 | LMK04828.write[0x11f, 0x1]
20:45:36.0509 | LMK04828.write[0x12b, 0x2]
20:45:36.0529 | LMK04828.write[0x12c, 0x20]
20:45:36.0549 | LMK04828.write[0x128, 0x48]
20:45:36.0569 | LMK04828.write[0x128, 0x68]
20:45:36.0589 | LMK04828.write[0x144, 0x2c]
20:45:36.0609 | LMK04828.write[0x12e, 0x70]
20:45:36.0639 | LMK04828.write[0x12e, 0x70]
20:45:36.0659 | LMK04828.write[0x128, 0x61]
20:45:36.0679 | LMK04828.write[0x12f, 0x11]
20:45:36.8380 | DAC39RF10.write[0x2e0, 0x0]
20:45:36.8400 | DAC39RF10.write[0x100, 0x0]
20:45:36.8420 | DAC39RF10.write[0x2e0, 0x1]
20:45:36.8460 | DAC39RF10.write[0x103, 0x73]
20:45:36.8480 | DAC39RF10.write[0x2e0, 0x0]
20:45:36.8500 | DAC39RF10.write[0x100, 0x1]
20:45:36.8520 | DAC39RF10.write[0x2e0, 0x1]
20:45:36.8620 | DAC39RF10.write[0x1c2, 0x1]
20:45:36.8640 | DAC39RF10.write[0x2e0, 0x0]
20:45:36.8660 | DAC39RF10.write[0x100, 0x0]
20:45:36.8680 | DAC39RF10.write[0x2e0, 0x1]
20:45:36.8700 | DAC39RF10.write[0x105, 0x1f]
20:45:36.8720 | DAC39RF10.write[0x2e0, 0x0]
20:45:36.8740 | DAC39RF10.write[0x100, 0x1]
20:45:36.8760 | DAC39RF10.write[0x2e0, 0x1]
20:45:36.8780 | DAC39RF10.write[0x2e0, 0x0]
20:45:36.8810 | DAC39RF10.write[0x100, 0x0]
20:45:36.8940 | DAC39RF10.write[0x300, 0x0]
20:45:36.9095 | DAC39RF10.write[0x101, 0x2]
20:45:36.9255 | DAC39RF10.write[0x103, 0x63]
20:45:36.9285 | DAC39RF10.write[0x2e1, 0x5]
20:45:36.9305 | DAC39RF10.write[0x102, 0x2]
20:45:36.9325 | DAC39RF10.write[0x108, 0x10]
20:45:36.9345 | DAC39RF10.write[0x109, 0x14]
20:45:36.9365 | DAC39RF10.write[0x10a, 0x1]
20:45:36.9385 | DAC39RF10.write[0x10b, 0x0]
20:45:36.9425 | DAC39RF10.write[0x103, 0xff]
20:45:36.9575 | DAC39RF10.write[0x80, 0x80]
20:45:36.9735 | DAC39RF10.write[0x80, 0x80]
20:45:36.9765 | DAC39RF10.write[0xa0, 0x1]
20:45:36.9895 | DAC39RF10.write[0x1c2, 0x1]
20:45:36.9925 | DAC39RF10.write[0x253, 0x1]
20:45:36.9945 | DAC39RF10.write[0x100, 0x1]
20:45:37.0970 | DAC39RF10.write[0x2e0, 0x1]
20:45:37.0990 | DAC39RF10.write[0x253, 0x0]
20:45:37.2775 | DAC39RF10.write[0x107, 0xbc]
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	0x010420
R261	0x010500
R262	0x0106F9
R263	0x010755
R264	0x01080C
R265	0x010955
R266	0x010A55
R267	0x010B00
R268	0x010C00
R269	0x010D00
R270	0x010EF9
R271	0x010F05
R272	0x011001
R273	0x011155
R274	0x011255
R275	0x011302
R276	0x011400
R277	0x011500
R278	0x0116F3
R279	0x011701
R280	0x011801
R281	0x011955
R282	0x011A55
R283	0x011B02
R284	0x011C20
R285	0x011D00
R286	0x011EF1
R287	0x011F11
R288	0x012008
R289	0x012155
R290	0x012255
R291	0x012300
R292	0x012400
R293	0x012500
R294	0x0126F9
R295	0x012700
R296	0x012801
R297	0x012955
R298	0x012A55
R299	0x012B02
R300	0x012C20
R301	0x012D00
R302	0x012EF0
R303	0x012F11
R304	0x013006
R305	0x013155
R306	0x013255
R307	0x013300
R308	0x013400
R309	0x013500
R310	0x0136F9
R311	0x013733
R312	0x013841
R313	0x013904
R314	0x013A00
R315	0x013B0A
R316	0x013C00
R317	0x013D08
R318	0x013E03
R319	0x013F00
R320	0x0140FF
R321	0x014100
R322	0x014200
R323	0x014301
R324	0x014400
R325	0x01457F
R326	0x014618
R327	0x014730
R328	0x014833
R329	0x014902
R330	0x014A02
R331	0x014B02
R332	0x014C00
R333	0x014D00
R334	0x014EC0
R335	0x014F7F
R336	0x015000
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	0x016801
R361	0x016959
R362	0x016A20
R363	0x016B00
R364	0x016C00
R365	0x016D00
R366	0x016E13
R371	0x017360
R386	0x018200
R387	0x018300
R388	0x018408
R389	0x018500
R392	0x018800
R393	0x018900
R394	0x018A00
R395	0x018B00
R8189	0x1FFD00
R8190	0x1FFE00
R8191	0x1FFF53

  • Hey Juan, 

    Could you provide some information on your setup? I would like to try this on my setup. 

    Regards, 

    Matt

  • Hello Matt,

    Yes. I have a ZCU102 and a DAC39RF10EVM connected to it using a FMC to FMC+ adapter. I am powering the EVM board using the FMC connector. I am running Petalinux on the ZCU which I am using to run the code that sends the SPI commands using the included linux drivers. I have confirmed with an ILA and a scope the SPI signals are indeed getting to the EVM board.

    I am inputing a 10.24GHz clock from an external synthesizer (checked good). I want to generate a 160MHz logiclock and 16MHz logisysref. The LMK is being used as a simple pass through buffer (no VCO or PLL enabled). This is,  muxes are configured so that clkin0 is passed ditectly as sysref and clk1 as the output clock.

    Interestingly,  the ZCU does not boot if the DAC board is connected and  power switch set to external power . The chips do not reply to SPI commands if the board is connected and power switch set to FMC. The only way I get the system to do something is if I unplug the DAC board, let the ZCU boot, and then connect the DAC board. See my other posts. 

    And last but not least, to reiterate: using the GUI (or emulating the commands from the GUI), I get the LMX correctly programmed,  but get no output from the DCLOCKout ports, just the SDCLOCKout. Programming the registers configured using TICS with the sequence from the datasheet gives no outputs whatsoever. 

    Let me know if you want any additional details.

  • Juan, 
    When I import your .txt file I see some of the dividers are enabled but the frequency plan isn't what I expect. 
    If possible can you please upload a .tcs file instead? 

    File -> Save

    Best regards, 

    Vicente 

  • Hello Vicente,

    Thank you for looking into this. Here are the files for both, the LMX and LMK, just in case.

    Juan

    LMX_Config.tcsLMK_Config.tcs 

  • Juan, 

    Let me try loading the .tcs. file. 

    In parallel, Can you also upload a clock tree/block diagram? 
    i want to ensure I understand how these are interfacing. 

    Which is the device not producing the clock? The LMK04828 correct? 

    Best regards, 

    Vicente 

  • Hello Vincent,

    I am using the DAC39RF10EVM board. Here is a link to the block diagram/schematic:

    /cfs-file/__key/communityserver-discussions-components-files/73/DAC39RF10-EVM_5F00_RevA2_2800_001_29005F00_Sch_5F00_2023_2D00_02_2D00_21.pdf

    If you need something different,  it will take me a little bit longer to draw.

    And yes, I am missing all the outputs from the LMK04828.

    Juan

  • Juan, 
    GIven this is an odd divide value we know DCC correction enabled, 

    Please try this version of config and let me know if this produces expected buffered out 160MHz LVDS output. 

    Best regards, 

    Vicente

     2604.LMK_Config.tcs

  • Hello Vincente,

    Unfortunately, that did not fix the issue. I still see no output from the DCLK pins. We have been debugging for a while and are beginning to wonder if it is an issue with the hardware.

    For example, if we use the datasheet recommended programming sequence for the LMX1204 with the registers from obtained from TICS Pro, we get a valid LOGICLOCK output but no LOGISYSREF. If we use the same sequence of commands sent by the DAC39RF10EVM GUI (which, in the latest version of the GUI does NOT match the datasheet) then we do get the expected cock and sysref out from the LMX1204. 

    I have attached the current GUI version output (V3.x.x) and the old one (V2.x.x).

    Juan

    20:16:02.8104 | DAC39RF10.write[0x107, 0x8c]
    20:16:15.0193 | LMX1204.write[0x0, 0x1]
    20:16:15.0223 | LMX1204.write[0x0, 0x0]
    20:16:15.0243 | LMX1204.write[0x17, 0x2000]
    20:16:15.0263 | LMX1204.write[0x17, 0x2040]
    20:16:15.0283 | LMX1204.write[0x56, 0x4]
    20:16:15.0303 | LMX1204.write[0x2, 0x203]
    20:16:15.0323 | LMX1204.write[0x48, 0x1]
    20:16:15.0343 | LMX1204.write[0x41, 0x65f0]
    20:16:15.0363 | LMX1204.write[0xf, 0xb01]
    20:16:15.0383 | LMX1204.write[0xf, 0xb01]
    20:16:15.0403 | LMX1204.write[0x10, 0x1100]
    20:16:15.0423 | LMX1204.write[0xf, 0xb81]
    20:16:15.0443 | LMX1204.write[0xf, 0xb80]
    20:16:15.0463 | LMX1204.write[0x48, 0x5]
    20:16:15.0493 | LMK04828.write[0x16a, 0x20]
    20:16:15.0513 | LMX1204.write[0x3, 0xff86]
    20:16:15.0533 | LMX1204.write[0x4, 0x360f]
    20:16:15.0553 | LMX1204.write[0x4, 0x361f]
    20:16:15.0573 | LMX1204.write[0x4, 0x361f]
    20:16:15.0593 | LMX1204.write[0x5, 0x4936]
    20:16:15.0613 | LMX1204.write[0x6, 0x36dc]
    20:16:15.0633 | LMX1204.write[0x3, 0xdf86]
    20:16:15.0653 | LMX1204.write[0x4, 0x361d]
    20:16:15.0673 | LMX1204.write[0x4, 0x361d]
    20:16:15.0703 | LMX1204.write[0x4, 0x361d]
    20:16:15.0723 | LMX1204.write[0x5, 0x4936]
    20:16:15.0743 | LMX1204.write[0x6, 0x36dc]
    20:16:15.0763 | LMX1204.write[0x3, 0x9f86]
    20:16:15.0783 | LMX1204.write[0x4, 0x3619]
    20:16:15.0803 | LMX1204.write[0x4, 0x3619]
    20:16:15.0823 | LMX1204.write[0x5, 0x4936]
    20:16:15.0843 | LMX1204.write[0x5, 0x4936]
    20:16:15.0863 | LMX1204.write[0x6, 0x36dc]
    20:16:15.0883 | LMX1204.write[0x3, 0x1f86]
    20:16:15.0903 | LMX1204.write[0x4, 0x3611]
    20:16:15.0923 | LMX1204.write[0x4, 0x3611]
    20:16:15.0943 | LMX1204.write[0x5, 0x4936]
    20:16:15.0973 | LMX1204.write[0x6, 0x36dc]
    20:16:15.0993 | LMX1204.write[0x6, 0x36dc]
    20:16:15.1013 | LMX1204.write[0x8, 0x120]
    20:16:15.1033 | LMX1204.write[0x7, 0x0]
    20:16:15.1053 | LMX1204.write[0x7, 0x0]
    20:16:15.1073 | LMX1204.write[0x7, 0x6]
    20:16:15.1093 | LMX1204.write[0x7, 0x36]
    20:16:15.1113 | LMX1204.write[0x9, 0x20]
    20:16:15.1138 | LMX1204.write[0x8, 0x120]
    20:16:15.1158 | LMX1204.write[0x7, 0x37]
    20:16:15.1178 | LMX1204.write[0x6, 0xb6dc]
    20:16:15.1198 | LMX1204.write[0x8, 0x130]
    20:16:15.1218 | LMK04828.write[0x0, 0x80]
    20:16:15.1238 | LMK04828.write[0x0, 0x4]
    20:16:15.1258 | LMK04828.write[0x13f, 0x0]
    20:16:15.1278 | LMK04828.write[0x140, 0x17]
    20:16:15.1298 | LMK04828.write[0x140, 0x57]
    20:16:15.1318 | LMK04828.write[0x140, 0x77]
    20:16:15.1348 | LMK04828.write[0x140, 0xf7]
    20:16:15.1368 | LMK04828.write[0x173, 0x40]
    20:16:15.1388 | LMK04828.write[0x173, 0x60]
    20:16:15.1408 | LMK04828.write[0x138, 0x44]
    20:16:15.1428 | LMK04828.write[0x147, 0x32]
    20:16:15.1448 | LMK04828.write[0x147, 0x31]
    20:16:15.1468 | LMK04828.write[0x16a, 0x60]
    20:16:15.1488 | LMK04828.write[0x143, 0x11]
    20:16:15.1508 | LMK04828.write[0x147, 0x30]
    20:16:15.1528 | LMK04828.write[0x139, 0x4]
    20:16:15.1548 | LMK04828.write[0x16a, 0x20]
    20:16:15.1568 | LMK04828.write[0x143, 0x11]
    20:16:15.1588 | LMK04828.write[0x143, 0x10]
    20:16:15.1618 | LMK04828.write[0x139, 0x4]
    20:16:15.1638 | LMK04828.write[0x140, 0xf7]
    20:16:15.1658 | LMK04828.write[0x140, 0xf7]
    20:16:15.1678 | LMK04828.write[0x140, 0xf7]
    20:16:15.1698 | LMK04828.write[0x104, 0x20]
    20:16:15.1718 | LMK04828.write[0x107, 0x10]
    20:16:15.1738 | LMK04828.write[0x106, 0x78]
    20:16:15.1758 | LMK04828.write[0x106, 0x70]
    20:16:15.1778 | LMK04828.write[0x12c, 0x20]
    20:16:15.1798 | LMK04828.write[0x12f, 0x11]
    20:16:15.1818 | LMK04828.write[0x12e, 0x70]
    20:16:15.1848 | LMK04828.write[0x12e, 0x70]
    20:16:15.1868 | LMK04828.write[0x113, 0x2]
    20:16:15.1888 | LMK04828.write[0x114, 0x20]
    20:16:15.1908 | LMK04828.write[0x110, 0x48]
    20:16:15.1928 | LMK04828.write[0x110, 0x68]
    20:16:15.1948 | LMK04828.write[0x144, 0x4]
    20:16:15.1968 | LMK04828.write[0x116, 0x71]
    20:16:15.1988 | LMK04828.write[0x116, 0x71]
    20:16:15.2008 | LMK04828.write[0x110, 0x61]
    20:16:15.2028 | LMK04828.write[0x117, 0x1]
    20:16:15.2048 | LMK04828.write[0x11b, 0x2]
    20:16:15.2078 | LMK04828.write[0x11c, 0x20]
    20:16:15.2098 | LMK04828.write[0x118, 0x48]
    20:16:15.2118 | LMK04828.write[0x118, 0x68]
    20:16:15.2133 | LMK04828.write[0x144, 0xc]
    20:16:15.2153 | LMK04828.write[0x11e, 0x71]
    20:16:15.2173 | LMK04828.write[0x11e, 0x71]
    20:16:15.2203 | LMK04828.write[0x118, 0x61]
    20:16:15.2223 | LMK04828.write[0x11f, 0x1]
    20:16:15.2243 | LMK04828.write[0x12b, 0x2]
    20:16:15.2263 | LMK04828.write[0x12c, 0x20]
    20:16:15.2283 | LMK04828.write[0x128, 0x48]
    20:16:15.2303 | LMK04828.write[0x128, 0x68]
    20:16:15.2323 | LMK04828.write[0x144, 0x2c]
    20:16:15.2343 | LMK04828.write[0x12e, 0x70]
    20:16:15.2363 | LMK04828.write[0x12e, 0x70]
    20:16:15.2383 | LMK04828.write[0x128, 0x61]
    20:16:15.2403 | LMK04828.write[0x12f, 0x11]
    20:16:16.6294 | DAC39RF10.write[0x2e0, 0x0]
    20:16:16.6314 | DAC39RF10.write[0x100, 0x0]
    20:16:16.6334 | DAC39RF10.write[0x2e0, 0x1]
    20:16:16.6504 | DAC39RF10.write[0x103, 0x63]
    20:16:16.6524 | DAC39RF10.write[0x2e0, 0x0]
    20:16:16.6544 | DAC39RF10.write[0x100, 0x1]
    20:16:16.6564 | DAC39RF10.write[0x2e0, 0x1]
    20:16:16.6664 | DAC39RF10.write[0x1c2, 0x1]
    20:16:16.6684 | DAC39RF10.write[0x2e0, 0x0]
    20:16:16.6704 | DAC39RF10.write[0x100, 0x0]
    20:16:16.6724 | DAC39RF10.write[0x2e0, 0x1]
    20:16:16.6744 | DAC39RF10.write[0x105, 0x1f]
    20:16:16.6764 | DAC39RF10.write[0x2e0, 0x0]
    20:16:16.6784 | DAC39RF10.write[0x100, 0x1]
    20:16:16.6804 | DAC39RF10.write[0x2e0, 0x1]
    20:16:16.6824 | DAC39RF10.write[0x2e0, 0x0]
    20:16:16.6854 | DAC39RF10.write[0x100, 0x0]
    20:16:16.6984 | DAC39RF10.write[0x300, 0x0]
    20:16:16.7139 | DAC39RF10.write[0x101, 0x2]
    20:16:16.7299 | DAC39RF10.write[0x103, 0x63]
    20:16:16.7319 | DAC39RF10.write[0x2e1, 0x5]
    20:16:16.7339 | DAC39RF10.write[0x102, 0x2]
    20:16:16.7369 | DAC39RF10.write[0x108, 0x10]
    20:16:16.7389 | DAC39RF10.write[0x109, 0x14]
    20:16:16.7409 | DAC39RF10.write[0x10a, 0x1]
    20:16:16.7429 | DAC39RF10.write[0x10b, 0x0]
    20:16:16.7619 | DAC39RF10.write[0x103, 0x63]
    20:16:16.7779 | DAC39RF10.write[0x80, 0x80]
    20:16:16.7939 | DAC39RF10.write[0x80, 0x80]
    20:16:16.7959 | DAC39RF10.write[0xa0, 0x1]
    20:16:16.8099 | DAC39RF10.write[0x1c2, 0x1]
    20:16:16.8119 | DAC39RF10.write[0x253, 0x1]
    20:16:16.8145 | DAC39RF10.write[0x100, 0x1]
    20:16:16.9170 | DAC39RF10.write[0x2e0, 0x1]
    20:16:16.9185 | DAC39RF10.write[0x253, 0x0]
    20:16:17.0980 | DAC39RF10.write[0x107, 0x9c]
    # Loaded File: C:\Program Files\Texas Instruments\DAC39RF10 EVM GUI\supportFiles\config\LMX1204.cfg
    LMX1204.write(0x00,0x0001)
    LMX1204.write(0x5A,0x0000)
    LMX1204.write(0x56,0x0004)
    LMX1204.write(0x4F,0x0005)
    LMX1204.write(0x4B,0x0003)
    LMX1204.write(0x48,0x0004)
    LMX1204.write(0x43,0x51CB)
    LMX1204.write(0x41,0x65F0)
    LMX1204.write(0x22,0x04C0)
    LMX1204.write(0x21,0x0000)
    LMX1204.write(0x1D,0x05FF)
    LMX1204.write(0x1C,0x0A08)
    LMX1204.write(0x19,0x0119)
    LMX1204.write(0x18,0x0001)
    LMX1204.write(0x17,0xE040)
    LMX1204.write(0x16,0x0478)
    LMX1204.write(0x15,0x0EF8)
    LMX1204.write(0x14,0x0EF8)
    LMX1204.write(0x13,0x0EF8)
    LMX1204.write(0x12,0x0EF8)
    LMX1204.write(0x11,0x0074)
    LMX1204.write(0x10,0x1200)
    LMX1204.write(0x0F,0x0B80)
    LMX1204.write(0x0E,0x0002)
    LMX1204.write(0x0D,0x0003)
    LMX1204.write(0x0C,0x0000)
    LMX1204.write(0x0B,0x0000)
    LMX1204.write(0x09,0x0010)
    LMX1204.write(0x08,0x0130)
    LMX1204.write(0x07,0x0001)
    LMX1204.write(0x06,0xC924)
    LMX1204.write(0x05,0x493F)
    LMX1204.write(0x04,0x3F11)
    LMX1204.write(0x03,0x1F87)
    LMX1204.write(0x02,0x0083)
    LMX1204.write(0x00,0x0000)
    # Loaded File: C:\Program Files\Texas Instruments\DAC39RF10 EVM GUI\supportFiles\config\LMK04828 8b10b.cfg
    LMK04828.write(0x000,0x80)
    LMK04828.write(0x000,0x00)
    LMK04828.write(0x002,0x00)
    LMK04828.write(0x100,0x01)
    LMK04828.write(0x104,0x20)
    LMK04828.write(0x106,0xF8)
    LMK04828.write(0x107,0x00)
    LMK04828.write(0x108,0x01)
    LMK04828.write(0x10E,0xF9)
    LMK04828.write(0x10F,0x00)
    LMK04828.write(0x110,0x02)
    LMK04828.write(0x113,0x00)
    LMK04828.write(0x116,0xF1)
    LMK04828.write(0x117,0x05)
    LMK04828.write(0x118,0x02)
    LMK04828.write(0x11B,0x00)
    LMK04828.write(0x11E,0xF1)
    LMK04828.write(0x11F,0x05)
    LMK04828.write(0x120,0x01)
    LMK04828.write(0x123,0x02)
    LMK04828.write(0x124,0x22)
    LMK04828.write(0x126,0xF9)
    LMK04828.write(0x127,0x00)
    LMK04828.write(0x128,0x01)
    LMK04828.write(0x129,0x55)
    LMK04828.write(0x12B,0x02)
    LMK04828.write(0x12C,0x20)
    LMK04828.write(0x12D,0x00)
    LMK04828.write(0x12E,0xF0)
    LMK04828.write(0x12F,0x50)
    LMK04828.write(0x130,0x01)
    LMK04828.write(0x131,0x55)
    LMK04828.write(0x133,0x02)
    LMK04828.write(0x134,0x22)
    LMK04828.write(0x135,0x00)
    LMK04828.write(0x136,0xF0)
    LMK04828.write(0x137,0x01)
    LMK04828.write(0x138,0x45)
    LMK04828.write(0x139,0x00)
    LMK04828.write(0x13A,0x00)
    LMK04828.write(0x13B,0x20)
    LMK04828.write(0x13C,0x00)
    LMK04828.write(0x13D,0x08)
    LMK04828.write(0x13E,0x03)
    LMK04828.write(0x13F,0x00)
    LMK04828.write(0x140,0x07)
    LMK04828.write(0x141,0x00)
    LMK04828.write(0x142,0x08)
    LMK04828.write(0x143,0x00)
    LMK04828.write(0x144,0x87)
    LMK04828.write(0x145,0x00)
    LMK04828.write(0x146,0x18)
    LMK04828.write(0x147,0x00)
    LMK04828.write(0x148,0x33)
    LMK04828.write(0x149,0x02)
    LMK04828.write(0x14A,0x02)
    LMK04828.write(0x14B,0x02)
    LMK04828.write(0x14C,0x00)
    LMK04828.write(0x14D,0x00)
    LMK04828.write(0x14E,0x00)
    LMK04828.write(0x14F,0x7F)
    LMK04828.write(0x150,0x01)
    LMK04828.write(0x151,0x02)
    LMK04828.write(0x152,0x00)
    LMK04828.write(0x153,0x00)
    LMK04828.write(0x154,0x0C)
    LMK04828.write(0x155,0x00)
    LMK04828.write(0x156,0x0C)
    LMK04828.write(0x157,0x00)
    LMK04828.write(0x158,0x78)
    LMK04828.write(0x159,0x00)
    LMK04828.write(0x15A,0x78)
    LMK04828.write(0x15B,0xD4)
    LMK04828.write(0x15C,0x20)
    LMK04828.write(0x15D,0x00)
    LMK04828.write(0x15E,0x00)
    LMK04828.write(0x15F,0x0B)
    LMK04828.write(0x160,0x00)
    LMK04828.write(0x161,0x02)
    LMK04828.write(0x162,0x44)
    LMK04828.write(0x163,0x00)
    LMK04828.write(0x164,0x00)
    LMK04828.write(0x165,0x0C)
    LMK04828.write(0x171,0xAA)
    LMK04828.write(0x172,0x02)
    LMK04828.write(0x17C,0x15)
    LMK04828.write(0x17D,0x33)
    LMK04828.write(0x166,0x00)
    LMK04828.write(0x167,0x00)
    LMK04828.write(0x168,0x01)
    LMK04828.write(0x169,0x59)
    LMK04828.write(0x16A,0x20)
    LMK04828.write(0x16B,0x00)
    LMK04828.write(0x16C,0x00)
    LMK04828.write(0x16D,0x00)
    LMK04828.write(0x16E,0x04)
    LMK04828.write(0x173,0x60)
    LMK04828.write(0x139,0x00)
    LMK04828.write(0x143,0x11)
    LMK04828.write(0x140,0x00)
    LMK04828.write(0x144,0x74)
    LMK04828.write(0x143,0x11)
    LMK04828.write(0x143,0x31)
    LMK04828.write(0x143,0x11)
    LMK04828.write(0x144,0xFF)
    LMK04828.write(0x139,0x03)
    LMK04828.write(0x14A,0x06)
    LMK04828.write(0x147,0x00)
    LMK04828.write(0x139,0x00)
    LMK04828.write(0x143,0x10)
    LMK04828.write(0x140,0xFF)
    LMK04828.write(0x11C,0x22)
    LMK04828.write(0x11F,0x11)
    LMK04828.write(0x11E,0xF0)
    LMX1204.write(0x09,0x0010)
    LMX1204.write(0x10,0x1100)
    DAC39RF10.write(0x0000,0x80)
    time.sleep(0.1)
    DAC39RF10.write(0x0101,0x02)
    DAC39RF10.write(0x0102,0x04)
    DAC39RF10.write(0x0103,0x03)
    DAC39RF10.write(0x0108,0x20)
    DAC39RF10.write(0x0109,0x14)
    DAC39RF10.write(0x010A,0x00)
    DAC39RF10.write(0x010B,0x01)
    DAC39RF10.write(0x0103,0x23)
    DAC39RF10.write(0x0080,0x80)
    DAC39RF10.write(0x0103,0x21)
    DAC39RF10.write(0x0103,0x21)
    DAC39RF10.write(0x0105,0x1F)
    DAC39RF10.write(0x0106,0x1F)
    DAC39RF10.write(0x01C2,0x01)
    DAC39RF10.write(0x02E1,0x05)
    DAC39RF10.write(0x02E3,0x01)
    DAC39RF10.write(0x02E4,0x11)
    DAC39RF10.write(0x02E8,0x00)
    DAC39RF10.write(0x0723,0x1F)
    DAC39RF10.write(0x0724,0x0F)
    DAC39RF10.write(0x0725,0x1F)
    DAC39RF10.write(0x0726,0x0F)
    DAC39RF10.write(0x072E,0x14)
    DAC39RF10.write(0x072F,0x14)
    DAC39RF10.write(0x0739,0x14)
    DAC39RF10.write(0x0100,0x01)
    DAC39RF10.write(0x02E0,0x01)
    
    

  • Juan, 
    which GUI specifically are you talking about? TICSpro? 
    I unfamiliar with the DACS and their programming GUI. 

    Here is the correct programming procedure for LMX1204. 


    Best regards, 

    Vicente 

  • Hello Vincente,

    Yes, that is the programming sequence I am using that only ouputs the logiclock (no sysref).

    The GUI I am referring to can be found on the TI page for the DAC39RF10EVM board.

    I assume it would be perfectly valid to just write all the registers givem by TICS pro in descending order, correct?

    Juan

  • Hi Juan, 

    I am the AE for the CTS (clock and timing) team - any questions related to the DAC GUI will have to answered by the DAC team. 
    That is correct. You can follow TICSpro. You can export register map for use with your SPI controller. 

    Best regards, 

    Vicente 

  • Hello Vincente,

    I see. I bring this up in case it is related and helps debug what is happening.  I have a simple C program that interfaces with the PS SPI bus on the Zynq US+ part that talks with the DAC board. This is the output:

    Line 1 OK: addr 0x5A ← 0x0000
    Line 2 OK: addr 0x56 ← 0x0004
    Line 3: verify failed at address 0x4F – wrote 0x0005, read 0x0104
    Line 4: verify failed at address 0x4C – wrote 0x0000, read 0x0321
    Line 5: verify failed at address 0x4B – wrote 0x0003, read 0xE713
    Line 6 OK: addr 0x48 ← 0x0000
    Line 7 OK: addr 0x43 ← 0x51CB
    Line 8: verify failed at address 0x41 – wrote 0x6410, read 0x45F0
    Line 9 OK: addr 0x22 ← 0x0005
    Line 10 OK: addr 0x21 ← 0x6666
    Line 11: verify failed at address 0x1D – wrote 0x05FF, read 0x0500
    Line 12 OK: addr 0x1C ← 0x0A08
    Line 13: verify failed at address 0x19 – wrote 0x0219, read 0x0201
    Line 14: verify failed at address 0x18 – wrote 0x0000, read 0x0FFE
    Line 15 OK: addr 0x17 ← 0x6040
    Line 16 OK: addr 0x16 ← 0x0878
    Line 17 OK: addr 0x15 ← 0x0EF8
    Line 18 OK: addr 0x14 ← 0x0EF8
    Line 19 OK: addr 0x13 ← 0x0EF8
    Line 20 OK: addr 0x12 ← 0x0EF8
    Line 21 OK: addr 0x11 ← 0x0074
    Line 22: verify failed at address 0x10 – wrote 0x10A0, read 0x109E
    Line 23 OK: addr 0x0F ← 0x0B80
    Line 24 OK: addr 0x0E ← 0x0000
    Line 25 OK: addr 0x0D ← 0x0000
    Line 26: verify failed at address 0x0C – wrote 0x0000, read 0xAC77
    Line 27: verify failed at address 0x0B – wrote 0x0000, read 0xDFFB
    Line 28: verify failed at address 0x09 – wrote 0x0010, read 0x000E
    Line 29 OK: addr 0x08 ← 0x0130
    Line 30 OK: addr 0x07 ← 0x0181
    Line 31 OK: addr 0x06 ← 0xC924
    Line 32 OK: addr 0x05 ← 0x4936
    Line 33 OK: addr 0x04 ← 0x3311
    Line 34 OK: addr 0x03 ← 0x1F87
    Line 35 OK: addr 0x02 ← 0x0203
    Line 36 OK: addr 0x00 ← 0x0000

    Note the registers are written in the order specified by the programming frequency. I do the reset and the SPI readback configuration before I open the hex file with the register config and write. I do this so I can see the readback value.

    Note some of the values read back do not match the value I wrote from the file.

    I will create another post to address the difference in the programming sequence of the datasheet and the GUI.

    Juan