High resolution time-to-digital converter
- Jitter Measurement
- Use cases
- Coding Examples
quTAG HR – High Resolution Variants
The quTAG HR is designed for high resolution measurements with up to 16 channels. These time taggers of the quTAG family are available with a wide range of timing resolution and channel numbers. Enhanced timing jitter values can be achieved by interconnecting input channels via software.
The table below shows all quTAG HR variants with number of input channels and varying timing RMS jitter by interconnectiong channels in picoseconds.
|Time correlated single photon counting|
|Digital resolution 1 ps|
|Timing jitter down to 2.3 ps RMS / 5.4 ps FWHM|
|Sustained event rate 100 M tags/second|
|Up to 16 high resolution stop channels|
quTAG HR Variants
|8 Input Channels||6 ps|
|8 Input Channels||4 ps|
|16 Input Channels||6 ps|
quTAG HR Features
|+ Clock Input|
The quTAG can be synchronized to an external clock to allow more precise long-term accuracy.
|+ Synchronization of devices|
This extension allows to synchronize up to 10 quTAGs. Up to 160 equal stop channels of HR version are offered – all sharing the same clock.
|+ Start-channel as input|
The start channel can be converted to another stop channel, allowing one more equal input channel.
|+ Virtual channels & filters|
|+ Marker inputs|
|+ Divider for stop channels|
This option allows you to enable the divider on all stop channels. This allows higher frequency periodic signals to be recorded.
|+ Output channels|
Software features for quTAG HR
|Histograms||Create start-stop & start-multistop histograms|
|Lifetime||The software enables analyzing lifetime measurements on the fly.
It calculates histograms and fits exponential decreases.
|Correlations||This software extension is intended for calculating the correlation function, as needed for example in Hanbury Brown-Twiss experiments or FCS.|
|Virtual channels & filters||The device allows to enable virtual channels or user-defined filters. The filtering is based on hardware and happens inside the device to save USB bandwidth.|
|GUI||Web-application on the PC or via WIFI from quTAG,
Daisy – generic Data Analysis and Imaging System
|User interfaces||command line & libraries in C, Python, Matlab, LabVIEW|
In order to measure the jitter, we generate an electrical pulse with steep edges. This pulse gets split into two by a power splitter and sent into two different inputs of the quTAG (i.e. start and stop-X or stop-X and stop-Y).
Then we use the quTAG software to generate a startstop-histogram. We fit a Gaussian function to this histogram and determine RMS and FWHM. The single channel jitter corresponds to σ / √2 from this two-channel measurement, assuming equal Gaussian contributions from both signals. The FWHM can be obtained by the standard deviation with the relation FWHM = 2 √2 ln 2 σ ≈ 2.35 σ.
- Evaluating a Stand-Alone Quantum-Dot Single-Photon Source for Quantum Key Distribution at Telecom Wavelengths
T. Kupko et al., arXiv preprint (2021)
- Noiseless photonic non-reciprocity via optically-induced magnetization
X. Hu et al., Nature (2021)
- Time-of-arrival detection for time-resolved scanning transmission X-ray microscopy imaging
S. Finizio et al., Journal of Synchrotron Radiation (2020)
- Adaptive single photon detection under fluctuating background noise
Z. Chen et al., OSA Publishing (2020)
- Tools for the performance optimization of single-photon quantum key distribution
T. Kupko et al., Nature (2020)
- Hong-Ou-Mandel interference between independent III-V on silicon waveguide integrated lasers
C. Agnesi, et al., OSA Publishing (2019)
- Sub-ns timing accuracy for satellite quantum communications
C. Agnesi et al., OSA Publishing (2019)
- Experimental demonstration of quantum advantage for one-waycommunication complexity
N. Kumar et al., arXiv preprint (2018)
- A photonic quantum walk with a four-dimensional Coin
L. Lorz et al., arXiv preprint (2018)
- Towards quantum communication from global navigation satellite system
L. Calderaro et al., IOP Publishing (2018)
Laser trigger as Start, Single Quantum SNSPD as Stop
We measured a time difference histogram between the trigger pulse from the laser as start and the SQ detector signal as stop.
This is basically the setup for a Fluorescence Lifetime Imaging (FLIM) measurement..
Whole system response function (blue, measured with quTAG): Timing jitter 17.8 ps RMS, 35.9 ps FWHM
For comparison: Detector response function (red, measured with fast oscilloscope): Timing jitter 14.5 ps RMS, 26.1 ps FWHM.
One SQ Detector as Start, another one as Stop
Here, we measured the time difference histogram between one of the two SQ SNSPDs as Start and the other one as Stop pulse.
Timing jitter of 2 SQ SNSPDs measured with the quTAG (blue): 21.6 ps RMS, 45.6 ps FWHM.
Overview of quick and easy Python Coding Examples
Python is a popular coding language for labs and institutes. Therefore, qutools created a Python file to wrap all the DLL or SO (Win/Linux) functions to gain quick and easy control of the hardware.
The following list shows the different examples using this wrapper. An explanation is added to each code.
- Retrieve Countrates and Coincidences
- Live Plotting of Countrates with matplotlib
- Create and retrieve a histogram of two channels
- Live Plotting of the histogram with a changing channel delay
- Retrieve timestamps
- Write timestamps to a file on the PC
- Change different settings of the quTAG
|Download quTAG HR Python Examples||07/2022||0.4 MB||zip|
|quTAG software manual V1.5.0 – Example explanation||10/2019||0.3 MB|
First Coding Example: How to retrieve Countrates
The following codes show how to quickly connect to the quTAG via Python. The quTAG.py file wraps all DLL functions to get simple access via your own code.
In the first example qutag-GetCoincCounter-starter_example.py we are retrieving countrates and coincidences of the quTAG and its input channels.
# quTAG Python example codes based on the quTAG Python wrapper. # Run with Python 3.7.3 (32bit), numpy-1.13.3 and Windows 7 (64bit) # Import the python wrapper which wraps the DLL functions. # The wrapper should be in the same directory like this code in the folder '../QUTAG-V1.5.0/userlib/src'. try: import QuTAG except: print('Time Tagger wrapper QuTAG.py is not in the search path.') #Initialize the quTAG device qutag = QuTAG.QuTAG() # Set the exposure time (or integration time) of the internal coincidence counters in milliseconds, range = 0...65535 qutag.setExposureTime(1000) # 1000 ms exposure time # Give some time to accumulate data time.sleep(1) # 1 second sleep time with 100ms exposure time would give ~10 times data we don't get # Now let's retrieve the most recent values of the built-in coincidence counters from quTAG. # The array contains count rates for all 5 channels and rates for coincidences of events detected on different channels. Events are coincident if they happen within the coincidence window (qutag.setCoincidenceWindow). # The coincidence counters are not accumulated, i.e. the counter values for the last exposure (see setExposureTime ) are returned. data,updates = qutag.getCoincCounters() print('Updates since last call: ', updates, '| latest Data: ', data) # updates Output: Number of data updates by the device since the last call. Pointer may be NULL. # data Output: Counter Values. The array must have at least 31 elements. # The Counters come in the following channel order with single counts and coincidences: # 0(5), 1, 2, 3, 4, 1/2, 1/3, 2/3, 1/4, 2/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/2/3, 1/2/4, 1/3/4, 2/3/4, 1/2/5, 1/3/5, 2/3/5, 1/4/5, 2/4/5, 3/4/5, 1/2/3/4, 1/2/3/5, 1/2/4/5, 1/3/4/5, 2/3/4/5, 1/2/3/4/5 ### see 'tdcbase.h' file reference for more info: function TDC_getCoincCounters(Int32 *data, Int32 *updates)
Datasheet & Manuals
|quTAG HR datasheet||07/2022||0.3 MB|
|quTAG HR manual||08/2021||1.1 MB|
|quTAG software manual V1.5.0||10/2019||0.3 MB|
|quTAG brochure||02/2022||2.4 MB|
|quTAG & Matlab technical note||01/2021||0.3 MB|
Software quTAG HR
|Python examples||07/2022||0.4 MB||zip|