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.
Hi,
I'm following onto this post here: https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1219876/lmk04832-help-getting-synchronized-clock-outputs-in-multi-lmk04832-setup/4606427?tisearch=e2e-sitesearch&keymatch=%20user%3A532781#4606427.
To summarize, I have two LMK04832s in zero-delay mode with a common 6MHz reference and I have 132MHz and 6MHz (SYSREF) outputs. I need the 132MHz and 6MHz to have predictable/repeatable phases after programming across the two LMKs, with all 6MHz outputs being in phase and all 132MHz outputs in phase. Note I unfortunately only have visibility to CLK_OUT3 on the LMKs which I can configure to the 132M or 6M. I've attached my HexRegisters.txt file.
R0 (INIT) 0x000090 R0 0x000010 R2 0x000200 R3 0x000306 R4 0x000463 R5 0x0005D1 R6 0x000670 R12 0x000C51 R13 0x000D04 R256 0x010018 R257 0x01010A R258 0x010280 R259 0x010340 R260 0x010410 R261 0x010500 R262 0x010601 R263 0x010700 R264 0x010818 R265 0x01090A R266 0x010A00 R267 0x010B40 R268 0x010C10 R269 0x010D00 R270 0x010E01 R271 0x010F10 R272 0x011018 R273 0x01110A R274 0x011280 R275 0x011340 R276 0x011410 R277 0x011500 R278 0x011601 R279 0x011700 R280 0x011818 R281 0x01190A R282 0x011A00 R283 0x011B40 R284 0x011C20 R285 0x011D00 R286 0x011E01 R287 0x011F10 R288 0x012018 R289 0x01210A R290 0x012200 R291 0x012340 R292 0x012410 R293 0x012500 R294 0x012601 R295 0x012701 R296 0x012818 R297 0x01290A R298 0x012A00 R299 0x012B40 R300 0x012C10 R301 0x012D00 R302 0x012E01 R303 0x012F01 R304 0x013018 R305 0x01310A R306 0x013200 R307 0x013340 R308 0x013420 R309 0x013500 R310 0x013601 R311 0x013711 R312 0x013825 R313 0x013903 R314 0x013A02 R315 0x013B10 R316 0x013C00 R317 0x013D08 R318 0x013E01 R319 0x013F0D R320 0x014001 R321 0x014100 R322 0x014200 R323 0x014311 R324 0x0144FF R325 0x014510 R326 0x014618 R327 0x01471A R328 0x014802 R329 0x014942 R330 0x014A02 R331 0x014B06 R332 0x014C00 R333 0x014D00 R334 0x014EC0 R335 0x014F7F R336 0x015000 R337 0x015102 R338 0x015200 R339 0x015300 R340 0x015405 R341 0x015500 R342 0x015601 R343 0x015700 R344 0x01580A R345 0x015900 R346 0x015A01 R347 0x015BD4 R348 0x015C20 R349 0x015D00 R350 0x015E1E R351 0x015F1B R352 0x016000 R353 0x016119 R354 0x01624D R355 0x016300 R356 0x016400 R357 0x01650C R361 0x016958 R362 0x016A20 R363 0x016B00 R364 0x016C00 R365 0x016D00 R366 0x016E3B R371 0x017310 R375 0x017700 R386 0x018200 R387 0x018300 R358 0x016600 R359 0x016700 R360 0x0168C6 R1365 0x055500
I've been able to get the 132MHz outputs synced iff I have SYNC_DISSYSREF set. If SYNC_DISSYSREF is set (with all DCLKX_Y_PD clear) I can toggle SYNC_POL and the 132MHz clocks are aligned. I am using reclocked sync like Derek Payne suggested to achieve this.
However, I'm not confident the 6MHz outputs are aligned and I'm wondering if any of the following are related:
Any help in what I could be missing would be appreciated. I am very close to ultimately having two ADCs synchronized, but they are always a few degrees off (and not just a relative offset) in measuring phase of an input tone.
Thanks,
Nick
With SYNC_DISSYSREF set, you are preventing the SYSREF divider from being reset when the SYNC event is triggered. This is what you want for a configuration where you have a common 6MHz reference being distributed and the SYSREF divider is fed back in zero-delay mode. Because you have R=1 and N=1 at PLL1, this should guarantee a deterministic, repeatable phase relationship between the reference input and the SYSREF. You have the same divider values and digital delay values on all 132MHz clocks and on all 6MHz SYSREFs, they are using the same formats, etc. At least this much looks unobjectionably correct.
Am I correct in understanding that "not just a relative offset" means the measurement of the phase error is slightly different for each SYNC (potentially by a random amount), but nominally close to correct? The suggestions below assume this is what you mean, I'll revisit if you meant something else.
I'd also like to know what input tone you're trying to measure with the ADC, so I can quantify what "a few degrees" error is in absolute terms - for instance, if you're measuring a 10MHz tone, a one-degree variation is around 280ps, so even one degree of error could constitute setup issues; but if you're measuring a 3GHz tone, now a one-degree variation is less than 1ps, which is getting into difficult-to-debug device architecture issues. It would further be helpful to know what level of accuracy you are expecting.
For now, here's some sources of skew that can show up between devices:
Thanks for your extremely detailed response Derek. After taking your suggestions and digging further into it, it's looking more like the clocks might be all in phase between our LMKs and it's not our actual problem. Suggestions that helped include:
We are working on a multi Xilinx RFSoC system where we are trying to get the two sets of ADCs in the chips to come up at deterministic phases relative to each other. We have the LMK feeding an LMX02820 to generate a high frequency 2112MHz for ADC sampling. We are currently seeing up to 200ps in phase variance when we reprogram the LMK04832 (or cycle power) and rerun all the Xilinx sync stuff and I was initially thinking it was the clocking, but now I'm leaning less this way. Interestingly, I can reprogram the LMXs and the phase relation between the two RFSoCs doesn't change.
I'm now back to digging into the RFSoC. Thanks for your help with this.