Difference between revisions of "Data mode"
(→Data Modes and Windowing) |
|||
(10 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | During data readout from the MCE, there are different types of data associated with each detector. These are: | |
− | + | # calculated SQ1 feedback ('''''sq1_fb'''''): | |
− | + | #* <math>sq1\_fb_{n+1} = \frac{1}{2^{12}} \left[\left(gainp \times q_{n}\right) + \left(gaini \times \sum_{i=1}^{n} error_i\right) + \left(gaind \times [error_{n} - error_{n-1}]\right)\right] </math> | |
− | # '''sq1_fb''' | + | #* where <math> q_n=error_n + b\times q_{n-1}</math> |
− | #* <math>sq1\_fb_{n+1} = \frac{1}{2^{12}} \left[\left(gainp \times | + | #* ''n'' is the multiplexing-frame index |
− | #* | + | #*''i'' is reset when the PID servo is restarted by setting the {{param|rc|servo_mode}} to 3 or {{param|rc|flx_lp_init}} to 1. |
− | + | #*''b'' < 1 and specified by {{param|rc|pterm_decay_bits}} | |
− | #* | + | # coadded error ('''''error'''''): |
− | #* | + | #* calculated from the Series-Array signal sampled @ 50MHz by the ADC |
− | # '''error''': | + | #* <math>error = \sum_{1}^{sample\_num} (adc\_reading_{i} - adc\_offset)</math> |
− | #* <math>error = \sum_{ | + | # low-pass filtered SQ1 feedback ('''''sq1_fb_filtered'''''): |
− | # '''sq1_fb_filtered''': | + | #*see [[ Digital 4-pole Butterworth Low-pass filter | 4-pole Butterworth low-pass filter ]]. |
− | + | #* The effective DC gain, including quantization error, is approximately: <math>sq1\_fb\_filtered_{n} \simeq 1218 \times \left[sq1\_fb_{n-1}\right]</math> | |
− | # '''num_flux_jumps''' | + | # flux-jump counter ('''''num_flux_jumps'''''). See [[ Flux jumping ]]. |
− | # | + | # raw ADC samples @ 50 MHz ('''''raw'''''). See [[ Raw-mode readout ]]. |
− | |||
− | |||
− | |||
− | + | Note that '''''error''''', '''''sq1_fb''''', and '''''sq1_fb_filtered''''' are internally stored as 32 bits while '''''num_flux_jumps''''' are stored as 8 bits and '''''raw''''' as 14 bits. During readout the appropriate windowing is chosen for each data type. | |
− | + | == Data Modes and Windowing == | |
− | + | The type of data reported by the MCE during data acquisition is determined by the MCE parameter {{param|rc|data_mode}}. Depending on the data mode, the reported data 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. The reference data modes for error, sq1fb and filtered_sq1fb are, respectively, 0, 1, and 2. | |
− | |||
− | |||
− | |||
− | {| | + | {| class="wikitable" |
|- | |- | ||
− | ! | + | ! data-mode !! data-type !! Description !! RC Firmware Revision |
|- | |- | ||
| 0 | | 0 | ||
− | || | + | || <center>''error''</center> |
− | || 32b (signed) co-added | + | || 32b (signed) co-added error <br /> |
* [31:0] = error | * [31:0] = error | ||
Line 38: | Line 32: | ||
|- | |- | ||
| 1 | | 1 | ||
− | || | + | || <center>''sq1_fb''</center> |
− | + | || 32b (signed) calculated SQ1 feedback. | |
− | 32b (signed) SQ1 | + | * [31:0] = sq1_fb * 2<sup>12</sup> when {{param|rc|servo_mode}} = 3 |
− | * [31:0] = sq1_fb * 2<sup>12</sup> | + | * [31:0] = sq1_fb when {{param|rc|servo_mode}} != 3 |
− | + | ''Note that {{param|rc|servo_mode}}=3 is the normal running condition. The non-servoing form, used at times during array-auto-tune for example, is included here for completeness. | |
− | |||
− | * [31:0] = sq1_fb | ||
− | |||
− | ''Note that servo_mode=3 is the normal running condition. The non-servoing form, used at times during array-auto-tune for example, is included here for completeness. | ||
'' | '' | ||
|| all | || all | ||
|- | |- | ||
| 2 | | 2 | ||
− | || | + | || <center>''filtered_sq1_fb''</center> |
− | ||32b (signed) low-pass filtered SQ1 feedback data | + | ||32b (signed) low-pass filtered SQ1 feedback data. <br /> |
* [31:0] = sq1_fb_filtered | * [31:0] = sq1_fb_filtered | ||
Line 58: | Line 48: | ||
|- | |- | ||
| 3 obsolete <br /> (see 12) | | 3 obsolete <br /> (see 12) | ||
− | || | + | || <center>raw</center> |
|| Raw 50 MHz ADC samples raw[13:i], where i=0 in rev. 4.3.7 and i=6 in all previous firmware. <br /> | || Raw 50 MHz ADC samples raw[13:i], where i=0 in rev. 4.3.7 and i=6 in all previous firmware. <br /> | ||
* [31:0] = raw_data / (2<sup>i</sup>), | * [31:0] = raw_data / (2<sup>i</sup>), | ||
Line 65: | Line 55: | ||
|- | |- | ||
| 4 | | 4 | ||
− | || 18:14 | + | || <center>18:14 mixed </center> |
− | || | + | ||signed 18b SQ1 feedback + signed 14b coadded error <br /> |
* [31:14] = sq1_fb | * [31:14] = sq1_fb | ||
* [13:0] = error | * [13:0] = error | ||
Line 73: | Line 63: | ||
|- | |- | ||
| 5 | | 5 | ||
− | || 24:8 mixed | + | || <center>24:8 mixed </center> |
− | || | + | || signed 24b SQ1 feedback + signed 8b num_flux_jumps[7:0]. <br /> |
* [31:8] = sq1_fb * 2<sup>4</sup> | * [31:8] = sq1_fb * 2<sup>4</sup> | ||
* [7:0] = num_flux_jumps | * [7:0] = num_flux_jumps | ||
Line 81: | Line 71: | ||
|- | |- | ||
| 6 obsolete | | 6 obsolete | ||
− | || 18:14 mixed | + | || <center>18:14 mixed</center> |
− | || | + | || signed 18b filtered data + signed 14b co-added <br /> |
* [31:13] = sq1_fb_filtered / (2<sup>11</sup>) | * [31:13] = sq1_fb_filtered / (2<sup>11</sup>) | ||
* [12:0] = error | * [12:0] = error | ||
Line 89: | Line 79: | ||
|- | |- | ||
| 7 | | 7 | ||
− | || 22:10 mixed | + | || <center>22:10 mixed</center> |
− | || | + | || signed 22b filtered data + signed 10b coadded error<br /> |
* [31:10] = sq1_fb_filtered / (2<sup>7</sup>) | * [31:10] = sq1_fb_filtered / (2<sup>7</sup>) | ||
* [9:0] = error / (2<sup>4</sup>) | * [9:0] = error / (2<sup>4</sup>) | ||
Line 97: | Line 87: | ||
|- | |- | ||
| 8 obsolete | | 8 obsolete | ||
− | ||24:8 mixed | + | ||<center>24:8 mixed</center> |
− | || | + | || signed 24b filtered data + signed 8b num_flux_jumps[7:0]. <br /> |
* [31:8] = sq1_fb_filtered / (2<sup>8</sup>) | * [31:8] = sq1_fb_filtered / (2<sup>8</sup>) | ||
* [7:0] = num_flux_jumps | * [7:0] = num_flux_jumps | ||
Line 104: | Line 94: | ||
|| 4.0.4 only | || 4.0.4 only | ||
|- | |- | ||
− | | 9 | + | | 9 obsolete |
− | || 24:8 mixed | + | || <center>24:8 mixed </center> |
− | || | + | || signed 24b filtered data + signed 8b num_flux_jumps[7:0]. <br /> |
* [31:8] = sq1_fb_filtered/ (2<sup>1</sup>) | * [31:8] = sq1_fb_filtered/ (2<sup>1</sup>) | ||
* [7:0] = num_flux_jumps | * [7:0] = num_flux_jumps | ||
− | || 4.0.5 | + | || 4.0.5 till 4.0.a |
|- | |- | ||
| 10 | | 10 | ||
− | || 25:7 mixed | + | || <center>25:7 mixed</center> |
− | || Signed 25b filtered data | + | || Signed 25b filtered data + signed 7b num_flux_jumps. <br /> |
* [31:7] = sq1_fb_filtered / (2<sup>3</sup>) | * [31:7] = sq1_fb_filtered / (2<sup>3</sup>) | ||
* [6:0] = num_flux_jumps | * [6:0] = num_flux_jumps | ||
Line 121: | Line 111: | ||
|- | |- | ||
| 11 | | 11 | ||
− | || 6:3 mixed, debugging mode | + | || <center>6:3 mixed, debugging mode </center> |
|| Unsigned 6b row_index + unsigned 3b column_index. <br /> | || Unsigned 6b row_index + unsigned 3b column_index. <br /> | ||
* [31:10] '''----''' | * [31:10] '''----''' | ||
Line 130: | Line 120: | ||
|- | |- | ||
| 12 | | 12 | ||
− | || | + | ||<center> raw</center> |
|| Raw 50 MHz ADC samples raw[13:0], sign-extended to 32 bits. | || Raw 50 MHz ADC samples raw[13:0], sign-extended to 32 bits. | ||
* [31:0] = raw_data | * [31:0] = raw_data | ||
Line 137: | Line 127: | ||
|} | |} | ||
− | = | + | == Links == |
− | + | * [[ MCE firmware ]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[Category:Readout Card Firmware]] | |
− | + | [[Category:MAS]] | |
− | + | [[Category:MCE Script]] |
Latest revision as of 14:35, 6 August 2019
During data readout from the MCE, there are different types of data associated with each detector. These are:
- calculated SQ1 feedback (sq1_fb):
- <math>sq1\_fb_{n+1} = \frac{1}{2^{12}} \left[\left(gainp \times q_{n}\right) + \left(gaini \times \sum_{i=1}^{n} error_i\right) + \left(gaind \times [error_{n} - error_{n-1}]\right)\right] </math>
- where <math> q_n=error_n + b\times q_{n-1}</math>
- n is the multiplexing-frame index
- i is reset when the PID servo is restarted by setting the servo_mode to 3 or flx_lp_init to 1.
- b < 1 and specified by pterm_decay_bits
- coadded error (error):
- calculated from the Series-Array signal sampled @ 50MHz by the ADC
- <math>error = \sum_{1}^{sample\_num} (adc\_reading_{i} - adc\_offset)</math>
- low-pass filtered SQ1 feedback (sq1_fb_filtered):
- see 4-pole Butterworth low-pass filter .
- The effective DC gain, including quantization error, is approximately: <math>sq1\_fb\_filtered_{n} \simeq 1218 \times \left[sq1\_fb_{n-1}\right]</math>
- flux-jump counter (num_flux_jumps). See Flux jumping .
- raw ADC samples @ 50 MHz (raw). See Raw-mode readout .
Note that error, sq1_fb, and sq1_fb_filtered are internally stored as 32 bits while num_flux_jumps are stored as 8 bits and raw as 14 bits. During readout the appropriate windowing is chosen for each data type.
Data Modes and Windowing
The type of data reported by the MCE during data acquisition is determined by the MCE parameter data_mode. Depending on the data mode, the reported data 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. The reference data modes for error, sq1fb and filtered_sq1fb are, respectively, 0, 1, and 2.
data-mode | data-type | Description | RC Firmware Revision |
---|---|---|---|
0 | 32b (signed) co-added error
|
all | |
1 | 32b (signed) calculated SQ1 feedback.
Note that servo_mode=3 is the normal running condition. The non-servoing form, used at times during array-auto-tune for example, is included here for completeness. |
all | |
2 | 32b (signed) low-pass filtered SQ1 feedback data.
|
2.0.5 and later | |
3 obsolete (see 12) |
Raw 50 MHz ADC samples raw[13:i], where i=0 in rev. 4.3.7 and i=6 in all previous firmware.
|
Only 3.0.6, 3.0.16, 3.0.25, 4.1.7, 4.2.7, 4.3.7 | |
4 | signed 18b SQ1 feedback + signed 14b coadded error
|
2.0.9 and later | |
5 | signed 24b SQ1 feedback + signed 8b num_flux_jumps[7:0].
|
all | |
6 obsolete | signed 18b filtered data + signed 14b co-added
|
3.0.30 to 4.0.6 only | |
7 | signed 22b filtered data + signed 10b coadded error
|
4.0.2 and later | |
8 obsolete | signed 24b filtered data + signed 8b num_flux_jumps[7:0].
|
4.0.4 only | |
9 obsolete | signed 24b filtered data + signed 8b num_flux_jumps[7:0].
|
4.0.5 till 4.0.a | |
10 | Signed 25b filtered data + signed 7b num_flux_jumps.
|
4.1.6, 4.0.b and later | |
11 | Unsigned 6b row_index + unsigned 3b column_index.
|
5.0.0 and later | |
12 | Raw 50 MHz ADC samples raw[13:0], sign-extended to 32 bits.
|
4.0.d, 4.0.e, 5.0.1+ |