Hi, nice to meet everybody! I'm Javier Contreras, the new FPGA developer at Fermilab.
Just sharing what I wrote down during our June 4th meeting. Sorry it's a bit verbose as I'm still new to the project and trying to figure everything out. Please add your comments!
Summary: Need to consider higher bit depth than 16 to ensure control loop stability. Biquads are important to compensate piezos' response. I'll continue work on setting up hardware simulations that'll help us figure out the optimal implementation of the filters.
--------------------------------
FOM for implementation must consider not just noise but also coefficient resolution => 16 bits is not enough!
10 MHz for a sample rate is a good "middle value". Want the low pass at 10Hz. Similar to a SR560 control loop, with high-gain at low freqs with 1/f behavior.
10Hz is at a millionth of the bandwidth! When sampling and wrapping s into the z domain, the pole ends up dangerously close to |z|=1 so we need good precision.
Having an input signal with around 16 or 24 bits might help us save internal bits as the LSBs of high-precision multiplications are eventually truncated anyways.
Must produce a test suite of filters for the Moku with different bit depths to compare noise. Caltech team will provide Ai and Bi coefficients. FNAL has been using scipy.butter.
DF1 vs DF2 is a matter of fixed-point vs floating point and dynamic range vs. noise. Each one has benefits and drawbacks but it seems DF2 is generally prefered.
Once I get the Vivado simulations running I'll seek to test all the bit possibilities and compare latency vs noise vs area.
Interlacing DSPs will likely be necessary. Can also take advantage of the FPGA clock being sufficiently higher than the sampling rate.
Moku provides lots of options but many of them aren't performing the best they could. We want to beat the Moku at the things we want to do.
Lock cavity to 1550 & 775nm via an AOM that's traversed twice and lambda/4 shifted. 40% efficiency on each pass, also diffraction losses, but still able to lock the cavities.
Main cavity needs to be stable down to the pm regime. Feedback ctrl must stabilize the cavity against effects of air and sound.
1-2 kHz not enough for ctrl loop. Best efforts w/Moku reach ~8kHz. Piezos have annoying resonances.
Donut-shaped 01 Gauss-Laguerre mode looks nice!
3-4 biquads will be necessary to compensate the response of the piezos. Some to remove notches, some for resonance. Improve problematic 1-2kHz region.
Goal with FW is to have 2-3 channels with as many as 10 biquads. Not necessarily all channels with 10. Consider switching, multiplexing & swapping. Could have 3 sets of filters multiplexed 30x contingent on FPGA Clock vs Sample Rate.
If we use 10 filters, we introduce more pipelining latency. Better to move data to memory ASAP and do the routing logic from that instead of buffering and introducing more latency.
LIGO uses EPICS as a DAQ solution; worthwhile to use it as middleware. ACORN is "EPICS on steroids". MEDM is deprecated.
Caltech will be working on this middleware based on LIGO, also the "Guardian" framework which manages such EPICS middleware and sequencing.
Ryan has a similar solution and integrating it would only need registering to the proper EPICS variables.
Chiller arrived at FNAL, and Chris sent "the machine". There's a lab warm-in coming at Caltech! In around 1-2 weeks. Work is pending on a water exchanger. Matt Hollister is moving on to industry work :'(.
10 more IR cameras & pico controllers to be sent.