This device is a Pulse generator, which generates pulses, which is used for triggering different equipements, following is the python code used in the lab, to connect to it remotely, given your system is in lab network .
pulser
User manual of this pulse generator can be found here.
While operating the instrument 2 key points should be considered:
Also not, there are 2 modes for controlling this insturment:
There are overall 3 modes of triggering available:
Each of these are explained in a bit more detail below:
This as follows:
This is as follows:
When enable, it can provide advanced functionality like:
Trigger Holdoff:
It sets the minimum allowed time between successive triggers. For example, if the trigger holdoff is set to 10 µs, then successive triggers will be ignored until at least 10 µs have passed since the last trigger. It can also be used to trigger the DG645 at a sub-multiple of a known input trigger rate.
Trigger Prescaling:
Trigger prescaling enables the DG645 to be triggered synchronously with a much faster source, but at a sub-multiple of the original trigger frequency. For example, the DG645 can be triggered at 1 kHz, but synchronously with a mode locked laser running at 80 MHz, by prescaling the trigger input by 80,000.
Lastly, the DG645 contains a separate phase register for each output prescaler that determines the phase of the prescaler output relative to the other prescaled outputs. For example, if both the AB and CD prescalers are set to 100 and their phase registers to 0 and 50, respectively, then AB and CD will both run at 10 Hz, but CD’s output will be enabled 50 delay cycles after AB’s output.
This is a type of output mode, which generates a burst of N delay cycles on each trigger.
Note: The trigger which generates the burst may come from any of the DG645 trigger modes.
The front panel BNC connector has 5 output channels: T0, AB, CD, EF,GH. Internally, the last 4 channels are basically “user-defined time events”, that is, A, B, C, D, E, F, G, H, having a range of 2000s and precision of 5ps. These timing events are paired, to make output pulse corresponding to each channel name.
T0, is asserted at t=0 and remains asserted long after trigger hold-off or 25ns (which ever is longer)
# SRS DG645 Digital Delay Generator
from qcodes.instrument_drivers.sqdlab.DG645 import DG645
pulser = DG645('pulser', 'TCPIP::<IP ADDRESS>::INSTR')
pulser.snapshot(update=True)
Note that, all these parameters are Channel specific , that is, they can set differently for each of the four Channel mentioned above.
pulser.AB.amplitude(2.0)
pulser.AB.offset(0.0)
pulser.AB.delay(2.73e-7)
pulser.AB.duration(100e-9)
pulser.advanced_trigger(True)
pulser.AB.prescale_factor(1)
pulser.AB.prescale_phase(0)
Note: These are set Independent of Channel.
This is given in volts, can be between -3.5V to 3.5V.
pulser.trigger_level(0.)
This can be internal or external.
pulser.trigger_source('External rising edge')
This is given in seconds.
pulser.trigger_holdoff(0.)
Outputs inhibited when the external inhibit input is high.
The values are as follows (strings):
pulser.trigger_inhibit('triggers')
pulser.burst_mode()
pulser.burst_count()
pulser.burst_delay()
pulser.burst_period()
# SRS DG645 Digital Delay Generator
from qcodes.instrument_drivers.sqdlab.DG645 import DG645
pulser = DG645('pulser', 'TCPIP::192.168.1.120::INSTR')
# Channel Setting:
pulser.AB.amplitude(2.0)
pulser.AB.offset(0.0)
pulser.AB.prescale_factor(1)
pulser.AB.prescale_phase(0)
pulser.AB.delay(2.73e-7)
pulser.AB.duration(100e-9)
# Advanced Trigger mode:
#pulser.advanced_trigger(True)
#pulser.trigger_holdoff(0.)
#pulser.trigger_inhibit('triggers')
#pulser.trigger_level(0.)
#pulser.trigger_prescale_factor(200)
#pulser.trigger_source('External rising edge')
#pulser.error()
# Burst Mode setting:
#pulser.burst_mode()
#pulser.burst_count()
#pulser.burst_delay()
#pulser.burst_period()
pulser.AB.snapshot(update=True)