Skip to content

Zero-crossing based symbol synchronization technique for timing error detection in digital communication systems.

License

Notifications You must be signed in to change notification settings

bvsrvaibhav/Zero-Crossing-Error-Timing-Detection

Repository files navigation

QPSK Symbol Timing Synchronization

This project implements a symbol timing synchronization loop for a Quadrature Phase Shift Keying (QPSK) receiver in Verilog. It uses a Zero-Crossing Timing Error Detector (ZCTED), loop filter, interpolator, and Numerically Controlled Oscillator (NCO) to align the sampling instants with the incoming symbol stream.

🔹 What is ZCTED?

ZCTED stands for Zero-Crossing Timing Error Detector. It is a widely used timing error detection technique in digital communication receivers.

In QPSK and other modulation schemes, the In-phase (I) or Quadrature (Q) components of the signal cross zero at known intervals depending on symbol timing.

If the receiver samples too early or too late, these zero-crossing instants shift, introducing timing errors.

The ZCTED measures this misalignment and produces an error signal (eₖ) used to correct the receiver’s sampling phase.

🔹 How ZCTED Works in This Design

In this implementation:

Interpolator Produces fractional sample values of the incoming I/Q signals, allowing fine adjustments of sampling time.

ZCTED Calculation The detector uses the formula:

e(k)=I[n−1]⋅(sgn(I[n])−sgn(I[n−2]))

I[n]: Current interpolated sample

I[n−1],I[n−2]: Delayed samples

sgn(x): Sign function (+1, -1, or 0)

This measures whether the samples are aligned with the expected zero-crossings.

Zero Stuffer Passes the error signal only when the NCO signals a valid symbol boundary (underflow condition).

Loop Filter + NCO

The loop filter smooths the error signal.

The NCO updates µ (mu), the fractional timing phase, to re-align the sampling instants.

Output Corrected symbols are produced on I_out and Q_out, with valid_out indicating valid timing-corrected samples.

🔹 Constellation Diagram Explanation

The image you provided shows a QPSK Constellation Diagram:

Axes:

X-axis = In-Phase (I)

Y-axis = Quadrature (Q)

Clusters:

Four distinct clusters represent the 4 possible QPSK symbols:

(+I, +Q), (+I, -Q), (-I, +Q), (-I, -Q)

Spread of Points:

The scatter around each cluster is caused by channel noise and imperfect synchronization.

With proper timing synchronization using ZCTED, the clusters become tighter and more separated, improving bit error rate (BER).

🔹 Why ZCTED is Useful

Simple to implement in hardware (only sign detection and multiplication).

Works well with QPSK and other linear modulation schemes.

Provides good performance in moderate noise conditions.

Ensures the receiver samples at the optimal point, reducing symbol errors.

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

About

Zero-crossing based symbol synchronization technique for timing error detection in digital communication systems.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published