Configuration for mux11d operation

From MCEWiki
This topic is undergoing active development; information on this page is more subject to change than usual!

Hardware configuration

The following diagram shows a conceptual schematic of using the MCE hardware with mux11d SQUID chips mux11d_with_mce.pdf (prepared by Jimmy Grayson at Stanford)

For the reference: Media:Mux11d_bias_simple_diagram.pdf

Here is the proposed MCE signal assignment scheme: [PDF] [XLS]

Note that the signals the MCE must provide to the mux11d SQUID system are:

  • SA BIAS per column, constant
  • SA FB per column, fast-switching
  • SQ1 BIAS per column, fast-switching
  • "Rowsel" feedback per row, multiplexing (one value when active, another value when not active)

Software requirements

MAS

The mux11d support in MAS has been merged back into trunk and the former mux11d branch deleted. You can check out a new tree:

git clone https://github.com/multi-channel-electronics/mas.git

The only mux11d-specific features are in the "mux_lock" applications (2 new programs) and in the config2 system (mce.cfg).

mce_script

Updates for mux11d have been put right into mce_script, starting with r914. Just run "svn update" on your checked out copy. The major changes so far are:

  • experiment.cfg has extra parameters to configure and enable fast SA feedback and fast SQ1 bias switching, and to guide the new servo applications.
  • the config script generation code (script/bits) will set up the MCE for mux11d operation depending on variables in experiment.cfg

Configuration

mce.cfg

When constructing mce.cfg , start from templates/mce_v1_mux11d.cin or templates/mce_v2_mux11d.cin. These will map SQ1 bias as a per-column register, and properly expose fast switching of the SA FB and SQ1 bias. Since there is no "SQ2" in mux11d, this register is not defined.

The default mux11d configuration maps:

  • SA FB to BC1 FLUX_FB
  • SQ1 BIAS to BC2 FLUX_FB

There are other ways one might choose to do this mapping. The SQ1 bias card and offset, can be overridden in mce.cin by changing these variables:

/* These are only used if hw_mux11d != 0; they specify the bias card
 * and offset of the flux_fb register used for the SQ1 bias. */
$mux11d_sq1_bc = "bc2";
$mux11d_sq1_offset = 0;

At the MCE command level, fast-switching on the SA FB and SQ1 BIAS is accomplished with the same bias card registers used for Fast SQ2 switching (see firmware requirements). As an example, to load per-row values into the SA FB on column 5, and then enable muxing on that column, you could do the following:

wb sa fb_col5  123 432 514 451 434 653 123 ...
wra sa enbl_mux 5 1

Then to set a constant value on column 5, and disable muxing:

wra sa fb 5 400
wra sa enbl_mux 5 0

The SQ1 BIAS is exposed in a similar way. For example, the column 5 biases are exposed through:

wb sq1 bias_col5  123 432 514 451 434 653 123 ...
wra sq1 enbl_mux 5 1

In practice users don't write these MCE commands directly, and instead use the slightly higher-level of support provided by the experiment.cfg / config script system.

experiment.cfg

A number of parameters have been added to experiment.cfg to allow the config script system to set up fast-switching on the SA FB and SQ1 BIAS. These are:

  • Enable:
    • hardware_mux11d = 1;: triggers handling of all the other mux11d specific settings.
  • Row Select DAC control; these are arrays of up to 41 integers representing values for the "row select" (AC ON_BIAS) and "row deselect" (AC OFF_BIAS) DACs.
    • row_select = [...];: will be written to "row select" by the config script.
    • row_deselect = [...];: will be written to "row deselect" by the config script.
    • default_row_select, default_row_deselect: Eventually these will be used by the tuning to select default row_select and row_deselect values if the tuning has been instructed not to try to choose them.
  • SA FB control:
    • config_fast_sa_fb = 0;: When set to 0, MCE will be set up for constant SA FB output, with values obtained from the setting "sa_fb". When set to 1, MCE will be set up for fast-switching of SA FB output, with values obtained from sa_fb_set.
    • sa_fb_set = [...];: A 1d array encoding SA FB values for each row and column. (As usual the values are arranged as the 41 values for column 0, followed by the 41 values for column 1, etc.)
  • SQ1 BIAS control - these work exactly like SA FB above.
    • config_fast_sq1_bias = 1;
    • sq1_bias_set = [...];

For the purposes of array tuning the sq1_servo_* parameters will be used by the new sq1servo_sa program, which ramps the SQ1 FB and servos with the fast-switching SA FB (on each row independently). This may optionally be done for a series of SQ1 bias values.

A new set of servo control parameters, rowsel_servo_* (taking the same suffixes as the sq1_servo_* variables) has been introduced to control the new rs_servo program, which ramps the "row select" DACs and servos with the fast-switching SA FB (optionally at a series of SQ1 biases). In particular these parameters are:

rowsel_servo_gain, rowsel_servo_flux_start, rowsel_servo_flux_count, rowsel_servo_flux_step, rowsel_servo_bias_ramp, rowsel_servo_bias_start, rowsel_servo_bias_count, rowsel_servo_bias_step


Usage

auto_setup, mux11d edition

The auto_setup code has been updated to support mux11d. I am uncertain as to how well-tested this code is, however.

The steps in tuning a mux11d system are:

  • sa_ramp -- same as classic tuning; select SA FB (and possibly also SA BIAS).
  • rs_servo -- trace out the "Row Select" V-phi curves (all rows), probably at several different S1 bias values; pick a reasonable S1 BIAS (one value per row, column) and ROWSEL/ROWDESEL feedbacks (one value per row). The algorithm for selecting ROWSEL/ROWDESEL feedback values is:
    • All (row select) V-phi curves are analyzed to identify the first minimum and next maximum in the V-phi response. Each V-phi curve (bias,row,column) is flagged as valid, or not. Only valid curves are used when determining optimal biases and feedbacks for each column/row.
    • SQ1 bias choice: If the SQ1 bias was ramped, an optimal SQ1 bias is chosen for each column and row by finding the bias at which the maximum peak-to-peak response is seen.
    • ROWSEL/ROWDESEL choice: For a given row select V-phi curve, the ROWDESEL point is the first minimum (probably near FB=0) and the ROWSEL point is the first maximum to the right of the ROWDESEL point. For each row, the ROWSEL and ROWDESEL feedback values are taken as the median of those values over all columns in the row. Only the values corresponding to the optimal SQ1 bias are considered.
  • sq1_servo_sa -- trace out the S1 V-phi curves (all rows), probably at several different S1 bias values; pick final fast-switching S1 BIAS values and fast-switching SA FB set-points.
    • This is probably not fully implemented.
  • sq1_ramp, sq1_ramp_check, sq1_ramp_tes -- as in classic tuning; check your open loop response.


Using the new servo programs

This is only relevant if you're trying to run the servo programs yourself on the command line. The auto_setup should already know how to do all of this stuff correctly.

The servo programs make a lot of assumptions about the state of the MCE before beginning their job. Preparation is usually handled by the tuning code. To run these programs manually, the biggest thing to be careful of is that you have enabled (or disabled) fast-switching on the relevant stages. Here's a sequence of terminal commands which should work:

# Disable fast switching
mas_param set config_fast_sa_fb 0
mas_param set config_fast_sq1_bias 0
# Basic MCE setup and SA tuning
auto_setup --last-stage sa_ramp
mas_param set config_fast_sa_fb 1
# Recreate config script and run it to program the MCE.
mce_make_config -x
# Run the servos on RC2
sq1servo_sa 2 myservo1
rs_servo 2 myservo2

Later, once you have set up the "sq1_bias_set" values:

mas_param set config_fast_sq1_bias 1
mce_make_config -x