Introduction
USB driver
MCA-2K Device
Overview
Module Constants
ARM Data structures
Version
Status
Controls
Calibration
Histogram
Two-channel Logger
Pulse capture
Lossless listmode
Perceptron-powered PSD
API
Overview
|
MCA-2K Data Structure: arm_ctrl
Summary
The arm_ctrl data structure is used to control all aspects of the MCA-2K operation. The documentation applies to PMT and SiPM-based MCA-2K systems, such as the PMT-2000 and the SiPM-2000.
Data structure
For arm_ctrl these are the 'register' and 'field' data in use. All register data are 32-bit floats (float32).
arm_ctrl registers and fields — Operation and calibration |
Register number and field name | Description |
AC0: gain_stabilization | Bit field governing gain stabilization, cf 'user' table below. |
AC1: peltier | Either fixed Peltier power (0 to 100%) or maximum power; To allow a host control loop (only in SiPM-based systems with a Peltier controller; eg SiPM-1010). |
AC2: temp_ctrl | 0 → Use ARM temperature sensor; 1 → Use external temperature sensor; [4:7]=> (0→ no Peltier cooling; 1→ constant cooling power; 2→ control loop) |
AC3: temp_target | Reserved; In SiPM-based systems with a Peltier cooler, this field has the target temperature. |
AC4: temp_period | Update period for temperature measurements |
AC5: temp_weight | Weight for geometric averaging: Purpose is noise reduction or matching thermal relaxation |
AC6: cal_temp | Temperature (in deg C) at which the detector was calibrated |
AC7: cal_ov | Operating voltage when the detector was calibrated |
AC8: cal_dg | Digital gain when the detector was calibrated (reserved for future use) |
AC9: cal_target | Target value for ROI or LED measured response; used with gain_stab=2,3 |
AC10: cal_roi_lowAC11: cal_roi_high | [roi_low : roi_high] => Region of interest used when gain-stabilizing on ROI (reserved for future use). |
All arm_ctrl registers and fields concerning operation settings and calibration
arm_ctrl registers and fields — Count rate measurement |
Register number and field name | Description |
AC12: run_mode | Run mode is a bit field |
AC13: run_action | Run_action is a bit field, with self-clearing bits; cf 'user' table below. |
AC13[0]: clear_statistics | Clear data for the active counter bank. |
AC14: run_time_sample | Requested run time for sample counting; 0→ forever |
AC15: run_time_bck | Requested run time for background counting; 0→ forever |
AC16: alarm_thr | Alarm threshold for foreground vs bck; If the probability of the foreground data being caused by the accepted background is less than this, an alarm will be raised (AS7[2]) |
AC17: roi_low | ROI for count rate and alarming purpose |
AC18: roi_high | ROI for count rate and alarming purpose. |
arm_ctrl registers and fields concerning count rate measurements.
arm_ctrl registers and fields — time-slice operation |
Register number and field name | Description |
AC19: ts_period | Currently fixed at 100ms. |
AC20: ts_reset | Set to 2 to reset the time-slice (Portal Monitor) alarm system. |
AC21: ts_L | Summation length for alarm computation |
AC22: ts_H | History length for alarms; maximum length of alarm before resetting |
AC23: ts_wait | Minimum wait time until we will accept alarms, having sufficient background accuracy |
AC24: ts_B | Background averaging length |
AC25: ts_eps | Alarm threshold for time-slice system |
AC26: trigger_width | Output pulse width, for alarms. |
arm_ctrl registers and fields concerning the time-slice subsystem
arm_ctrl registers and fields — MCA core operation |
Register number and field name | Description |
AC27: trigger_threshold | Trigger threshold in V; typ 0.015V, range 0..3V |
AC28: integration_time | Light pulse integration time; Use 1.2e-6 for NaI. |
AC29: led_width | Width of the desired LED light pulse; typically 1e-6 to 3e-6. |
AC35: led_shift | LED pulses measure as very high energies, potentially falling out the histogram range. Use led_shift to divide the measured LED energy: division factor is 2L |
AC30: cal_events | Number of events to average to create a new LED or ROI average. Use 1000 with an LED. |
AC32: hold_off | Hold off time; ie enforced dead time after a trigger. It is set to equal or greater than the integration time. It is used to avoid retriggering on the falling edge of a previous scintillator pulse. |
AC34: gain_select | Select a gain setting of 0, 1, 2, 3, or 4. On the PMT-2000 this will result in transimpedance gains of 100Ω, 430Ω, 1100Ω, 3400Ω, and 10.1kΩ, |
AC36: base_threshold | Noise threshold separating background electronic noise from real scintillator pulses. This parameter controls measuring the baseline and is normally set to 0.003. |
AC37: pile_up | Used for pile up rejection; cf user's manual. |
AC38: trace_delay | When recording scintillator pulses, use trace_delay to shift the pulse right-ward in the display. |
AC39: lm_lsb | Listmode arrival times: 1LSB=2**x clock cycles. 0≤x≤15. At 24MHz FPGA clock speed, tthe highest list mode arrival time resolution is 43ns and the 20-bit time would roll over after 43.7ms; for x=0. At the other extreme, x=15, the resolution is 1.365ms and the roll over time is 1432s. |
arm_ctrl registers and fields for MCA core control; note that the MCA core is implemented in an FPGA.
arm_ctrl registers and fields — Miscellaneous |
AC31: baud_rate | Baud rate for the RS-232/485 serial communication. |
AC33: xctrl_0 | Logger control. xctrl_0[7:0] ⇒ Logger dwell time in multiples of 50ms time slices. Set to 0 to turn logger off. xctrl_0[15:8] ⇒ Input data source for logger channel 0; xctrl_0[23:16] ⇒ Input data source for logger channel 1. Input data source is arm_status[] index - for example 4 for CPU temperature. There are two computed data source: 256 ⇒ number of events recorded during dwell time; 257 ⇒ number of events falling into the alarm ROI recorded during dwell time; |
AC38: boot_wait | Wait time in seconds before the ARM processor boots and activates the USB interface. Usually set to 0. An embedded computer may not be intentionally powering its USB interface during a cold boot. In that case it is best to delay the ARM booting until after the host computer has booted up. |
Miscellaneous arm_ctrl registers and fields
arm_ctrl — user entries, Gain Stabilization (AC0) and Run Mode (AC12) |
Register number and field name | Description |
gs_mode | AC0[0:3]; 0→OFF, 1→LUT, ie use lookup table for temperature correction, 2→LED, Use an LED and the LED lookup table; |
histogram_run | AC12[0]; Activate acquiring counting and histogram data |
acq_type | AC12[3:1]; Type of data acquisition: 0→ standard histogram, 1→ Counting only, 2→ Histogram with noise suppression, 3→ Arrival times, 4→ neutron detectors. |
active_bank | AC12[4]; Select which bank will be active: 0→ foreground, 1→ background. |
read_clear | AC12[5]; 1→ Enable read_and_clear feature for counting. When enabled a histogram and counter bank is set to zero after a data read. |
two_bank | AC12[6]; Enable automatic selection of the inactive bank for reading and clearing. User then toggles active bank when desired. |
histo_4k | AC12[7]; Use one 4K×32 sample histogram (no background histogram) |
sample_alarm | AC12[8]; Compute alarm probability for foreground vs background |
time_slice | AC12[9]; Activate time slice system and dynamic alarming. Performs alarm computations 10 times per second; for portal monitors and backpacks. |
rs_485 | AC12[10]; Activate the RS-485 driver for long-distance serial communication. |
xpu | AC12[11]; Activate enhanced pile-up rejection algorithm in the FPGA; cf user's manual. |
amplitude | AC12[12]; Histogram pulse heights in mV, instead of pulse energies. Used during calibration, to select the maximum detectable energy. |
psd_on | AC12[13]; Activate the built-in perceptron for AI-powered pulse shape discrimination. |
psd_select | AC12[14]; 0→Split histogram with entries in the lower and upper half depending on how the perceptron classifies each event. 0→1 histogram the perceptron output itself (PSD value), to judge the pulse shape dicrimination power of the perceptron. |
psd_reject | AC12[15]; 0→Off; 1→ in combination with psd_on=1: Only histogram the energies of those events whose PSD value falls into the left half of the PSD spectrum; cf psd_select=1. |
lm_buffer | AC12[16]; 0 or 1. Select the active list mode buffer. |
The arm_ctrl user dictionary is used to pack and unpack bit fields.
arm_ctrl — user entries, Run Action AC13 |
Register number and field name | Description |
clear_statistics | AC13[0]; Clears the time and event counter of the targeted bank. Targeted bank is active_bank if two_bank=0. It is the inactive bank if two_bank=1. |
clear_histogram | AC13[1]; Clears the histogram of the targeted bank. Targeted bank is active_bank if two_bank=0. It is the inactive bank if two_bank=1. |
clear_alarm | AC13[2]; Clears a persisent alarm output on trigger_out; eg from a portal monitor alarm. |
clear_logger | AC13[3]; Reset the logger to begin recording data at index 0. |
clear_wall_clock | AC13[4]; Reset the ARM processor wall clock to zero. |
clear_trace | AC13[5]; Clear the FPGA wall clock used to measure event arrival times for list mode data acquisition. |
ut_run | AC13[6]; Force a new trace acquisition, not waiting for a trigger; untriggered run. |
clear_listmode | AC13[7]; Reset the listmode event counter to zero. Note that the other data entries in the list mode buffer are not set to zero. |
clear_lmtime | AC13[8]; Clear the FPGA wall clock used to measure event arrival times for list mode data acquisition. |
All actions encoded in AC13 are automatically set to zero after use by the ARM processor. Client software must be careful not to re-issue the actions unintentionally.
|