Difference between revisions of "Data mode"

From MCEWiki
(1<sup>st</sup> Stage SQUID Feedback Calculation)
Line 1: Line 1:
= 1<sup>st</sup> Stage SQUID Feedback Calculation =
+
During normal readout (i.e. not raw mode), there are 4 data associated with each channel.  These are:
* The error calculated by the MCE from the Series Array output is:
+
* '''error''' calculated based on Series-Array Signal sampled by the ADC: <math> error= \sum_1^{sample\_num} (adc\_reading - adc\_offset)</math>
'''sq_error''' = <math>\Sigma</math>(adc_reading – adc_offset)
+
* '''sq1_fb''' or feedback applied by the MCE to the SQ1 calculated as: <math>sq1\_fb_{n+1} = [(gainp * error_n)+ (gaini * \sum_1^n error)+(gaind * (error_n - error_{n-1})))] / [2^{12})]</math>
* The feedback applied by the MCE to the 1<sup>st</sup> stage SQUIDs is:
+
* '''sq1_fb_filtered''' or the low-pass filtered SQ1 feedback (see [[ Digital 4-pole Butterworth Low-pass filter | 4-pole Butterworth low-pass filter ]]).  The effective DC gain, including quantization error, is approximately 1218.
'''sq_feedback''' = [(p_coeff*'''sq_error''')+(i_coeff*integral)+(d_coeff*difference)] / ['''2<sup>12</sup>''']
 
  
= Table of Data Modes (Current as of Revision 4.0.c)=
+
* '''num_flux_jumps''' or flux-jump counter
* The the formulas for the data modes listed below make liberal use of the '''sq_error''' and '''sq_feedback''' variables, which are defined above.
+
 
 +
Depending on the data mode, these values will be windowed in a different way.  The notes in the table below explain the windowing, in terms of how many bits are reported and the relative scaling of the windowed value relative to some reference data mode.
 +
 
 +
See notes for [[mas_data.pro[[, an IDL script to extract MCE data.
 +
 
 +
=== (Current as of Revision 4.0.c)===
  
 
{| border="1"
 
{| border="1"
Line 16: Line 20:
 
|| 32b (signed) co-added Error signal err[31:0].
 
|| 32b (signed) co-added Error signal err[31:0].
  
'''error_mode0''' = sq_error
+
'''error_mode0''' = error
  
 
|| all
 
|| all
Line 24: Line 28:
 
||32b (signed) SQ1 Feedback data fb[31:0].  When servo_mode = 3:  
 
||32b (signed) SQ1 Feedback data fb[31:0].  When servo_mode = 3:  
  
'''feedback_mode1''' = sq_feedback
+
'''feedback_mode1''' = sq1_fb * 2^12
  
 
|| all
 
|| all
Line 32: Line 36:
 
||32b (signed) low-pass filtered SQ1 feedback data fb[31:0].   
 
||32b (signed) low-pass filtered SQ1 feedback data fb[31:0].   
  
'''flt_fb_mode2''' = sq_feedback * 1218 (@ DC)
+
'''flt_fb_mode2''' = sq1_fb_filtered
  
 
|| 2.0.5 and later
 
|| 2.0.5 and later
Line 42: Line 46:
 
'''raw_mode3''' = (adc_reading – adc_offset) / (2<sup>6</sup>),
 
'''raw_mode3''' = (adc_reading – adc_offset) / (2<sup>6</sup>),
  
except in rev. 4.3.7 where the gain is unity
+
except in rev. 4.3.7 where all 14 bits are reported.
  
 
|| Only 3.0.6, 3.0.16, 3.0.25, 4.1.7, 4.2.7, 4.3.7
 
|| Only 3.0.6, 3.0.16, 3.0.25, 4.1.7, 4.2.7, 4.3.7
Line 50: Line 54:
 
||Signed 18b SQ1 feedback fb[31] & fb[28:12] + signed 14b coadded error signal err[31] & err[12:0].   
 
||Signed 18b SQ1 feedback fb[31] & fb[28:12] + signed 14b coadded error signal err[31] & err[12:0].   
  
'''feedback_mode4''' = sq_feedback / (2<sup>12</sup>)
+
'''feedback_mode4''' = sq1_fb / (2<sup>12</sup>)
  
'''error_mode4''' = sq_error
+
'''error_mode4''' = error
  
 
|| 2.0.9 and later
 
|| 2.0.9 and later
Line 60: Line 64:
 
|| Signed 24b SQ1 feedback fb[31:8] + signed 8b num_flux_jumps fj[7:0].
 
|| Signed 24b SQ1 feedback fb[31:8] + signed 8b num_flux_jumps fj[7:0].
  
'''feedback_mode5''' = sq_feedback / (2<sup>8</sup>)
+
'''feedback_mode5''' = sq1_fb / (2<sup>8</sup>)
  
 
|| all
 
|| all
Line 68: Line 72:
 
|| Signed 18b filtered data filter[31] & filter[27:11] + signed 14b coadded error signal err[31] & err[12:0].
 
|| Signed 18b filtered data filter[31] & filter[27:11] + signed 14b coadded error signal err[31] & err[12:0].
  
'''filtered_fb_mode6''' = sq_feedback * 1218 / (2<sup>11</sup>)
+
'''filtered_fb_mode6''' = sq1_fb_filtered / (2<sup>11</sup>)
  
'''error_mode6''' = sq_error
+
'''error_mode6''' = error
  
 
|| 3.0.30 to 4.0.6 only
 
|| 3.0.30 to 4.0.6 only
Line 78: Line 82:
 
|| Signed 22b filtered data filter[31] & filter[27:7] + signed 10b coadded error signal err[31] & err[12:4].
 
|| Signed 22b filtered data filter[31] & filter[27:7] + signed 10b coadded error signal err[31] & err[12:4].
  
'''filtered_fb_mode7''' = sq_feedback * 1218 / (2<sup>7</sup>)
+
'''filtered_fb_mode7''' = sq1_fb_filtered / (2<sup>7</sup>)
  
'''error_mode7''' = sq_error / (2<sup>4</sup>)
+
'''error_mode7''' = error / (2<sup>4</sup>)
  
 
|| 4.0.2 and later
 
|| 4.0.2 and later
Line 88: Line 92:
 
|| Signed 24b filtered data filter[31:8] + signed 8b num_flux_jumps fj[7:0].
 
|| Signed 24b filtered data filter[31:8] + signed 8b num_flux_jumps fj[7:0].
  
'''filtered_fb_mode8''' = sq_feedback * 1218 / (2<sup>8</sup>)
+
'''filtered_fb_mode8''' = sq1_fb_filtered / (2<sup>8</sup>)
  
 
|| 4.0.4 only
 
|| 4.0.4 only
Line 96: Line 100:
 
|| Signed 24b filtered data filter[31] & filter[23:1] + signed 8b num_flux_jumps fj[7:0].
 
|| Signed 24b filtered data filter[31] & filter[23:1] + signed 8b num_flux_jumps fj[7:0].
  
'''filtered_fb_mode9''' = sq_feedback * 1218 / (2<sup>1</sup>)
+
'''filtered_fb_mode9''' = sq1_fb_filtered/ (2<sup>1</sup>)
  
 
|| 4.0.5 and later
 
|| 4.0.5 and later
Line 104: Line 108:
 
|| Signed 25b filtered data filter[27:3] + signed 7b num_flux_jumps fj[6:0].
 
|| Signed 25b filtered data filter[27:3] + signed 7b num_flux_jumps fj[6:0].
  
'''filtered_fb_mode10''' = sq_feedback * 1218 / (2<sup>3</sup>)
+
'''filtered_fb_mode10''' = sq1_fb_filtered / (2<sup>3</sup>)
  
 
|| 4.1.6, 4.0.b and later
 
|| 4.1.6, 4.0.b and later
Line 111: Line 115:
 
= Note regarding units =
 
= Note regarding units =
  
During normal readout (i.e. not raw mode), there are 4 data associated with each channel.  These are:
+
The scaling is quoted as being relative to some reference data mode.  For example, in data mode 4, if I were to observe the same system's feedback in data_mode 4 and data_mode 1, and call the two measurements fb_4 and fb_1, then I would expect  
* co-added error ("error")
 
* sq1 feedback ("sq1fb")
 
* filtered sq1 feedback ("filtered sq1fb")
 
* flux jump counter ("num_flux_jumps")
 
 
 
Depending on the data mode, these values will be windowed in a different way.  The notes in the table above explain the windowing, in terms of how many bits are reported and the relative scaling of the windowed value relative to some reference data mode.
 
 
 
The scaling is quoted as being relative to some reference data mode.  For example, in data mode 4 the text
 
 
 
"The feedback reported in this mode is divided by 2<sup>12</sup> compared to data_mode=1."
 
 
 
is meant to imply that if I were to observe the same system's feedback in data_mode 4 and data_mode 1, and call the two measurements fb_4 and fb_1, then I would expect  
 
  
 
   fb_4 = fb_1 >> 12 = floor[ fb_1 / 2^12 ]
 
   fb_4 = fb_1 >> 12 = floor[ fb_1 / 2^12 ]

Revision as of 09:30, 1 October 2008

During normal readout (i.e. not raw mode), there are 4 data associated with each channel. These are:

  • error calculated based on Series-Array Signal sampled by the ADC: <math> error= \sum_1^{sample\_num} (adc\_reading - adc\_offset)</math>
  • sq1_fb or feedback applied by the MCE to the SQ1 calculated as: <math>sq1\_fb_{n+1} = [(gainp * error_n)+ (gaini * \sum_1^n error)+(gaind * (error_n - error_{n-1})))] / [2^{12})]</math>
  • sq1_fb_filtered or the low-pass filtered SQ1 feedback (see 4-pole Butterworth low-pass filter ). The effective DC gain, including quantization error, is approximately 1218.
  • num_flux_jumps or flux-jump counter

Depending on the data mode, these values will be windowed in a different way. The notes in the table below explain the windowing, in terms of how many bits are reported and the relative scaling of the windowed value relative to some reference data mode.

See notes for [[mas_data.pro[[, an IDL script to extract MCE data.

(Current as of Revision 4.0.c)

Data Mode Summary Pixel-Data Description RC Firmware Revision
0 Error 32b (signed) co-added Error signal err[31:0].

error_mode0 = error

all
1 Feedback 32b (signed) SQ1 Feedback data fb[31:0]. When servo_mode = 3:

feedback_mode1 = sq1_fb * 2^12

all
2 Filtered feedback 32b (signed) low-pass filtered SQ1 feedback data fb[31:0].

flt_fb_mode2 = sq1_fb_filtered

2.0.5 and later
3 Raw 50 MHz Raw 50 MHz ADC samples raw[13:6].

raw_mode3 = (adc_reading – adc_offset) / (26),

except in rev. 4.3.7 where all 14 bits are reported.

Only 3.0.6, 3.0.16, 3.0.25, 4.1.7, 4.2.7, 4.3.7
4 18:14 Mixed Signed 18b SQ1 feedback fb[31] & fb[28:12] + signed 14b coadded error signal err[31] & err[12:0].

feedback_mode4 = sq1_fb / (212)

error_mode4 = error

2.0.9 and later
5 24:8 mixed Signed 24b SQ1 feedback fb[31:8] + signed 8b num_flux_jumps fj[7:0].

feedback_mode5 = sq1_fb / (28)

all
6 obsolete 18:14 mixed Signed 18b filtered data filter[31] & filter[27:11] + signed 14b coadded error signal err[31] & err[12:0].

filtered_fb_mode6 = sq1_fb_filtered / (211)

error_mode6 = error

3.0.30 to 4.0.6 only
7 22:10 mixed Signed 22b filtered data filter[31] & filter[27:7] + signed 10b coadded error signal err[31] & err[12:4].

filtered_fb_mode7 = sq1_fb_filtered / (27)

error_mode7 = error / (24)

4.0.2 and later
8 obsolete 24:8 mixed Signed 24b filtered data filter[31:8] + signed 8b num_flux_jumps fj[7:0].

filtered_fb_mode8 = sq1_fb_filtered / (28)

4.0.4 only
9 24:8 mixed Signed 24b filtered data filter[31] & filter[23:1] + signed 8b num_flux_jumps fj[7:0].

filtered_fb_mode9 = sq1_fb_filtered/ (21)

4.0.5 and later
10 25:7 mixed Signed 25b filtered data filter[27:3] + signed 7b num_flux_jumps fj[6:0].

filtered_fb_mode10 = sq1_fb_filtered / (23)

4.1.6, 4.0.b and later

Note regarding units

The scaling is quoted as being relative to some reference data mode. For example, in data mode 4, if I were to observe the same system's feedback in data_mode 4 and data_mode 1, and call the two measurements fb_4 and fb_1, then I would expect

 fb_4 = fb_1 >> 12 = floor[ fb_1 / 2^12 ]

where >> denotes the right-bit-shift operator.

The reference data modes for error, sq1fb and filtered sq1fb are, respectively, 0, 1, and 2. In these modes, the meaning of the data are as follows:

Signal Reference data mode Description
co-added error 0 Co-added error for the current internal MCE frame. For ADC readings Y, adc_offset Yo and where n is the sample_num, the error e is <math>e = \sum_1^n (Y - Y_0)</math>, where n is sample_num.
SQ1 feedback 1 Calculated squid1 feedback. Note that this number should be distinguished from the sq1_DAC value, which is obtained from bits [25:12] of the SQ1 feedback. When flux-jumping is active, an integer multiple of the flux_quanta value will be subtracted from sq1_DAC prior to application to the DAC.
filtered SQ1 feedback 2 The output from the 4-pole Butterworth low-pass filter . The input to the filter is the SQ1 feedback signal. The effective DC gain, including quantization error, is approximately 1216.


Please note that, by default, mas_data.pro will rescale data in the following way:

  • error signals are rescaled to match the units of data mode 0.
  • sq1 feedback is rescaled to sq1_DAC units (i.e. data mode 1 divided by 212)
  • filtered sq1 feedback is rescaled to the units of data mode 2.