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).

../_images/level-trigger.svg

Figure 2.8: Example for level triggering.

../_images/edge-trigger.svg

Figure 2.9: Example for edge triggering.

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).

../_images/4ChannelTriggering.svg

Figure 2.10: Triggering in 4-channel mode at 8 samples per clock cycle.

../_images/2ChannelTriggering.svg

Figure 2.11: Triggering in 2-channel mode at 16 samples per clock cycle.

../_images/1ChannelTriggering.svg

Figure 2.12: Triggering in 1-channel mode at 32 samples per clock cycle.

2.3.2 Trigger inputs

A trigger_block can use several input sources:

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.

../_images/analog-trigger.png

Figure 2.13: From the ADC inputs, a trigger unit creates an input flag for the trigger matrix. Each digitizer channel (A, B, C, D) has two trigger units.

../_images/DigitalInput.svg

Figure 2.14: The digital inputs TDC0, TDC1, TDC2, TDC3, TRG, and GATE have simpler trigger units.

../_images/triggermatrix-Ndigo6G-12.svg

Figure 2.15: Trigger Matrix. The eight trigger signals from the four analog channels and the trigger signals from the six digital channels (four TDC channels, TRG, GATE) can be combined to create a trigger input for each trigger block. Additionally, four gate signals (see Figure 2.16) can be used to suppress trigger during configurable time frames.

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.