sqdlab.github.io

Documentation for Pulse Generator (SRS DG645)

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 .

Information & Parameters:

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:

Mode of Trigger

There are overall 3 modes of triggering available:

Each of these are explained in a bit more detail below:

Normal Trigger mode:

This as follows:

Single Shot Trigger mode:

This is as follows:

Line Trigger mode:

Advanced trigger mode:

When enable, it can provide advanced functionality like:


Burst mode:

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.


Channels & delay:

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)


Python Script for configuration is explained below:

Creating the object and connecting to DG645:

# SRS DG645 Digital Delay Generator
from qcodes.instrument_drivers.sqdlab.DG645 import DG645
pulser = DG645('pulser', 'TCPIP::<IP ADDRESS>::INSTR')

Save data (?):

pulser.snapshot(update=True)

Set Channel Parameters:

Note that, all these parameters are Channel specific , that is, they can set differently for each of the four Channel mentioned above.

For General Trigger Mode:

Set Channel Amplitude:

pulser.AB.amplitude(2.0)

Set Trigger Offset:

pulser.AB.offset(0.0)

Set Trigger Delay:

pulser.AB.delay(2.73e-7)

Set Trigger duration:

pulser.AB.duration(100e-9)

For Advanced trigger mode:

Enable advanced trigger mode:

pulser.advanced_trigger(True)

Set Prescale factor & Prescale Phase:

pulser.AB.prescale_factor(1)
pulser.AB.prescale_phase(0)

Set Trigger Parameters:

Note: These are set Independent of Channel.

Set Trigger Level:

This is given in volts, can be between -3.5V to 3.5V.

pulser.trigger_level(0.)

Set trigger source:

This can be internal or external.

pulser.trigger_source('External rising edge')

For Advanced trigger mode:

Set trigger hold-off:

This is given in seconds.

pulser.trigger_holdoff(0.)

Set trigger inhibition:

Outputs inhibited when the external inhibit input is high.

The values are as follows (strings):

 pulser.trigger_inhibit('triggers')

Configure Burst mode parameters:

Enable burst mode:

pulser.burst_mode()

Set burst count:

pulser.burst_count()

Set burst delay:

pulser.burst_delay()

Set burst period:

pulser.burst_period()

Sample python script:

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