Draft: FELIX FW Trigger Variable Writing
Relating to the issues brought up in JIRA ticket FLXUSERS-752, and outlined in presentation, a new set of FW encoding registers have been introduced to the FELIX FW. These registers are as follows, as outlined in the ticket:
[rluz@felix01 felixstar]$ flx-config -d2 list | grep ENCODING_ITKPIX_TRIGGER_GENERATOR
0x3ae0 [RW 28] ENCODING_ITKPIX_TRIGGER_GENERATOR_NO_INJECT 0x0 Controls the trigger generator for ItkPix
0x3ae0 [RW 27] ENCODING_ITKPIX_TRIGGER_GENERATOR_EDGE_MODE 0x1 Controls the trigger generator for ItkPix
0x3ae0 [RW 26:22] ENCODING_ITKPIX_TRIGGER_GENERATOR_EDGE_DELAY 0x00 Controls the trigger generator for ItkPix
0x3ae0 [RW 21:14] ENCODING_ITKPIX_TRIGGER_GENERATOR_EDGE_DURATION 0x14 Controls the trigger generator for ItkPix
0x3ae0 [RW 13:06] ENCODING_ITKPIX_TRIGGER_GENERATOR_TRIG_DELAY 0x3a Controls the trigger generator for ItkPix
0x3ae0 [RW 05:00] ENCODING_ITKPIX_TRIGGER_GENERATOR_TRIG_MULTIPLIER 0x10 Controls the trigger generator for ItkPix
This merge introduces a system to write the corresponding variables to these registers dynamically during a scan. This is introduced by adding in a new set of functions to access the variables from the trigger loop of a front-end, making them visible to the TXCore function in a controller. In order to add this, these functions needed to be introduced to all front-ends/controllers, to ensure that all systems remain operable under the change. The implementation of these functions is in the FelixTxCore.cpp
file, in which the values are set to the corresponding registers when running a FW mode trigger.
Current issues:
- Though this currently works for digital scans on an Rd53b SCC, it doesn't seem to work for analog scans on Rd53b SCC. I tried running this independently, then separately by first sourcing the external calTrig setting script for an analog scan, and neither option produced a scan without tens of thousands of pixels failing. Note that the new FW method of setting the trigger sequence internally in FELIX FW should not rely at all on these external trigger sequence settings, however as a debugging method this test did not prove to change the results.