General Design of the Firmware: Difference between revisions

From GammaSphere DAQ
Jump to navigation Jump to search
(Created page with "=== Event Data Nomenclature === Signal edges marked by discriminator firings are named ''discriminator hits''. *''Discriminator hits'' become accepted hits after passing thro...")
 
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
=== Event Data Nomenclature ===
== [[General Design of the Firmware]] ==
This section introduces mid-level descriptions for the topics of '''''Event Data Nomenclature''''', '''''Discriminator Modes''''', '''''Pileup Rejection''''', and '''''Diagnostic Counters'''''.
 
The ANL version of digitizer firmware implements ten independent data acquisition pipelines in ten channels.  Pileup detection & rejection is performed locally within the digitizer.  Selective readout of events is achieved using an external trigger system.  Waveform readout of all events is possible, with up to 1024 ADC samples per channel per event, although this will limit the event rate as the VME backplane reaches its bandwidth limit. A down-sampling mode allows readout of averaged samples where each waveform sample in the readout may be the average of 2n ADC samples, from 2 to 128 (n = 0, 1, 2,…, 6, 7).  Increased event rates are obtained by limiting the amount of waveform data read out per event.
 
Each '''channel pipeline''' consists of a series of memory buffers used for delay.  Discriminator logic recognizes edges within the input signal and causes data values to be sampled.  When sampling occurs, the timestamp value is saved.  The discriminator logic may be configured as either leading-edge (slope) or constant-fraction architecture, sensitive to either positive-only, negative-only or both edges.  The discriminator implements a programmable hold-off time to ensure that the discriminator fires only once per edge.  A discriminator firing captures timing and data sums simultaneously.  This data is buffered so that discriminator re-arms very quickly.  Firing rates over 1MHz can be supported, yet readout is limited to the IOCs total bandwidth ([[IOC Code Design]]).  No information reduction occurs in pileup conditions due to the fast discriminator recovery time.
 
All sampled values and sums are formatted into an '''event header''' that is followed by a programmable number of waveform samples.  The header contains various fields, including the timestamp of the event, the timestamp of the last time the discriminator of that channel fired, the timestamp of the peak, energy information, plus some energy/time information carried over from the previous discriminator firing.  Flag bits provide useful diagnostics.  The waveform data contains the raw ADC samples of the event, plus serialized timing mark bits that indicate when specific actions (discriminator, peak, timeouts, etc.) occurred and a 2nd bit that indicates whether samples are down-sampled (rescaled average of 2**n samples) or full-speed.
 
Energy measurement is performed in a double-correlated method timed relative to the moment the discriminator fires.  Programmable '''delay buffers''' positioned to measure ranges of time before (pre-rise) and after (post-rise) the discriminator logic have accumulators continuously calculating the sum of all the ADC samples within them.  When the discriminator fires these sums are saved and reported in the header.  These sums may then be used by ''open source user-maintained software'' (see the gitlab link in [[analysis codes]] for GEBSort) to calculate the energy (amplitude) of the input signal, with all necessary baseline and pole-zero correction information obtained from the other information in the header.  This method is arithmetically identical to the traditional “trapezoid” method but is optimized for high rates of discriminator operation.
 
Hits captured by the discriminator may optionally be rejected if pileup occurs.  If piled-up events are allowed the piling-on events may be read out in a variety of ways including extended and offset waveforms or just additional headers.  The reverse logic is also supported, in which only piled-up events are available for readout.  The firmware interfaces with an FPGA-based trigger system, also designed at ANL, to provide event selection based upon programmable trigger conditions.  Specific triggering modes appropriate to the different detector systems at ANL have been developed.
 
== Event Data Nomenclature ==
Signal edges marked by discriminator firings are named ''discriminator hits''.  
Signal edges marked by discriminator firings are named ''discriminator hits''.  
*''Discriminator hits'' become accepted hits after passing through pileup rejection logic.  
*''Discriminator hits'' become accepted hits after passing through pileup rejection logic.  
Line 8: Line 21:
# When using the trigger system, the digitizer may assert a ''Throttle Request'' to the trigger if its FIFO is getting too full.  This request, if honored, will result in the trigger suspending the issuance of trigger accept messages so that the readout system may drain the FIFO forming an automatic flow control mechanism to avoid ''dropped events''.
# When using the trigger system, the digitizer may assert a ''Throttle Request'' to the trigger if its FIFO is getting too full.  This request, if honored, will result in the trigger suspending the issuance of trigger accept messages so that the readout system may drain the FIFO forming an automatic flow control mechanism to avoid ''dropped events''.


==== Discriminator Modes ====
=== Discriminator Modes ===
The firmware supports either ''leading-edge'' or ''constant-fraction'' discriminator logic, independently selected per channel.  In leading-edge mode the operation is controlled by a delay value ‘d’ and a threshold such that the discriminator fires if the difference between sample X(n) and sample X(n-d), after some filtering, is greater than the threshold.  In constant-fraction mode, the user specifies a fraction value along with the same timing parameter ‘d’; the discriminator logic continuously calculates [X(n)*fraction] – X(d), and fires when this signal recrosses the initial value it had before the start of the edge.
The firmware supports either ''leading-edge'' or ''constant-fraction'' discriminator logic, independently selected per channel.  In leading-edge mode the operation is controlled by a delay value ‘d’ and a threshold such that the discriminator fires if the difference between sample X(n) and sample X(n-d), after some filtering, is greater than the threshold.  In constant-fraction mode, the user specifies a fraction value along with the same timing parameter ‘d’; the discriminator logic continuously calculates [X(n)*fraction] – X(d), and fires when this signal recrosses the initial value it had before the start of the edge.


A 2nd, separate copy of the leading-edge discriminator, with its own threshold, called the coarse discriminator is also provided.  The coarse discriminator fires well before the main discriminator does as it sees the edge earlier.  The output of this device is used to capture early energy sum values well before the edge occurs, for use in pole-zero and/or baseline correction software after data is collected.  Figure 3, later in this document, will explain these terms more fully.
A 2nd, separate copy of the leading-edge discriminator, with its own threshold, called the coarse discriminator is also provided.  The coarse discriminator fires well before the main discriminator does as it sees the edge earlier.  The output of this device is used to capture early energy sum values well before the edge occurs, for use in pole-zero and/or baseline correction software after data is collected.  Figure 3, later in this document, will explain these terms more fully.


==== Pileup and Discriminator Hold-Off ====
=== Pileup and Discriminator Hold-Off ===
When pileup rejection is '''on''', ''discriminator hits'' become ''accepted hits'' only if there is no pileup.
When pileup rejection is '''on''', ''discriminator hits'' become ''accepted hits'' only if there is no pileup.


When pileup rejection is '''off''', discriminator hits always become accepted hits, but differentiation between the first accepted hit and all that pile up upon it (a “pileup train”) is needed
When pileup rejection is '''off''', discriminator hits always become accepted hits, but differentiation between the first accepted hit and all that pile up upon it (a “pileup train”) is needed.
*The ''first'' hit of a pileup train is still called the ''accepted hit'' but all '''subsequent''' hits within a pileup train are called ''extended events''.
 
The ''pileup inspection time'' is the minimum separation between ''discriminator hits'' before pileup is declared to exist.
*The firmware can withstand a maximum of 16 events piled up on top of each other before the pileup inspection time of the first event expires.  Should this be exceeded the digitizer enters the ''General Error'' state and all data processing within the channel stops until the digitizer is reset.
 
Each channel implements a ''discriminator hold-off'' time that is the amount of time after a ''discriminator hit'' that the discriminator is blocked from marking another hit.  This is related to the rise time of the signal so that only one ''discriminator hit'' is marked per rise.
*If the user sets the ''discriminator hold-off'' time to a value less than the ''pileup inspection time'', the digitizer will enter the ''Pileup Too Short'' error state and must be manually reset with adjusted parameters.
 
=== Diagnostic Counters ===
A primary diagnostic by which operation of the firmware may be monitored is by per-channel counters that monitor discriminator hits, accepted hits, accepted events and dropped events.  Discriminator setup errors, or analog input issues, often result in no discriminator hits.  If pileup rejection is enabled the ratio of accepted hits to discriminator hits provides immediate feedback regarding the percentage of events that are piled up.  When using the “TTCL” mode (selection of events by the trigger) the ratio of accepted events to accepted hits may be used to determine if the trigger settings and/or digitizer trigger time windows are set appropriately.  Recording any dropped events at all typically indicates that '''the amount of waveform data requested per event is too large for the event rate''' and that the readout of the digitizer over VME can’t keep up with the input data.


''Go back to [[ANL Digitizer Firmware for Advanced Users]]''
''Go back to [[ANL Digitizer Firmware for Advanced Users]]''


''Go back to [[Digital Gammasphere and the SBX Upgrade]]''
''Go back to [[Digital Gammasphere Upgrade Project]]''

Latest revision as of 14:19, October 5, 2021

General Design of the Firmware

This section introduces mid-level descriptions for the topics of Event Data Nomenclature, Discriminator Modes, Pileup Rejection, and Diagnostic Counters.

The ANL version of digitizer firmware implements ten independent data acquisition pipelines in ten channels. Pileup detection & rejection is performed locally within the digitizer. Selective readout of events is achieved using an external trigger system. Waveform readout of all events is possible, with up to 1024 ADC samples per channel per event, although this will limit the event rate as the VME backplane reaches its bandwidth limit. A down-sampling mode allows readout of averaged samples where each waveform sample in the readout may be the average of 2n ADC samples, from 2 to 128 (n = 0, 1, 2,…, 6, 7). Increased event rates are obtained by limiting the amount of waveform data read out per event.

Each channel pipeline consists of a series of memory buffers used for delay. Discriminator logic recognizes edges within the input signal and causes data values to be sampled. When sampling occurs, the timestamp value is saved. The discriminator logic may be configured as either leading-edge (slope) or constant-fraction architecture, sensitive to either positive-only, negative-only or both edges. The discriminator implements a programmable hold-off time to ensure that the discriminator fires only once per edge. A discriminator firing captures timing and data sums simultaneously. This data is buffered so that discriminator re-arms very quickly. Firing rates over 1MHz can be supported, yet readout is limited to the IOCs total bandwidth (IOC Code Design). No information reduction occurs in pileup conditions due to the fast discriminator recovery time.

All sampled values and sums are formatted into an event header that is followed by a programmable number of waveform samples. The header contains various fields, including the timestamp of the event, the timestamp of the last time the discriminator of that channel fired, the timestamp of the peak, energy information, plus some energy/time information carried over from the previous discriminator firing. Flag bits provide useful diagnostics. The waveform data contains the raw ADC samples of the event, plus serialized timing mark bits that indicate when specific actions (discriminator, peak, timeouts, etc.) occurred and a 2nd bit that indicates whether samples are down-sampled (rescaled average of 2**n samples) or full-speed.

Energy measurement is performed in a double-correlated method timed relative to the moment the discriminator fires. Programmable delay buffers positioned to measure ranges of time before (pre-rise) and after (post-rise) the discriminator logic have accumulators continuously calculating the sum of all the ADC samples within them. When the discriminator fires these sums are saved and reported in the header. These sums may then be used by open source user-maintained software (see the gitlab link in analysis codes for GEBSort) to calculate the energy (amplitude) of the input signal, with all necessary baseline and pole-zero correction information obtained from the other information in the header. This method is arithmetically identical to the traditional “trapezoid” method but is optimized for high rates of discriminator operation.

Hits captured by the discriminator may optionally be rejected if pileup occurs. If piled-up events are allowed the piling-on events may be read out in a variety of ways including extended and offset waveforms or just additional headers. The reverse logic is also supported, in which only piled-up events are available for readout. The firmware interfaces with an FPGA-based trigger system, also designed at ANL, to provide event selection based upon programmable trigger conditions. Specific triggering modes appropriate to the different detector systems at ANL have been developed.

Event Data Nomenclature

Signal edges marked by discriminator firings are named discriminator hits.

  • Discriminator hits become accepted hits after passing through pileup rejection logic.
  • The firmware may run by itself (“internal accept all” mode) or with the trigger system (“TTCL mode”).
  1. When running in “internal” mode accepted hits immediately become accepted events that are later read out.
  2. When the trigger system is used accepted hits wait in a queue for a limited time. The accepted hits in this queue only become accepted events if selected by a trigger accept message from the trigger. Accepted hits not marked as accepted events fall off the end of the pipeline and are discarded.
  • The expectation is that all Accepted Events will be read out. Accepted Events that were unable to be copied into the output buffer due to FIFO backup or other readout interference are named dropped events.
  1. When using the trigger system, the digitizer may assert a Throttle Request to the trigger if its FIFO is getting too full. This request, if honored, will result in the trigger suspending the issuance of trigger accept messages so that the readout system may drain the FIFO forming an automatic flow control mechanism to avoid dropped events.

Discriminator Modes

The firmware supports either leading-edge or constant-fraction discriminator logic, independently selected per channel. In leading-edge mode the operation is controlled by a delay value ‘d’ and a threshold such that the discriminator fires if the difference between sample X(n) and sample X(n-d), after some filtering, is greater than the threshold. In constant-fraction mode, the user specifies a fraction value along with the same timing parameter ‘d’; the discriminator logic continuously calculates [X(n)*fraction] – X(d), and fires when this signal recrosses the initial value it had before the start of the edge.

A 2nd, separate copy of the leading-edge discriminator, with its own threshold, called the coarse discriminator is also provided. The coarse discriminator fires well before the main discriminator does as it sees the edge earlier. The output of this device is used to capture early energy sum values well before the edge occurs, for use in pole-zero and/or baseline correction software after data is collected. Figure 3, later in this document, will explain these terms more fully.

Pileup and Discriminator Hold-Off

When pileup rejection is on, discriminator hits become accepted hits only if there is no pileup.

When pileup rejection is off, discriminator hits always become accepted hits, but differentiation between the first accepted hit and all that pile up upon it (a “pileup train”) is needed.

  • The first hit of a pileup train is still called the accepted hit but all subsequent hits within a pileup train are called extended events.

The pileup inspection time is the minimum separation between discriminator hits before pileup is declared to exist.

  • The firmware can withstand a maximum of 16 events piled up on top of each other before the pileup inspection time of the first event expires. Should this be exceeded the digitizer enters the General Error state and all data processing within the channel stops until the digitizer is reset.

Each channel implements a discriminator hold-off time that is the amount of time after a discriminator hit that the discriminator is blocked from marking another hit. This is related to the rise time of the signal so that only one discriminator hit is marked per rise.

  • If the user sets the discriminator hold-off time to a value less than the pileup inspection time, the digitizer will enter the Pileup Too Short error state and must be manually reset with adjusted parameters.

Diagnostic Counters

A primary diagnostic by which operation of the firmware may be monitored is by per-channel counters that monitor discriminator hits, accepted hits, accepted events and dropped events. Discriminator setup errors, or analog input issues, often result in no discriminator hits. If pileup rejection is enabled the ratio of accepted hits to discriminator hits provides immediate feedback regarding the percentage of events that are piled up. When using the “TTCL” mode (selection of events by the trigger) the ratio of accepted events to accepted hits may be used to determine if the trigger settings and/or digitizer trigger time windows are set appropriately. Recording any dropped events at all typically indicates that the amount of waveform data requested per event is too large for the event rate and that the readout of the digitizer over VME can’t keep up with the input data.

Go back to ANL Digitizer Firmware for Advanced Users

Go back to Digital Gammasphere Upgrade Project