Also known as: zero-crossing detector, zero-crossing counter
Zero-crossing detection estimates a signal’s frequency and timing by watching the instants at which it crosses zero.1 The spacing between successive crossings is a direct, if coarse, measure of instantaneous frequency, and the crossing edges themselves provide a timing reference — which makes zero-crossing methods a cheap route to FSK demodulation and symbol clock recovery. The appeal is simplicity: no multiplies, no phase loop, just detect sign changes and time them.
How it works
Two things fall out of the crossing instants:
- Frequency. The interval between two consecutive zero crossings is half the waveform’s period, so counting crossings in a fixed window (or timing the gap between them) estimates instantaneous frequency. For a binary FSK signal the two tones produce two distinct crossing rates; thresholding the estimate recovers the bits — this is a zero-crossing discriminator, historically a common low-complexity FM/FSK demodulator.
- Timing. In a baseband symbol stream the transitions between symbol levels create zero crossings (after removing any DC bias). Those edges mark where the data clock ticks; a loop can align a local symbol clock to them, recovering timing much as a digital PLL would but from edge events rather than a matched-filter peak.
Practically, one interpolates between the two samples straddling a sign change to locate the crossing to sub-sample accuracy, since the true crossing rarely lands exactly on a sample.
Limitations under noise
Zero crossings are attractively cheap but fragile:
- Noise creates false crossings. Near a genuine crossing the signal moves slowly through zero, so even modest noise flips the sign repeatedly, spawning spurious edges that corrupt both frequency and timing estimates. A hysteresis band (Schmitt-trigger behaviour) or pre-filtering to the signal bandwidth mitigates this but does not eliminate it.
- Quantized resolution. With few samples per cycle the crossing time — and thus the frequency estimate — is coarse unless interpolated.
- Amplitude/DC sensitivity. A DC offset or slow fade shifts where the waveform crosses zero, biasing the timing; the input usually must be centred first.
For these reasons high-performance receivers prefer coherent or matched-filter approaches — a Costas loop or Gardner timing detector — and reserve zero-crossing methods for low-cost or coarse-acquisition roles. It contrasts with quadrature demodulation, which recovers instantaneous frequency from the differentiated arctangent of I/Q rather than from sign changes and degrades far more gracefully in noise.
Relevance to SDR
Zero-crossing FSK/FM discriminators show up in undemanding links — pager and telemetry receivers, AFSK modems, DTMF and tone detectors, and simple RTTY decoders — where their negligible cost outweighs their noise penalty. In trunked-radio work the underlying data is FSK-family, but production decoders (GopherTrunk included) use quadrature/discriminator demodulation with proper matched filtering and closed-loop timing rather than raw zero-crossing counting, because control-channel reliability at low SNR demands it. Zero-crossing detection remains a useful mental model and a handy first-pass frequency estimate.
Sources
-
Zero crossing — Wikipedia, on zero-crossing instants for frequency/timing estimation; see also Frequency-shift keying for the demod context. ↩