Skip to content

Support advanced modulation formats: QPSK, 16QAM, DP-QPSK eye diagrams and constellation plots #21

Description

@jackgdsf

Motivation

The time-domain examples currently demonstrate only NRZ OOK eye diagrams (ring_modulator.ipynb, Parts 4–5). Modern coherent optical links use higher-order modulation formats — QPSK, 16QAM, DP-QPSK — and it would be valuable to show circulax handling these, including constellation diagrams alongside eye diagrams.

Current state

  • NRZSource in ring_modulator.ipynb generates binary (0/1) sigmoid-transition waveforms.
  • fold_eye() folds optical power into a 3-period eye diagram.
  • Only a single drive signal feeds one ring/MZM arm — no I/Q modulator topology.

Proposed additions

1. Generalized modulation source components

Component Description
QPSKSource Two independent NRZ streams (I, Q) on separate port pairs
QAM16Source Two independent PAM-4 streams (I, Q); symbol-to-level mapping via Gray-coded lookup table
DualPolSource Four independent streams (I_X, Q_X, I_Y, Q_Y) for DP-QPSK / DP-16QAM

All sources should use the same sigmoid-transition approach as NRZSource so they are JAX-traceable and differentiable.

2. IQ modulator component

A dual-arm Mach-Zehnder IQ modulator that:

  • Splits input optical field 50/50
  • Applies independent phase modulation on each arm (I and Q)
  • Recombines with a 90° phase offset between arms
  • Can be built from existing OpticalWaveguide + Splitter primitives, or as a single lumped tCMT component

3. Visualization utilities

  • Constellation diagram: sample the complex output field E(t) at symbol centers, plot I vs Q.
  • Multi-level eye diagram: fold I and Q components separately (for QAM, each arm is PAM-N).
  • EVM / BER estimation: compute error vector magnitude from the constellation samples.

4. Example notebook

A new notebook (or extension of ring_modulator.ipynb) showing:

  1. QPSK eye diagram + constellation using a dual-arm MZI
  2. 16QAM constellation compared to QPSK (same symbol rate, different spectral efficiency)
  3. DP-QPSK (if polarization diversity is modeled)

Implementation notes

  • The DAE solver and transient infrastructure already handle complex fields — no solver changes needed.
  • I/Q modulation is a netlist-level composition: two drive signals, a dual-arm MZI, and appropriate connections.
  • The main work is creating reusable source components and visualization helpers.
  • jax.vmap over modulation format parameters (constellation size, symbol rate) would be a compelling demo of circulax's differentiable simulation.

References

  • Current NRZ implementation: examples/photonic/ring_modulator.ipynb cells 24–30
  • MZM example: examples/photonic/mzm.ipynb
  • Photonic components: circulax/components/photonic.py

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions