labscript-suite / labscript-devices

A modular and extensible plugin architecture to control experiment hardware using the 𝘭𝘒𝘣𝘴𝘀𝘳π˜ͺ𝘱𝘡 𝘴𝘢π˜ͺ𝘡𝘦.
http://labscriptsuite.org
Other
5 stars 58 forks source link

Pulseblaster phase resets #27

Closed philipstarkey closed 5 years ago

philipstarkey commented 6 years ago

Original report (archived issue) by Shaun Johnstone (Bitbucket: shjohnst, GitHub: shjohnst).


The DDS outputs on pulseblasters support phase resets, where the absolute phase of the output is reset. As far as I can tell, we do not use this at all, and so there is no phase stability shot-to-shot (unless the phase resets at the start of the experiment, but I don't see that happening explicitly?). Furthermore, the DDS phase does not seem to be stable over long periods, so resetting at the start of an experiment can lead to phase jitter in pulses several seconds later.

I propose that we implement a "phase reset" function. The reset works by setting the reset flag to True, which holds the DDS output at a constant value corresponding to the starting value due to the current phase register, then disabling the reset again (at the next instruction) after which the DDS begins accumulating phase as usual, outputting rf.

I've tested that this produces consistent phases in pulses by manually editing instructions in the pulse program written in the H5 file. I'm not sure what the best labscript implementation would be, as the reset takes 2 instructions, and so has a finite time during which the DDS output is frozen.

philipstarkey commented 5 years ago

Original comment by Chris Billington (Bitbucket: cbillington, GitHub: chrisjbillington).


Fixed in pull request 62

philipstarkey commented 5 years ago

Original comment by Chris Billington (Bitbucket: cbillington, GitHub: chrisjbillington).