---
title: "Can I do time tagging with the OPX platform?"
date: "2022-03-02T11:23:19+00:00"
modified: "2025-07-07T12:51:01+00:00"
url: "https://www.quantum-machines.co/faq/can-i-do-time-tagging-with-the-opx/"
description: "Learn how OPX enables precise time‑tagging for quantum experiments with high-resolution timestamps and real‑time hybrid control orchestration."
---

# Can I do time tagging with the OPX platform?

Yes, and much more! Time tagging and TTL counting are key elements of many quantum computing platforms (e.g., NV centers, optically addressable and quantum photonic systems, and AMO) and can be performed with [OPX ](https://www.quantum-machines.co/products/opx/)– QM’s advanced quantum control platform . Signals coming out of single-photon counting modules (SPCMs, or similar) can be directly connected to the OPX+/OPX1000 inputs, and tagging/counting is then performed natively within the Pulse Processing Unit. OPX+/OPX1000 users employ this technique for a great deal of different applications, such as optical quantum sensing, communication, and quantum information processing. As such, counting &amp; tagging are key components of our solution.

The OPX standard operational mode time-tags events with **1 ns timing resolution** with **1 ns dead time**, for each of the analog input channels. Additionally, a high-resolution time tagging mode is available, pushing the resolution down to a few tens of picoseconds (**~50ps**) with increased (&lt;100ns) deadtime. Check out the [newest features of the OPX](https://www.quantum-machines.co/blog/your-advanced-quantum-control-just-got-upgraded/)!

A time-tag is generated when a voltage trigger edge is detected at one of the analog inputs. The trigger edge can be defined in configuration and can be a simple threshold or an arbitrarily complicated dynamic multi-threshold, polarity, and derivative check. This allows you to easily implement complicated sequences spending virtually no time in setting up your time tagging configuration. Then, the time tagging is done easily within a measure command in a single line:

```
times = declare(int, size=10)
counts = declare(int)
measure([pulse],[element],[stream], time_tagging.analog([times],[duration],[counts])
```

This approach is universal and is fully embedded in the real-time logic of the PPU. Therefore, a time tagging command will allow for results to be used in real-time during an experiment, e.g. setting dynamic thresholds, performing estimations on the fly, or for conditional triggers. This could mean sending out a trigger pulse to a laser only if and when a signal is time-tagged and recognized as satisfying a certain threshold. It could also mean performing Bayesian estimation on a vector of tags, updating it while new tags come in. This is done with the smallest latency possible (on the order of ~100 ns for the simplest case), as all computation, tagging, and decision making is done in real-time on the FPGA-based pulse processor.

The ability to write complex sequences with only a few lines of code while retaining the full performance of the FPGA ensures ease of use and the fastest time to result. Coding a dynamic Bayesian estimation protocol on a real experimental setup just became a first-year programming exercise. This makes life in the quantum photonic computing (NV center qubits and more) much simpler.

In the QOP framework, time tagging is one of many tools that can be used for real-time branching, computation, and control. All of the analog inputs of the OPX+ allow for flexible and independent time tagging capabilities, while our next-generation product high-density quantum control platform, the [OPX1000](https://www.quantum-machines.co/blog/welcome-opx1000/), will offer many more inexpensive digital input channels, to be used for the experiments with many digital signals involved.
