2.3 Trigger Setup¶
The Ndigo6G-12 records analog waveforms using zero suppression. Whenever a relevant waveform is detected, data is written to an internal FIFO memory.
Each ADC channel has two trigger units. These can be configured independently
(e.g., one unit could trigger on rising edges, the other on falling).
They are configured with
config.trigger
.
Each ADC channel has a corresponding trigger block that determines whether
data is written to the internal FIFOs. The trigger blocks are configured with
config.trigger_block
.
Each trigger block can take any amount of trigger units as a source (for
details, see ndigo6g12_trigger_block::sources
or
Section 2.3.2),
thus, enabling sophisticated trigger setups.
2.3.1 Trigger configuration¶
Users can specify a threshold
and can choose whether triggering is used
whenever incoming data is below or above the threshold (level triggering,
see Figure 2.8) or
only if data exceeds the threshold (edge triggering, see
Figure 2.9).
A gate length
can be set to
extend the recording window by multiples of 5 ns.
Furthermore, a precursor
window can be specified, causing the trigger unit to write data to
the FIFO (precursor
\(\times\) 5 ns) before the trigger event.
When edge triggering is used, all packets have the same length of
(precursor
+ length
+ 1)-cycles of 5 ns.
For level triggering, packet length is data dependent.
If retrigger
is enabled and
the trigger conditions are fulfilled during the recording of the postcursor,
the recording window is extended (see Figure 2.7).
2.3.2 Trigger inputs¶
A trigger_block
can use several
input sources
:
The eight trigger decision units of all four ADC channels (Figure 2.13)
The four TDC and the two digital control inputs (Figure 2.14)
A function trigger providing random or periodic triggering (see Auto Triggering Function Generator).
Trigger inputs from the above sources can be concatenated using a logical OR
by setting the appropriate bits in the bitmask
(see ndigo6g12_trigger_block::sources
).
See also Figure 2.15.
2.3.3 Gating trigger events¶
Triggers can be fed into the
gating_blocks
as outlined in
Chapter 2.4 and Figure 2.16.
In return, the
gating_blocks
can be used to block writing data to the FIFO. That way, only
zero-suppressed data occurring when the selected gate is active is transmitted.
This procedure reduces PCIe bus load even further.
Which
gating_block
is used to block a particular
trigger_block
is configured
with ndigo6g12_trigger_block::gates
.