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:
- QPSK eye diagram + constellation using a dual-arm MZI
- 16QAM constellation compared to QPSK (same symbol rate, different spectral efficiency)
- 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
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
NRZSourcein ring_modulator.ipynb generates binary (0/1) sigmoid-transition waveforms.fold_eye()folds optical power into a 3-period eye diagram.Proposed additions
1. Generalized modulation source components
QPSKSourceQAM16SourceDualPolSourceAll sources should use the same sigmoid-transition approach as
NRZSourceso they are JAX-traceable and differentiable.2. IQ modulator component
A dual-arm Mach-Zehnder IQ modulator that:
OpticalWaveguide+Splitterprimitives, or as a single lumped tCMT component3. Visualization utilities
4. Example notebook
A new notebook (or extension of ring_modulator.ipynb) showing:
Implementation notes
jax.vmapover modulation format parameters (constellation size, symbol rate) would be a compelling demo of circulax's differentiable simulation.References
examples/photonic/ring_modulator.ipynbcells 24–30examples/photonic/mzm.ipynbcirculax/components/photonic.py