Timetag Sequencers#
Trigger sources#
Edge detection based triggers#
When acquiring a digital signal with a QTM module, any rising or falling edge detected during the acquisition window can be mapped to the trigger network. Forwarding signals to the trigger network can be carried out in parallel with the acquisition procedure, and does not require closing of the window.
To send triggers based on edge detection:
Enable trigger forwarding using the
IOChannel.forward_trigger_en()parameter.Select a trigger address to which a trigger is sent on the network using the
IOChannel.forward_trigger_address()parameter.Set the polarity of the incoming signal from which a trigger will be sent to the network, i.e. whether a rising or falling edge is used to send a trigger. This is done using the
IOChannel.forward_trigger_mode()parameter.
Note
Trigger forwarding may only be used with signals with a frequency lower than that set by the trigger network latency (252 ns).
Example: trigger based event counting
In this example, trigger forwarding by a timetag sequencer (connected to module.io_channel0) based on a rising edge detection will be used to close an acquisition window. This enables a single event detection to be captured in one acquisition window. This efficiently utilizes the full bin memory of a sequencer store a timetag for every event that is detected. This can enable one to efficiently gather a large number of timetags from a photon source if the photon flux that has an event separation greater than the trigger network latency.
Here are the settings required:
module.io_channel0.mode("input")
module.io_channel0.analog_threshold(THRESHOLD)
module.io_channel0.forward_trigger_en(True)
module.io_channel0.forward_trigger_mode("rising")
module.io_channel0.forward_trigger_address(1)
module.io_channel0.binned_acq_time_ref("sequencer")
module.io_channel0.binned_acq_time_source("first")
module.io_channel0.binned_acq_on_invalid_time_delta("record_0")
The program for sequencer 0:
move 0, R0
move {acq_reps},R1
move 0, R2
set_scope_en 1
wait_sync 4
set_time_ref
loop:
acquire_timetags 1, R0, 1, R2, 4
wait_trigger 1, 4
acquire_timetags 1, R0, 0, R2, 4
add R0, 1, R0
nop
loop R1, @loop #Repeat loop until R1 is 0
stop
Truth table based triggering#
The truth table allows users to define a set of conditions that map the outcome of thresholded acquisitions, from up to 4 channels, to specific trigger network addresses when those conditions are met.
To use the truth table to send triggers on the network:
The truth table needs to be enabled using the
IOChannel.truth_table_en()parameter.The conditions that will determine the outcome of the truth table will need to be specified using the
IOChannel.truth_table_data()parameter.Enable mapping of the thresholded acquisition to the trigger address using the
IOChannel.forward_trigger_en()parameter.