m-labs / artiq

A leading-edge control system for quantum information experiments
https://m-labs.hk/artiq
GNU Lesser General Public License v3.0
413 stars 192 forks source link

Phaser servo #1448

Open hartytp opened 4 years ago

hartytp commented 4 years ago

ARTIQ Feature Request

Problem this request addresses

Phaser (hardware gateware) is a Sinara SAWG (smart AWG) for multi-tone RF generation.

It has two RF output channels, each providing "baseband" outputs up to ~400MHz with optional (population variant) upconverters to get to ~5GHz.

It also has two analog input channels, each offering ~500kHz of analog bandwidth. The main intended use case for these is amplitude/phase feedback using "a port of SU-servo". This issue is intended to be a scoping exercise to establish what exactly that should mean, comments/corrections very welcome!

Describe the solution you'd like

Initial thoughts in no particular order:

cc @jordens @dnadlinger @cjbe

jordens commented 4 years ago
hartytp commented 4 years ago

Feedback on amplitude restricts operating range. Consider feedback on power, i.e. sqrt before IIR or after.

You mean because of loop stability?

That's an interesting one, which we've discussed a few times but not bothered with. It's a little more complex since some AOMs are double-passed and some are single-passed. Also, if we want to do microwave amplitude leveling then there are different possible detector/modulator responses to consider.

My aim here is to scope out a minimal viable contract for intensity stabilization on Stabilizer. It's good to keep these kinds of things in mind but I think they'll probably have to wait for a later contract.

How does the per-card software IIR enable differ from the per-channel? Is it AND or OR?

I was thinking AND. But, on second thoughts, it's probably not worth the effort. It's only a two channel board.

"a bit faster" is a bit vague. Could you run the numbers and get a minimum required and maximum achievable latency from the datasheets and the schematics?

@cjbe @dnadlinger not sure if you have any particular minimum bandwidth in mind for this. I'd like to get a few hundred kHz out of it, but that's not a hard requirement.

yes, we can knock up a quick python simulation to look at the max possible bandwidth limited by the ADCs etc (but ignoring the FPGA-related latency).

Readback and consequently moninj will be slower (like 32 Mb/s plus lots of round trip latency)

Noted.

What's the channel enable rate synchronicity (between channels and granularity w.r.t. RTIO clock) requirements?

Again, @dnadlinger @cjbe and others should feel free to chip in here, but I'm not worried about synchronicity on the channel enables. If the noise eaters kick in at slightly different times/have some jitter WRT the RTIO clock, that's fine by me. So long as we can noise-eat on decently small pulses (limited by the loop settling time and fixed latencies) I'm happy.

It would be nice to have a good interface for shaped pulses where we can start a pulse ramp and turn the NE enable on at the same time, using the delay parameter to avoid noise-eating during the shape. I don't have any nice ideas for how this sould look.

Readback and consequently moninj will be slower (like 32 Mb/s plus lots of round trip latency)

Thanks, noted!

One parameter update per 1 µs is doable. All is impossible. There are about 65 Mb/s control data bandwidth remaining for everything (attenuators, DAC SPI, upconverter SPI, all servo config and servo control, LEDs, frequency shifter etc). But since this is already very cramped and necessarily tied to the DAC data framing, it won't be nice and easily extended.

Noted. I would not want to over complicate the interface to squeeze the parameter update rate.

jordens commented 4 years ago

@hartytp Another use case would be dynamic servoing not to a fixed setpoint defined in a profile but to a variable one, i.e. servo to a desired RF envelope streamed over the data channel. This wouldn't be possible with the current design and it wouldn't necessarily be easy to add on later. Instead of streaming baseband data, you would stream the setpoint AM data and and FM/PM data of the (single) oscillator.

hartytp commented 4 years ago

@jordens I know that some people do that, but it's not something we have any plans for here at the present time. Doing all the shaping open-loop with a relatively slow feedback loop to take out amplitude drifts is fine for us. I'm not aware of any other groups plans to use phaser so can't comment on wider applicability.