Time Tagger User Manual Logo
Documentation as pdf
  • Getting Started
    • Get familiar with your Time Tagger
    • Graphical User Interfaces
      • Time Tagger Lab
      • Web Application
    • Programming languages
      • Python
      • LabVIEW (via .NET)
      • MATLAB (wrapper for .NET)
      • Wolfram Mathematica (via .NET)
      • .NET
      • C#
      • C++
        • Debug and Release Builds
        • Code Sanitizers
  • Installation instructions
    • Windows
      • Installation
    • Linux
      • Installation
      • Known issues
      • Time Tagger with Python
      • Time Tagger with C++
    • Hardware license upgrades
      • Time Tagger Lab
      • Web Application
  • Tutorials
    • Getting started with Time Tagger Lab
      • Selecting a device on the home screen
      • Configuring input channels
        • Trigger level
        • Signal delay
        • Dead time
        • Event divider
        • Conditional filter
      • Performing measurements
        • The measurement view
        • Measurements list
        • Chart view
        • Properties
      • Processors and virtual channels
        • Processor tips and tricks
        • Virtual channel naming
      • Saving measurement data
        • Export data / trace data
        • Export chart
      • Reference clock
      • Network server
      • Troubleshooting
        • Overflows
        • Log warning messages
    • Measuring Coincidences
      • Time Tagger configuration
      • Coincidence-counting
      • Delay adjustment for coincidence detection
      • Exclusive coincidences using Combinations virtual channel
      • Coincidence-counting vs Correlation Measurement
    • Confocal Fluorescence Microscope
      • Time Tagger configuration
      • Intensity scanning microscope
      • Fluorescence Lifetime Microscope
      • Alternative pixel trigger formats
        • Pixel pulse width defines the integration time
        • Pixel pulse indicates the pixel start
        • FLIM with non-periodic pixel trigger
        • Line pulse but no pixel pulses
    • Optically Detected Magnetic Resonance
      • Creation of optical and microwave pulse patterns
      • Signal generation and detection
      • Sweeping modes
      • ODMR contrast
    • Remote Synchronization of Time Taggers
      • Establishing a common time base across distributed locations
      • Starting a Time Tagger Server at each location
      • Connecting to multiple Time Tagger Servers over the network
      • Accessing individual servers
      • Verification of the synchronization technology using a single Time Tagger
      • Measuring synchronization precision across multiple Time Taggers
    • Remote Time Tagger with Python
      • Sharing a Time Tagger with Network Time Tagger
      • Remote control of a Time Tagger with Pyro
      • Remote procedure call
      • Initial setup
      • Minimal example
      • Creating the Time Tagger
      • Measurements and virtual channels
      • Working example
      • What is next?
  • Synchronizer
    • Overview
    • Key applications
      • Crosstalk elimination
      • High transfer rate
      • Multi-room experiment
      • Synchronizer with a single Time Tagger
    • Requirements
    • Cable connections
      • Using an external reference clock
    • Software and channel numbering
      • Incomplete cable connections
      • Buffer overflows
    • Limitations
      • Conditional filter
      • Internal test signal
    • Status LEDs and troubleshooting
  • Hardware
    • Operating conditions
    • Input channels
      • Electrical characteristics
      • Configurable input termination - Time Tagger X only
      • High Resolution Mode
    • Data connection
    • LEDs
      • Time Tagger X
      • Time Tagger Ultra
      • Time Tagger 20
    • Test signal
    • Synthetic input delay
    • Synthetic dead time
    • Event divider
    • Conditional Filter
    • Bin equilibration
    • Overflows
    • External Clock Input
    • Synchronization signals
    • FPGA link
    • General purpose IO (GPIO)
    • 19-inch rack mount
  • Software Overview
    • Graphical User Interfaces
    • Precompiled libraries and high-level language bindings
    • C++ API
  • Application Programming Interface
    • Examples
      • Measuring cross-correlation
      • Using virtual channels
      • Using multiple Time Taggers
      • Using Time Tagger remotely
    • The TimeTagger Library
      • Units of measurement
        • timestamp_t
      • Channel numbers
        • channel_t
      • Unused channels
      • Constants
        • CHANNEL_UNUSED
      • Enumerations
        • AccessMode
        • ChannelEdge
        • CoincidenceTimestamp
        • FpgaLinkInterface
        • GatedChannelInitial
        • Resolution
        • Type
        • UsageStatisticsStatus
      • Functions
        • createTimeTagger()
        • createTimeTaggerVirtual()
        • createTimeTaggerNetwork()
        • getTimeTaggerServerInfo()
        • freeTimeTagger()
        • scanTimeTagger()
        • scanTimeTaggerServers()
        • setLogger()
        • setTimeTaggerChannelNumberScheme()
        • getTimeTaggerChannelNumberScheme()
        • mergeStreamFiles()
        • getVersion()
        • setUsageStatisticsStatus()
        • getUsageStatisticsStatus()
        • getUsageStatisticsReport()
      • Helper classes
        • ChannelGate
    • TimeTagger classes
      • General Time Tagger features
        • TimeTaggerSource
        • TimeTaggerBase
      • Time Tagger
        • TimeTaggerHardware
        • TimeTagger
      • The TimeTaggerVirtual class
        • TimeTaggerVirtual
      • The TimeTaggerNetwork class
        • TimeTaggerNetwork
        • TimeTaggerServer
      • Additional classes
        • ReferenceClockState
        • SoftwareClockState
    • Virtual Channels
      • Available virtual channels
      • Common methods
        • VirtualChannel.getChannel()
        • VirtualChannel.getChannels()
      • Coincidence
        • Coincidence
      • Coincidences
        • Coincidences
      • Combinations
        • Combinations
      • Combiner
        • Combiner
      • ConstantFractionDiscriminator
        • ConstantFractionDiscriminator
      • DelayedChannel
        • DelayedChannel
      • EventGenerator
        • EventGenerator
      • FrequencyMultiplier
        • FrequencyMultiplier
      • GatedChannel
        • GatedChannel
      • TriggerOnCountrate
        • TriggerOnCountrate
    • Measurement Classes
      • Available measurement classes
      • Common methods
        • IteratorBase
      • Event counting
        • Countrate
        • Counter
        • CountBetweenMarkers
      • Time histograms
        • StartStop
        • Histogram
        • HistogramLogBins
        • Histogram2D
        • HistogramND
        • Correlation
        • TimeDifferences
        • TimeDifferencesND
      • Fluorescence-lifetime imaging (FLIM)
        • FlimAbstract
        • Flim
        • FlimFrameInfo
        • FlimBase
      • Phase & frequency analysis
        • FrequencyStability
        • FrequencyCounter
        • PulsePerSecondMonitor
      • Time-tag-streaming
        • TimeTagStream
        • FileWriter
        • FileReader
        • Dump
        • Scope
        • Sampler
      • Helper classes
        • SynchronizedMeasurements
        • Custom Measurements
  • In Depth Guides
    • Software-Defined Reference Clock
      • Overview of synchronization concepts
        • Traditional hardware reference clock
        • Software-defined reference clock
      • Setting up the software-defined reference clock
      • Technical limitations
        • Input signal limitations
        • Resolution limitations
      • Advanced features
        • Emulating the Conditional Filter
        • Averaging of rising and falling edges
    • Conditional Filter
      • Example configurations
        • One trigger and one filtered channel
        • Multiple trigger-channels
        • Multiple filtered channels
        • Multiple trigger and filtered channels
      • Understanding the filtering mechanism
        • Terms
        • Processing stages
        • Consequences
      • Setup of the Conditional Filter
        • Control hardware delay compensation
        • Disable the Conditional Filter
    • Raw Time-Tag-Stream access
      • Dumping and post-processing
        • File Reader
        • Virtual Time Tagger
      • On-the-fly processing
        • TimeTagStream - high-level, lower performance
        • CustomMeasurement - low-level, higher performance
        • CustomVirtualChannel - modify the time tag stream - C++ only
        • IteratorBase - C++ only
    • Synchronization of the Time Tagger pipeline
    • FPGA link
      • Getting Started with SFP+
      • Using QSFP+
      • Modifying the reference design
  • Usage Statistics Collection
    • Contents of the usage statistics data
    • Ways of control
    • Time Tagger Lab diagnostics
  • Safety & Compliance
    • Safety and compliance guidelines
      • Symbols
      • Operation environment
      • Electrostatic-sensitive device
        • Cleaning
      • Disposal and recycling
      • Contact, support and service
    • Time Tagger X safety notice
      • Electrical characteristics
      • Equipment installation
      • Maintenance and repair
        • Power cord
        • Safety fuse
  • Revision History
    • V2.18.2 - 07.05.2025
    • V2.18.0 - 23.04.2025
    • V2.17.6 - 21.01.2025
    • V2.17.4 - 17.07.2024
    • V2.17.2 - 02.07.2024
    • V2.17.0 - 22.04.2024
    • V2.16.2 - 28.06.2023
    • V2.16.0 - 05.06.2023
    • V2.15.0 - 06.03.2023
    • V2.14.0 - 23.12.2022
    • V2.13.2 - 22.11.2022
    • V2.12.4 - 09.11.2022
    • V2.12.2 - 04.10.2022
    • V2.12.0 - 01.09.2022
    • V2.11.0 - 22.04.2022
    • V2.10.6 - 16.03.2022
    • V2.10.4 - 23.02.2022
    • V2.10.2 - 31.12.2021
    • V2.10.0 - 22.12.2021
    • V2.9.0 - 07.06.2021
    • V2.8.4 - 04.05.2021
    • V2.8.2 - 26.04.2021
    • V2.8.0 - 29.03.2021
    • V2.7.6 - 26.04.2021
    • V2.7.4 - 19.04.2021
    • V2.7.2 - 22.12.2020
    • V2.7.0 - 01.10.2020
    • V2.6.10 - 07.09.2020
    • V2.6.8 - 21.08.2020
    • V2.6.6 - 10.07.2020
    • V2.6.4 - 27.05.2020
    • V2.6.2 - 10.03.2020
    • V2.6.0 - 23.12.2019
    • V2.4.4 - 29.07.2019
    • V2.4.2 - 12.05.2019
    • V2.4.0 - 10.04.2019
    • V2.2.4 - 29.01.2019
    • V2.2.2 - 13.11.2018
    • V2.2.0 - 07.11.2018
    • V2.1.6 - 17.05.2018
    • V2.1.4 - 21.03.2018
    • V2.1.2 - 14.03.2018
    • V2.1.0 - 06.03.2018
    • V2.0.4 - 01.02.2018
    • V2.0.2 - 17.01.2018
    • V2.0.0 - 14.12.2017
    • V1.0.20 - 24.10.2017
    • V1.0.6 - 16.03.2017
    • V1.0.4 - 24.11.2016
    • V1.0.2 - 28.07.2016
    • V1.0.0
    • Channel Number Schema 0 and 1
Time Tagger User Manual
  • In Depth Guides
  • FPGA link

FPGA link

Warning

The reference design and the on-the-wire format are not stable and will be subject to incompatible changes with further development.

The FPGA link output of the Time Tagger X allows you to connect an FPGA of your own design to the Time Tagger X via an Ethernet-based protocol and benefit from higher data throughput and lower latency compared to USB.

In a typical use case, you want to use either process tags at a higher rate than the USB connection to the PC allows or integrate the measurements into a test fixture and trigger events based on the measurements.

The SFP+ port on the Time Tagger X can be used either with a DAC or fiber transceivers to connect to your own FPGA. We recommend using the OpalKelly XEM8320 for your custom design.

The QSFP+ port on the Time Tagger X should be used with a fiber transceiver to connect to your own FPGA. We also recommend using the OpalKelly XEM8320 together with the SZG-QSFP for your custom design.

Note

We recommend using the SFP+ port unless the higher bandwidth is necessary.

Warning

There is currently no retransmission support so if corruption occurs during transmission, tags will be permanently lost. Please verify that your data link is of high quality or that tag loss can be tolerated.

Getting Started with SFP+

To enable the FPGA link output of the Time Tagger use enableFpgaLink(). Start by enabling the FPGA link on channel 1:

import TimeTagger
tagger = TimeTagger.createTimeTagger()
tagger.enableFpgaLink([1], "", TimeTagger.FpgaLinkInterface.SFPP_10GE)

To receive the tags, use our Time Tagger FPGA link reference design. Follow the instructions in the XEM8320 README to build the reference design. Connect the SFP+ port on the Time Tagger X to the SFP 1 port on the XEM8320 and load the bitstream on the XEM8320. You should now be able to observe the LED D1 on the XEM8320 matching the input state on channel 1 of the Time Tagger X.

To verify the link quality, activate a test signal as follows:

tagger.setTestSignal([1], True)

and reload the bitstream on the XEM8320. LED D6 should stay dark, indicating that the channel 1 events are arriving at the expected time without drops.

Using QSFP+

QSFP+ is quite similar to using SFP+. Start by enabling the FPGA link for the QSFP+ interface for input channel 1 of the Time Tagger X:

import TimeTagger
tagger = TimeTagger.createTimeTagger()
tagger.enableFpgaLink([1], "", TimeTagger.FpgaLinkInterface.QSFPP_40GE)

Similarly use our Time Tagger FPGA link reference design, but follow the instructions in the README for the QSFP+ interface.

Connect the QSFP+ port of the Time Tagger X with the SZG-QSFP module which has to be connected to Port E of the XEM8320. You should now be able to observe the LED D1 on the XEM8320 matching the input state on channel 1 of the Time Tagger X.

Note

Using the reference design with QSFP+ requires the Xilinx EF-DI-LAUI-SITE IP core license. We recommend starting with the SFP+ connection.

Warning

Only one output is active at the same time. Enabling the QSFP+ port disables the SFP+ port and vice-versa.

Modifying the reference design

Follow the instructions in Building you own design.

Previous Next

© Copyright Swabian Instruments.