<mtrbot-ml>
[mattermost] <hartytp> You're just relying on the fact that the board delays always place the SYSREF edges in the final SERDES bin (without any tuning to ensure this)?
<mtrbot-ml>
[mattermost] <sb10q> No
<mtrbot-ml>
[mattermost] <sb10q> There is tuning, and then the tuned value is stored in flash and later validated at every restart
<mtrbot-ml>
[mattermost] <sb10q> At the FPGA side, the serdes is only there for s/h validation. A normal register is sufficient if there's no validation
<mtrbot-ml>
[mattermost] <hartytp> I see, the tuning happens in `sysref_auto_align`. I haven't understood the program control in satman, but doesn't the auto_align need to happen before rtio_align. But, from the code it looks to me like things happen the other way around (at least, rtio_align is higher up in the function code)
proteus-guy has joined #m-labs
<mtrbot-ml>
[mattermost] <hartytp> also, it looks like the SysrefSampler is on the AMC FPGA, but the S/H tuning uses the DDMTD core on the RTM FPGA. So, how are you ensuring S/H is met at the AMC with that tuning?
<mtrbot-ml>
[mattermost] <hartytp> (I'm probably missing something, but just haven't understood the logic yet)
ohsix has quit [Ping timeout: 246 seconds]
<mtrbot-ml>
[mattermost] <sb10q> both RTM and AMC FPGAs are clocked from the same source
<mtrbot-ml>
[mattermost] <sb10q> the target DDMTD value on the RTM that meets S/H on the AMC is determined and then fixed and stored in flash
<mtrbot-ml>
[mattermost] <hartytp> right, thanks. I see that's how measure_sysref_sh_limits works
<mtrbot-ml>
[mattermost] <hartytp> in satman/main is it guaranteed that sysref_rtio_align will always be called after sysref_rtio_auto_align
<mtrbot-ml>
[mattermost] <sb10q> sysref_rtio_align does require sysref_rtio_auto_align to have been called before
<mtrbot-ml>
[mattermost] <sb10q> and yes, it is only called when the TSC is reloaded, to move the SYSREF phase by integer multiples of the RTIO clock period
<mtrbot-ml>
[mattermost] <sb10q> if satman receives a TSC reload event, it is after the link has been established and sysref_rtio_auto_align called
<mtrbot-ml>
[mattermost] <hartytp> okay, that makes sense, thanks.
<mtrbot-ml>
[mattermost] <hartytp> @sb10q the code looks much better now. I particularly appreciate all the test cases. They provide a really nice way of confirming that my reading of the datasheets is correct
<mtrbot-ml>
[mattermost] <sb10q> "coarse" cycle-slip based delay with a resolution of 1/2 DAC clock cycle
<mtrbot-ml>
[mattermost] <sb10q> It's 1 not 1/2
<mtrbot-ml>
[mattermost] <sb10q> We're not anymore using that delay (which is also not slip based) that has 1/2 resolution
ohsix has joined #m-labs
X-Scale` has joined #m-labs
X-Scale has quit [Ping timeout: 272 seconds]
X-Scale` is now known as X-Scale
<mtrbot-ml>
[mattermost] <sb10q> the optimal phase is saved into/loaded from the configuration EEPROM
<mtrbot-ml>
[mattermost] <sb10q> It's the nor flash not eeprom
<mtrbot-ml>
[mattermost] <sb10q> the DACs provide an internal S/H validator for alignment << we're not using it, we're measuring at what delay values there are rotations, and check that the target delay value is sufficiently away from them
cr1901_modern has quit [Ping timeout: 246 seconds]