Part I · Today's module · Chapter 5 of 18

The receiver and decisions

Eyes, level histograms, noise margin against LO power, saturation, and the decode table that detects errors for free.

What the four slicers see: every symbol from the bit-exact Monte Carlodatasheetillustrativetextbook
Receiver eyes (loads when scrolled into view)
Each dot is one symbol’s value at a slicer, in level steps, from the browser’s port of the simulator’s per-symbol Monte Carlo (the same random stream and arithmetic as its NumPy and Rust versions, so the same symbols). Histograms on the right; dashed lines are the three decision thresholds per output. Lower the LO power to watch the noise close the eyes.
σ2=σshot2(1+R PsigILO)+σTIA2+σRIN2\hl{noise}{\sigma^2} = \sigma_{\mathrm{shot}}^2\Big(1 + \frac{R\,P_{\mathrm{sig}}}{I_{\mathrm{LO}}}\Big) + \sigma_{\mathrm{TIA}}^2 + \sigma_{\mathrm{RIN}}^2
Perr=Q ⁣(v−tloσ)+Q ⁣(thi−vσ)P_{\mathrm{err}} = Q\!\Big(\frac{\hl{level}{v} - t_{\mathrm{lo}}}{\hl{noise}{\sigma}}\Big) + Q\!\Big(\frac{t_{\mathrm{hi}} - \hl{level}{v}}{\hl{noise}{\sigma}}\Big)

What this stage does

Each balanced pair delivers a current; a linear transimpedance amplifier turns it into a voltage, and three thresholds per output turn that voltage into one of four PAM4 symbols. Output 1 reads Re X0, which runs from 0 to 4; outputs 2 and 4 read Re X1 and Im X3, from −1 to 1; output 3 reads Re X2, from −2 to 2. An offset per output lines each alphabet up with symbols 0 to 3, and the top level of outputs 1 and 3 has nowhere to go: it shares symbol 3 with the level below.

Everything after the slicers is digital. A wrong decision either lands on one of the decode table’s invalid entries (the FPGA knows, and can retry the frame) or, rarely, on another valid word (an undetected error).

How it’s modelled

Noise is Gaussian and referred to the TIA input. It has three parts: shot noise from the LO current and, since the simulator’s second version, from the signal power on each pair (true textbook); the TIA’s input noise (2 µA rms datasheet, quoted over 35 GHz datasheet and scaled to a receiver bandwidth of 0.47 × baud illustrative); and the LO’s relative intensity noise (−150 dB/Hz illustrative) after the pair’s common-mode rejection (20 dB illustrative). Photodiode responsivity is 0.65 A/W illustrative.

Error rates are computed two ways. The analytic one integrates the Gaussian tails past each threshold for each of the 16 input words. The Monte Carlo draws every symbol (bits, four noise samples and a phase-noise sample from a counter-based stream) and slices it; the hero above runs that Monte Carlo in your browser. Optional soft compression of the TIA (knee 3.5 level steps illustrative, headroom 0.5 level steps illustrative) is handled by referring the thresholds back through it.

What we found

Noise margin against LO power

At the default LO power (−5 dBm illustrative) the SNR margin to a symbol error rate of 1 × 10⁻⁶ is 10.43 dB, 10.74 dB, 10.78 dB and 10.74 dB on outputs 1 to 4. That target needs at least −17.08 dBm of LO on output 1 and −17.63 dBm on output 3, so the default leaves about 12.08 dB to spare. The Monte Carlo agrees with the analytic rates: at −30 dBm, 400,000 symbols give a word error of 0.5969 against 0.5968 predicted.

SER per output vs LO powerillustrativedatasheet
−30−20−10010⁻²⁰10⁻¹⁶10⁻¹²10⁻⁸10⁻⁴1LO power (dBm)symbol error ratetargetdefault
Analytic symbol error rate per output and word error rate (dashed), with Monte Carlo word error rates (dots). Values below the plotting floor are drawn at the floor.
Data table
SER per output vs LO power
LO power (dBm)output 1output 2output 3output 4analytic word errorMC word error
−300.20740.20760.18510.20760.59680.5969
−290.16530.16180.14420.16180.4997—
−280.12590.11990.10680.11990.39620.3966
−270.090640.08340.07430.08340.2933—
−260.060910.053720.047830.053720.19960.1995
−250.037580.031440.027980.031440.1225—
−240.020860.016340.014530.016340.06640.06655
−230.010160.0073320.0065130.0073320.03098—
−220.0042030.0027390.0024310.0027390.012060.01215
−210.0014220.00081550.00072260.00081550.00377—
−200.00037490.00018320.00016210.00018320.00090320.001045
−197.263 × 10⁻⁵2.907 × 10⁻⁵2.566 × 10⁻⁵2.907 × 10⁻⁵0.0001564—
−189.628 × 10⁻⁶3.003 × 10⁻⁶2.644 × 10⁻⁶3.003 × 10⁻⁶1.828 × 10⁻⁵—
−178.015 × 10⁻⁷1.832 × 10⁻⁷1.607 × 10⁻⁷1.832 × 10⁻⁷1.329 × 10⁻⁶—
−163.783 × 10⁻⁸5.872 × 10⁻⁹5.134 × 10⁻⁹5.872 × 10⁻⁹5.47 × 10⁻⁸—
−158.977 × 10⁻¹⁰8.635 × 10⁻¹¹7.515 × 10⁻¹¹8.635 × 10⁻¹¹1.146 × 10⁻⁹—
−149.331 × 10⁻¹²4.98 × 10⁻¹³4.312 × 10⁻¹³4.98 × 10⁻¹³1.076 × 10⁻¹¹—
−133.635 × 10⁻¹⁴9.46 × 10⁻¹⁶8.141 × 10⁻¹⁶9.46 × 10⁻¹⁶3.905 × 10⁻¹⁴—
−124.47 × 10⁻¹⁷4.902 × 10⁻¹⁹4.19 × 10⁻¹⁹4.902 × 10⁻¹⁹4.61 × 10⁻¹⁷—
−111.448 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1.464 × 10⁻²⁰—
−101 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−91 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−81 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−71 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−61 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−51 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−41 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−31 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−21 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
−11 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
01 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
11 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
21 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
31 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
41 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
51 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰1 × 10⁻²⁰—
Peak-to-rms SNR (output 3 two-step peak)illustrative
−30−20−100152025303540LO power (dBm)SNR (dB)required (output 3)
Peak-to-rms SNR of output 3's two-step peak against the SNR needed for the error-rate target.
Data table
Peak-to-rms SNR (output 3 two-step peak)
LO power (dBm)available
−3013.51
−2914.51
−2815.51
−2716.5
−2617.5
−2518.49
−2419.49
−2320.48
−2221.47
−2122.46
−2023.44
−1924.42
−1825.4
−1726.36
−1627.32
−1528.28
−1429.21
−1330.14
−1231.05
−1131.93
−1032.79
−933.62
−834.41
−735.17
−635.88
−536.53
−437.14
−337.68
−238.17
−138.59
038.96
139.26
239.52
339.72
439.88
539.99

Output 1’s pedestal

A 0 is not dark (chapter 2), so output 1 sits on a carrier pedestal and its levels span 7.56 steps of TIA range when the receiver is DC-coupled, against 4 steps once AC coupling removes the pedestal (chapter 7). The pedestal’s light also adds shot noise: at its top level output 1’s noise rises from 1.09 µA rms to 1.178 µA rms, which takes its margin from 10.7 dB to 10.03 dB. A small cost, and the reason output 1 is the noisiest output.

Saturation and the parity decode

Only 2 of the 16 inputs clip, and never on both outputs at once. The patent’s decoder does not need a table to undo the clipping: the unclipped outputs fix the parity of the clipped one.

Recovering a clipped level by paritypatent
Parity decode animation (loads when scrolled into view)
Both clipping inputs, decoded step by step with the simulator's parity rule.
X0−X2=2(x1+x3),X0+X2=2(x0+x2)X_0 - X_2 = 2(x_1 + x_3),\qquad X_0 + X_2 = 2(x_0 + x_2)

If the TIA compresses, the top eye pays first. With the knee at 3.5 steps the top eye keeps its full 0.5 steps margin, and keeps it down to a knee of 2.491 steps; the eye shuts below 2.019 steps with perfect pedestal tracking (2.059 steps and 2.007 steps with a quarter-step pedestal error either way, which also costs a quarter step of margin at any knee).

Top-eye margin vs kneeillustrative
12345−1−0.500.5compression knee (steps)margin (steps)eye closeddefault knee
Top-eye margin in level steps (input-referred; −1 means shut).
Data table
Top-eye margin vs knee
compression knee (steps)pedestal error -0.25pedestal error +0pedestal error +0.25
1.5−1−1−1
1.56−1−1−1
1.62−1−1−1
1.68−1−1−1
1.74−1−1−1
1.8−1−1−1
1.86−1−1−1
1.92−1−1−1
1.98−1−1−1
2.04−0.084510.16550.4155
2.10.10070.35070.3993
2.160.17540.42540.3246
2.220.21360.46360.2864
2.280.23390.48390.2661
2.340.24420.49420.2558
2.40.24860.49860.2514
2.460.24990.49990.2501
2.520.250.50.25
2.580.250.50.25
2.640.250.50.25
2.70.250.50.25
2.760.250.50.25
2.820.250.50.25
2.880.250.50.25
2.940.250.50.25
30.250.50.25
3.060.250.50.25
3.120.250.50.25
3.180.250.50.25
3.240.250.50.25
3.30.250.50.25
3.360.250.50.25
3.420.250.50.25
3.480.250.50.25
3.540.250.50.25
3.60.250.50.25
3.660.250.50.25
3.720.250.50.25
3.780.250.50.25
3.840.250.50.25
3.90.250.50.25
3.960.250.50.25
4.020.250.50.25
4.080.250.50.25
4.140.250.50.25
4.20.250.50.25
4.260.250.50.25
4.320.250.50.25
4.380.250.50.25
4.440.250.50.25
4.50.250.50.25
Output 1 SER vs knee (default LO)illustrative
1234510⁻²⁰10⁻¹⁶10⁻¹²10⁻⁸10⁻⁴1compression knee (steps)SER
Output 1's symbol error rate at the default LO power.
Data table
Output 1 SER vs knee (default LO)
compression knee (steps)pedestal error -0.25pedestal error +0pedestal error +0.25
1.50.31250.31250.3125
1.560.31250.31250.3125
1.620.31250.31250.3125
1.680.31250.31250.3125
1.740.31250.31250.3125
1.80.31250.31250.3125
1.860.31250.31250.3125
1.920.31250.31250.3125
1.980.31250.31250.3125
2.040.24912.103 × 10⁻⁸5.415 × 10⁻¹⁷
2.10.00018211 × 10⁻²⁰5.415 × 10⁻¹⁷
2.163.65 × 10⁻⁹1 × 10⁻²⁰5.415 × 10⁻¹⁷
2.221.825 × 10⁻¹²1 × 10⁻²⁰5.416 × 10⁻¹⁷
2.281.809 × 10⁻¹⁴1 × 10⁻²⁰5.649 × 10⁻¹⁷
2.341.696 × 10⁻¹⁵1 × 10⁻²⁰9.3 × 10⁻¹⁷
2.47.107 × 10⁻¹⁶1 × 10⁻²⁰1.81 × 10⁻¹⁶
2.465.777 × 10⁻¹⁶1 × 10⁻²⁰2.317 × 10⁻¹⁶
2.525.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
2.585.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
2.645.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
2.75.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
2.765.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
2.825.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
2.885.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
2.945.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
35.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.065.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.125.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.185.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.245.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.35.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.365.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.425.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.485.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.545.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.65.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.665.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.725.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.785.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.845.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.95.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
3.965.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.025.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.085.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.145.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.25.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.265.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.325.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.385.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.445.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶
4.55.702 × 10⁻¹⁶1 × 10⁻²⁰2.357 × 10⁻¹⁶

Free error detection

Only 16 of the 256 symbol words are valid, and every one of the 108 single-level slips lands on an invalid entry (108 detected). So the commonest analogue error is caught without any extra bits. At −30 dBm of LO, where errors are common, 0.5808 of all words carry a detected error and only 0.01613 an undetected one (two slips that happen to land on another valid word).

A one-level slip lands outside the 16 valid wordspaper
Slip detection animation (loads when scrolled into view)
The worked example's symbols, with each possible single-level slip; the decode table's valid entries are green.

What would need measured data

The responsivity, LO power, noise bandwidth, RIN, CMRR and the TIA’s knee are illustrative; only the TIA’s input noise comes from a datasheet, and that for a fast linear part rather than this module’s own. Measured receiver noise spectra, the real TIA’s compression curve and offset-cancel loop, and the balanced pairs’ common-mode rejection would replace them. The decode table and the parity rule are exact and need nothing measured.