Skip to content

Timing precision in 905 nm pulsed time-of-flight ranging: walk error, jitter and time-stamping architectures

Published: 20 min read20 references

In pulsed time-of-flight (TOF) ranging, 1 ps of timing error is roughly 0.15 mm of range error, so millimetre-level accuracy needs a timing chain well below a few tens of picoseconds. For 905 nm systems with linear (APD plus transimpedance) receivers, this note derives the three dominant error sources: noise-induced jitter, amplitude-dependent walk, and time-to-digital converter (TDC) quantisation and nonlinearity. It then builds a numerical error budget and shows how each line can be verified.

Measurement equation and sensitivity

With t the interval between pulse emission and echo detection:

R = c · t2 ng (1)

c = 299 792 458 m/s is exact by definition [17], and ng is the group index of air. Differentiating:

∂R/∂t = c/(2ng) ≈ 0.1499 mm/ps ⇒ 1 ns ≈ 14.99 cm, 10 ps ≈ 1.5 mm (2)

NIST lists a Ciddor phase index of 1.000271800 for dry air at 20 °C, 101.325 kPa and 633 nm [18], so using vacuum c reads long by about 2.7 × 10−4 · R, roughly 8 mm at 30 m. From the Ciddor dispersion formula, ng − 1 ≈ 2.74 × 10−4 at 905 nm and 20 °C (derived), still ≈ 8.2 mm at 30 m. A 1 °C or 0.4 kPa error shifts the index by 1 × 10−6, and pulsed applications need the group rather than the phase index [18].

Scope: linear detection with a 905 nm laser diode, avalanche photodiode (APD), transimpedance amplifier (TIA) and timing discriminator. SPAD receivers follow different statistics; one reports 2–3 cm single shot with ~100 ps FWHM pulses [20].

Single shot versus averaging

Scanning systems usually get one pulse per position, so single-shot precision is what matters [6]. Averaging N results on a static target with equal inter-sample correlation ρ gives:

Var(x̄) = σ2N [1 + (N − 1) ρ]  →  ρ σ2  (N → ∞) (3)

The σ/√N rule holds only for ρ = 0; any correlation (thermal delay drift, clock frequency error, TDC nonlinearity at a fixed phase) leaves a floor. Määttä and Kostamovaara report better than 15 ps single shot, below 0.1 ps after about 10 000 averages, and a periodic ±20 ps nonlinearity with a 40 ns period in the same TDC [7]. Systematic error averages out only if the interval is randomly phased against the clock.

Jitter: noise projected onto the time axis

A leading-edge discriminator fires when the signal crosses a fixed threshold Vth. With the signal locally linear and additive noise of rms σv, the crossing moves to first order by δt = −vn/(dV/dt), hence:

σt = σvdV/dt |V = Vth (4)

ORTEC gives this as “timing jitter = en/(dV/dt)” and warns that low-pass filtering usually cuts slope faster than noise [8]; independent contributions add in root-sum-square [9]. For a linear edge of amplitude A and 10–90 % rise time tr, the slope is about 0.8A/tr. With SNR = A/σv:

σt ≈ tr0.8 · SNR,    tr ≈ 0.35 / B (5)

The second is the Oulu group's pulse-preserving bandwidth criterion; for ~3 ns pulses it calls for about 250 MHz [6], i.e. tr ≈ 1.4 ns. Derived jitter is then ≈ 175 ps (26 mm) at SNR = 10, ≈ 88 ps (13 mm) at SNR = 20 and ≈ 9 ps (1.3 mm) at SNR = 200, matching published results in order: 120 ps (~1 μA) [4] and 250 ps [3] at the minimum detectable signal, and about 3 cm at SNR = 13 for a 230 MHz CMOS receiver [5].

More bandwidth shortens tr, but white noise grows as √B. The optimum just preserves the signal edge, whose lower limit the laser sets. The SPL PL90 datasheet gives 1 ns (typical) rise and fall times [15], and the current SPL PL90AT03 is specified at 75 W typical peak power at 25 A, 30 ns and 1 kHz [14]. Diodes in the 10–100 W class typically deliver 3–5 ns minimum pulse widths [6]. Set against false alarms, the threshold sits near five times the rms noise with a minimum-signal SNR of about 10 [6], so the weakest echo is timed at half its peak.

Walk: amplitude-dependent systematic delay

Pulses of identical shape but different amplitude cross a fixed threshold at different times; this shift is called walk (timing walk, time slewing) [8]. For an edge rising linearly from zero to peak in Tr (≈ tr/0.8):

tc(A) = Tr · Vth/A,    dtc/dA = −TrVth/A2   (A ≥ Vth) (6)

Walk between two amplitudes is Δt = TrVth(1/A1 − 1/A2). It is worst just above threshold [9] and scales with Tr, so a fast edge cuts both jitter and walk. Comparator “charge sensitivity” adds further delay for small, slow signals [9].

Vth t1 t2 walk = t2 − t1 A A/2 t
Figure 1. Two pulses of identical shape with amplitudes A and A/2. Their peaks coincide, yet a fixed threshold marks the larger one at t1 and the smaller one at t2. (Qualitative sketch.)

Dynamic range and saturation

For a beam-filling Lambertian target, received power scales roughly as Pr ∝ ρ/R2. A 1–30 m range span alone gives a factor of 900; reflectivity from 0.05 to 0.9 adds 18, about 1:16 000 in total (derived). Automotive use can reach 1:100 000, with uncompensated walk of tens of centimetres [6]. A simulated 1 μA–100 mA sweep gives 2.5 ns (37 cm): about 2 ns in the linear region (1–70 μA) and 600 ps in saturation [6]. Past the linear range, input charge accumulation widens the pulse and timing follows the laser's slower trailing edge; mirror-like returns near 100 mA are clamped with external Schottky diodes [6].

Constant fraction discriminator (CFD)

A CFD adds a copy of the input delayed by td to an inverted copy attenuated by f, then marks the zero crossing. For a fixed pulse shape, the crossing does not depend on amplitude [8]. AN42 distinguishes two regimes [9]. In true constant fraction (TCF) timing, TTCF = td + fTr with td > Tr(1 − f). This is amplitude-independent but still depends on rise time. Amplitude and rise-time compensated (ARC) timing requires td < Tr,min(1 − f). Solving A(t − td)/Tr − fAt/Tr = 0 for a linear edge gives:

TARC = td1 − f,    σt,ARC = σv √(1 + f2) · TrA(1 − f) (7)

The timing point depends on neither A nor Tr; both expressions match AN42 Eqs. (5) and (14) [9]. With branch noise uncorrelated at lag td, the composite noise is σv√(1 + f2) and the slope at the crossing is A(1 − f)/Tr. Relative to leading-edge jitter (σvTr/A) the penalty is √(1 + f2)/(1 − f): ≈ 1.27 at f = 0.2 and ≈ 1.49 at f = 0.3. Removing walk this way costs roughly 30–50 % more jitter. With normalised noise autocorrelation r, the composite is σv√(1 + f2 − 2fr(td)) [9]; low-pass noise usually has r(td) > 0, so the real penalty is smaller. ORTEC suggests fractions of 0.2–0.4 for scintillators [8].

TARC = td / (1 − f) delayed input (A) −f × input (A) sum, A sum, A/2
Figure 2. CFD composite signal for a linear-edge input (Tr = 120, td = 60 units, f = 0.3). Inputs of amplitude A and A/2 cross zero at the same instant, td/(1 − f) ≈ 85.7 units.

In lidar the weak point is the shape assumption: saturation changes the shape and walk returns. Wideband delay lines are also hard to integrate [19], so high-dynamic-range designs favour leading-edge timing with post-correction.

Time-domain walk correction

The quantity that drives walk (amplitude, time over threshold or edge slope) is measured on every pulse; a calibrated table maps it to walk, which is subtracted from each result [6].

Table 1. Walk-correction methods in pulsed TOF receivers (Oulu group; from published abstracts)
MethodDynamic rangeCorrected accuracySource
Amplitude (peak detector)1:4000±35 mm single shot, 0–50 °C[2]
Edge slope (two thresholds)≥ 1:10 000±37 ps[3]
Pulse width (time over threshold)1:100 000±15 ps[4]
Width + rise time~1:100 000±4 mm (operation verified −20…+50 °C)[5]

Amplitude needs a fast, linear peak detector and fails in saturation. Time over threshold (ToT) costs one TDC channel and improves low-SNR jitter, but width grows rapidly beyond the linear range [6]. For two-threshold slope, a larger threshold ratio improves accuracy but raises the minimum signal [6]. The combined scheme uses width up to about 1:100 and slope from 100:100 000, with thresholds at SNR ≈ 5 and ≈ 1000 [6]. All need a multi-channel picosecond TDC. Waveform sampling beat the other methods in MCP simulations and adds amplitude, charge, baseline and pile-up information [19], at the cost of GS/s sampling, power and data rate.

Time-stamping architectures

Kalisz reviews counting with averaging, time stretching, time-to-amplitude conversion plus ADC, Vernier, tapped delay lines and interpolation [1]. Practical TDCs pair a coarse counter with a fine interpolator.

Counter plus interpolation

T = N · Tclk + Ta − Tb (8)
clock START STOP Ta Tb N · Tclk (N = 5) T = N·Tclk + Ta − Tb
Figure 3. Counter plus interpolation: whole clock periods are counted, and two fine measurements run from START and from STOP to the next clock edge.

The TI TDC7200 does this in “measurement mode 2”: a ring oscillator measures the fractions, the external clock counts periods, giving TOFn = normLSB · (TIME1 − TIMEn+1) + CLOCK_COUNTn · Tclk [12]. The oscillator LSB drifts with temperature and supply, so each measurement adds a two-point calibration over 1 clock period (CAL1) and 2/10/20/40 periods (CAL2):

calCount = CAL2 − CAL1CAL2_PERIODS − 1,   normLSB = TclkcalCount (9)

The reference clock adds two errors [12]. Frequency error scales with the interval: +50 ppm over 50 μs gives 2.5 ns, and over a 30 m target's ≈ 200 ns it gives 10 ps, or 1.5 mm (derived). Cycle-to-cycle jitter J accumulates as ≈ √n · J over n periods. In its example, 400 periods with 10 ps jitter give 200 ps rms, 25 ps after 64 averages. The standard deviation is about 243 ps with a 1 MHz clock, which is why 16 MHz is recommended [12].

Tapped delay lines and FPGA carry chains

In a tapped-delay-line TDC the event edge propagates along a delay chain whose taps are latched on the clock edge; the thermometer code gives the position within the period. An FPGA implementation using Spartan-6 carry chains reports 26 ps rms per channel at 37–48 °C: a 37 ps two-channel difference over √2, assuming independent channels [11]. It also shows the difficulties: some tap differences in the timing model are negative (bits are reordered), almost half the bins have zero width, and a 1.3 % ring-oscillator shift over 15 °C is about 100 ps at the end of the line [11]. Wu and Shi note that bin widths vary with temperature and supply and need frequent recalibration, and that “ultra-wide bins” form at logic-block boundaries; their wave-union launcher subdivides them, reaching 20–10 ps in low-cost FPGAs [10].

Vernier and time-to-amplitude conversion

Vernier: START triggers an oscillator of period Ts, and STOP triggers a slightly faster one of period Tf. The edges coincide after N periods, so Δt = N(Ts − Tf) (derived). Resolution is set by the period difference, not an element delay; the cost is N · Ts conversion time and tracking of the frequency ratio.

Time-to-amplitude converter (TAC): A constant current charges a capacitor for the interval (V = IΔt/C), and an ADC reads the voltage [9]. In one analogue-interpolation TDC, ±10 ns coarse resolution was refined to ±10 ps, and drift across six units stayed within ±10 ps from −10 to +50 °C [7]. Weaknesses are dead time, component tempco and, per AN42, heating and dielectric absorption at high conversion rates [9].

Quantisation, DNL/INL and the code-density test

Let wi be the width of code i and w̄ the mean width. The code-density test feeds in events that are uniformly distributed within the clock period and uncorrelated with the clock. The count ni in each code is then proportional to its width, and the widths sum to one clock period [11]:

wi ≈ Tclk · ni/Σn,   DNLi = wi/w̄ − 1,   INLk = Σi≤k DNLi,   σ(wi)/wi ≈ 1/√ni (10)

The last term follows from counting statistics. A 1 % width uncertainty needs about 104 hits per bin, or about 5 × 106 events for 500 bins. Any correlation between the calibration source and the clock distorts the histogram. Two start-up calibrations of one device differed by up to 17 ps; the suggested fix is a calibration clock close to, but not equal to, the system clock [11]. Quantisation contributes q/√12 only when the interval is randomly phased against the clock; in a synchronous set-up the same code repeats and the error becomes a fixed offset. For the TDC7200's 55 ps LSB, q/√12 ≈ 16 ps ≈ 2.4 mm (derived).

Commercial TDCs

Table 2. Datasheet values for two commercial TDCs
ParameterTI TDC7200 [12]ScioSense TDC-GPX2 [13]
CalibrationTwo-point, against clock periodAutomatic, against reference clock (no PLL/DLL)
LSB55 ps typ.Configurable fraction of reference period (e.g. 1 ps)
Single-shot rmsMode 2: 35 ps (1 μs), 50 ps (100 μs)20 ps typ. / 30 ps max.; 10 ps typ. in high-resolution mode
Accuracy / nonlinearityMode 2: 28 ps (8 MHz)INL 20 ps max., DNL 5 ps typ.
RangeMode 1: 12–500 ns; Mode 2: 250 ns–8 ms0–16 s
Reference clock1–16 MHz2–12.5 MHz
Minimum pulse spacing67 ns between STOPs (mode 1)20 ns; 5 ns with combined channels
Offset error / driftNot specified100 ps typ.; 0.5 ps/K typ., 3 ps/K max. (normal mode)

In range terms (derived), TDC7200 mode 1 spans about 1.8–75 m, and GPX2 separates echoes 3 m apart (0.75 m with combined channels).

Error budget

The budget is for an example system with explicit assumptions. The target is at 30 m (t ≈ 200 ns) and the receiver bandwidth is 250 MHz (tr ≈ 1.4 ns). START comes from an optical pick-off with assumed SNR ≈ 100. The TDC is GPX2-class, with START and STOP on separate channels of one chip. TDC noise is 20 ps for the channel difference: the datasheet's STOP2 − STOP1 histogram (96 ns) shows 20 ps, one channel against the clock 22.5 ps [13], so √2 × 20 ps (28 ps) would be pessimistic. A 45 K temperature span is assumed, and walk is corrected by one of the methods in Table 1. Random terms add in root-sum-square (RSS); systematics are listed separately.

Table 3. Example error budget (1σ; mm = ps × 0.1499)
TermTypepsmmBasis
STOP jitter, SNR = 20Random87.513.1(5); derived
STOP jitter, SNR = 200Random8.81.3(5); derived
START jitter, SNR ≈ 100Random17.52.6(5); assumed
TDC, START − STOP differenceRandom203.0[13]
RSS, SNR = 2091.413.7derived
RSS, SNR = 20028.04.2derived
Walk residual (corrected)Systematic±15…±37±2.2…±5.5[4], [3]
TDC INL (max., uncalibrated)Systematic203.0[13]
TDC offset, 45 K × 0.5 ps/K (typ.)Systematic22.53.4[13]; derived
TDC offset, 45 K × 3 ps/K (max.)Systematic13520.2[13]; derived
Clock, 50 ppm × 200 nsSystematic, ∝ R101.5[12]; derived
Air index, uncorrectedSystematic, ∝ R—8.2[18]; derived
Air index, corrected from T/P (~1 ppm)Systematic, ∝ R—0.03[18]; derived
Fixed optical/electronic delaySystematiccalibration uncertaintyreference target

For weak echoes STOP jitter dominates: a 10 ps TDC only moves the total from ≈ 91 to ≈ 90 ps, while doubling the STOP SNR gives ≈ 51 ps. For strong echoes the TDC and START channel take over. With typical values, corrected systematics add to ≈ ±13 mm linearly (≈ 7 mm RSS) and do not average down. At maximum drift the offset alone reaches ≈ 20 mm; some of it may cancel between START and STOP on one chip, but the datasheet gives no difference figure, so offset must be calibrated over temperature. Uncorrected air index alone exceeds the strong-echo random total. Reaching 1 mm on a weak echo needs ≈ 190 uncorrelated averages with target, amplitude and temperature held constant.

Verification methodology

Each budget line needs its own experiment; one “ranging test” cannot separate them.

  1. TDC alone: Drive START and STOP with two electrical edges of known delay; Bourdeauducq used a splitter and cables of about 2 ns and 4 ns, with an oscillator asynchronous to the clock so the whole line was exercised [11]. Repeat spread gives precision, a delay sweep gives INL, and (10) gives the DNL/INL table.
  2. Reference timer: Cross-check with an independent time-interval analyser on a separate frequency standard; a shared one hides clock scale error.
  3. Optical delay line: A fibre spool delivers the real optical pulse; its delay drifts with temperature, so stabilise it and measure it independently.
  4. Walk curve: Sweep amplitude over the full dynamic range with a stepped optical attenuator on a fixed path, logging time, width and slope together [6]; step-dependent attenuator delay would otherwise read as walk.
  5. Reference targets: Independently surveyed flat targets of known reflectivity fix the offset; a range sweep separates scale errors (clock, air index).
  6. Climatic testing: Repeat walk curve and offsets at several chamber temperatures; published receivers were validated over 0…+50 °C [2] and −20…+50 °C [5]. Log T, P and humidity for the air-index correction [18].

Common mistakes

  • “Averaging removes jitter.” Only the uncorrelated part falls as σ/√N (3), and scanning systems often cannot average at all [6].
  • “Walk is a constant offset.” It depends on amplitude and changes fastest near threshold (6); an offset from one target is wrong for another reflectivity, and saturation changes the dependence [6].
  • “The TDC LSB is the precision.” The GPX2 LSB can be 1 ps while single-shot rms is 20 ps [13]; resolution, precision (rms) and accuracy (INL, offset, scale) must be verified separately.
  • “A CFD always cancels walk.” It relies on a constant pulse shape [8], and in ARC mode jitter rises by √(1 + f2)/(1 − f) (7).
  • “More bandwidth always helps.” Beyond the signal edge it only adds noise [6], [8]; likewise, clock ppm error grows with range [12].

References

  1. J. Kalisz, “Review of methods for time interval measurements with picosecond resolution,” Metrologia, vol. 41, no. 1, pp. 17–32, 2004. https://doi.org/10.1088/0026-1394/41/1/004
  2. P. Palojärvi, T. Ruotsalainen, J. Kostamovaara, “A 250-MHz BiCMOS receiver channel with leading edge timing discriminator for a pulsed time-of-flight laser rangefinder,” IEEE Journal of Solid-State Circuits, vol. 40, no. 6, pp. 1341–1349, 2005. https://doi.org/10.1109/JSSC.2005.848022
  3. J. Nissinen, I. Nissinen, J. Kostamovaara, “Integrated receiver including both receiver channel and TDC for a pulsed time-of-flight laser rangefinder with cm-level accuracy,” IEEE Journal of Solid-State Circuits, vol. 44, no. 5, pp. 1486–1497, 2009. https://doi.org/10.1109/JSSC.2009.2017006
  4. S. Kurtti, J. Kostamovaara, “An integrated laser radar receiver channel utilizing a time-domain walk error compensation scheme,” IEEE Transactions on Instrumentation and Measurement, vol. 60, no. 1, pp. 146–157, 2011. https://doi.org/10.1109/TIM.2010.2047663
  5. S. Kurtti, J. Nissinen, J. Kostamovaara, “A wide dynamic range CMOS laser radar receiver with a time-domain walk error compensation scheme,” IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 64, no. 3, pp. 550–561, 2017. https://doi.org/10.1109/TCSI.2016.2619762
  6. S. Kurtti, J. Kostamovaara, “CMOS receiver for a pulsed TOF laser rangefinder utilizing the time domain walk compensation scheme,” 20th IMEKO TC4 International Symposium, Benevento, pp. 111–115, 2014. https://www.imeko.org/publications/tc4-2014/IMEKO-TC4-2014-292.pdf
  7. K. Määttä, J. Kostamovaara, “A high-precision time-to-digital converter for pulsed time-of-flight laser radar applications,” IEEE Transactions on Instrumentation and Measurement, vol. 47, no. 2, pp. 521–536, 1998. https://doi.org/10.1109/19.744201
  8. ORTEC (AMETEK), “Fast-Timing Discriminator Introduction: Choosing the Right Timing Discriminator for the Application,” application note. https://www.ortec-online.com/-/media/ametekortec/other/fast-timing-discriminator-introduction.pdf
  9. ORTEC (AMETEK), “AN42: Principles and Applications of Timing Spectroscopy,” application note. https://www.ortec-online.com/-/media/ametekortec/application%20notes/an42.pdf
  10. J. Wu, Z. Shi, “The 10-ps wave union TDC: Improving FPGA TDC resolution beyond its cell delay,” 2008 IEEE Nuclear Science Symposium Conference Record, pp. 3440–3446, 2008. https://doi.org/10.1109/NSSMIC.2008.4775079
  11. S. Bourdeauducq, “A 26 ps RMS time-to-digital converter core for Spartan-6 FPGAs,” arXiv:1303.6840, 2013. https://arxiv.org/abs/1303.6840
  12. Texas Instruments, “TDC7200 Time-to-Digital Converter for Time-of-Flight Applications in LIDAR, Magnetostrictive and Flow Meters,” datasheet SNAS647D, 2016. https://www.ti.com/lit/ds/symlink/tdc7200.pdf
  13. ScioSense (formerly ams/acam), “TDC-GPX2 4-Channel Time-to-Digital Converter,” datasheet v1-03, 2017. https://www.sciosense.com/wp-content/uploads/2023/12/TDC-GPX2-Datasheet.pdf
  14. ams OSRAM, “SPL PL90AT03 – Pulsed Laser Diode in Plastic Package 75 W Peak Power,” datasheet v1.1, 2024. https://look.ams-osram.com/m/4c6fd3eb2516daa7/original/SPL-PL90AT03.pdf
  15. OSRAM Opto Semiconductors, “SPL PL90 – Pulsed Laser Diode in Plastic Package 25 W Peak Power,” datasheet v1.5, 2015. https://datasheet.octopart.com/SPLPL90-Osram-Opto-datasheet-62046751.pdf
  16. IEC 60825-1:2014, “Safety of laser products – Part 1: Equipment classification and requirements,” edition 3.0. https://webstore.iec.ch/en/publication/3587
  17. NIST, “CODATA value: speed of light in vacuum.” https://physics.nist.gov/cgi-bin/cuu/Value?c
  18. NIST Engineering Metrology Toolbox, “Refractive Index of Air Calculator – Documentation.” https://emtoolbox.nist.gov/Wavelength/Documentation.asp
  19. J.-F. Genat, G. Varner, F. Tang, H. Frisch, “Signal processing for picosecond resolution timing measurements,” Nuclear Instruments and Methods in Physics Research A, vol. 607, no. 2, pp. 387–393, 2009. https://arxiv.org/abs/0810.5590
  20. J. Kostamovaara et al., “On laser ranging based on high-speed/energy laser diode pulses and single-photon detection techniques,” IEEE Photonics Journal, vol. 7, no. 2, 2015. https://doi.org/10.1109/JPHOT.2015.2402129

Related capability area: Defence electronics and electro-optical systems

Have a requirement in this area, or a correction to this note? Tell us about it.

Get in touch