The receiver and decisions
Eyes, level histograms, noise margin against LO power, saturation, and the decode table that detects errors for free.
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.
Data table
| LO power (dBm) | output 1 | output 2 | output 3 | output 4 | analytic word error | MC word error |
|---|---|---|---|---|---|---|
| −30 | 0.2074 | 0.2076 | 0.1851 | 0.2076 | 0.5968 | 0.5969 |
| −29 | 0.1653 | 0.1618 | 0.1442 | 0.1618 | 0.4997 | — |
| −28 | 0.1259 | 0.1199 | 0.1068 | 0.1199 | 0.3962 | 0.3966 |
| −27 | 0.09064 | 0.0834 | 0.0743 | 0.0834 | 0.2933 | — |
| −26 | 0.06091 | 0.05372 | 0.04783 | 0.05372 | 0.1996 | 0.1995 |
| −25 | 0.03758 | 0.03144 | 0.02798 | 0.03144 | 0.1225 | — |
| −24 | 0.02086 | 0.01634 | 0.01453 | 0.01634 | 0.0664 | 0.06655 |
| −23 | 0.01016 | 0.007332 | 0.006513 | 0.007332 | 0.03098 | — |
| −22 | 0.004203 | 0.002739 | 0.002431 | 0.002739 | 0.01206 | 0.01215 |
| −21 | 0.001422 | 0.0008155 | 0.0007226 | 0.0008155 | 0.00377 | — |
| −20 | 0.0003749 | 0.0001832 | 0.0001621 | 0.0001832 | 0.0009032 | 0.001045 |
| −19 | 7.263 × 10⁻⁵ | 2.907 × 10⁻⁵ | 2.566 × 10⁻⁵ | 2.907 × 10⁻⁵ | 0.0001564 | — |
| −18 | 9.628 × 10⁻⁶ | 3.003 × 10⁻⁶ | 2.644 × 10⁻⁶ | 3.003 × 10⁻⁶ | 1.828 × 10⁻⁵ | — |
| −17 | 8.015 × 10⁻⁷ | 1.832 × 10⁻⁷ | 1.607 × 10⁻⁷ | 1.832 × 10⁻⁷ | 1.329 × 10⁻⁶ | — |
| −16 | 3.783 × 10⁻⁸ | 5.872 × 10⁻⁹ | 5.134 × 10⁻⁹ | 5.872 × 10⁻⁹ | 5.47 × 10⁻⁸ | — |
| −15 | 8.977 × 10⁻¹⁰ | 8.635 × 10⁻¹¹ | 7.515 × 10⁻¹¹ | 8.635 × 10⁻¹¹ | 1.146 × 10⁻⁹ | — |
| −14 | 9.331 × 10⁻¹² | 4.98 × 10⁻¹³ | 4.312 × 10⁻¹³ | 4.98 × 10⁻¹³ | 1.076 × 10⁻¹¹ | — |
| −13 | 3.635 × 10⁻¹⁴ | 9.46 × 10⁻¹⁶ | 8.141 × 10⁻¹⁶ | 9.46 × 10⁻¹⁶ | 3.905 × 10⁻¹⁴ | — |
| −12 | 4.47 × 10⁻¹⁷ | 4.902 × 10⁻¹⁹ | 4.19 × 10⁻¹⁹ | 4.902 × 10⁻¹⁹ | 4.61 × 10⁻¹⁷ | — |
| −11 | 1.448 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1.464 × 10⁻²⁰ | — |
| −10 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −9 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −8 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −7 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −6 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −5 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −4 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −3 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −2 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| −1 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| 0 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| 1 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| 2 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| 3 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| 4 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
| 5 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | — |
Data table
| LO power (dBm) | available |
|---|---|
| −30 | 13.51 |
| −29 | 14.51 |
| −28 | 15.51 |
| −27 | 16.5 |
| −26 | 17.5 |
| −25 | 18.49 |
| −24 | 19.49 |
| −23 | 20.48 |
| −22 | 21.47 |
| −21 | 22.46 |
| −20 | 23.44 |
| −19 | 24.42 |
| −18 | 25.4 |
| −17 | 26.36 |
| −16 | 27.32 |
| −15 | 28.28 |
| −14 | 29.21 |
| −13 | 30.14 |
| −12 | 31.05 |
| −11 | 31.93 |
| −10 | 32.79 |
| −9 | 33.62 |
| −8 | 34.41 |
| −7 | 35.17 |
| −6 | 35.88 |
| −5 | 36.53 |
| −4 | 37.14 |
| −3 | 37.68 |
| −2 | 38.17 |
| −1 | 38.59 |
| 0 | 38.96 |
| 1 | 39.26 |
| 2 | 39.52 |
| 3 | 39.72 |
| 4 | 39.88 |
| 5 | 39.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.
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).
Data table
| compression knee (steps) | pedestal error -0.25 | pedestal error +0 | pedestal 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.08451 | 0.1655 | 0.4155 |
| 2.1 | 0.1007 | 0.3507 | 0.3993 |
| 2.16 | 0.1754 | 0.4254 | 0.3246 |
| 2.22 | 0.2136 | 0.4636 | 0.2864 |
| 2.28 | 0.2339 | 0.4839 | 0.2661 |
| 2.34 | 0.2442 | 0.4942 | 0.2558 |
| 2.4 | 0.2486 | 0.4986 | 0.2514 |
| 2.46 | 0.2499 | 0.4999 | 0.2501 |
| 2.52 | 0.25 | 0.5 | 0.25 |
| 2.58 | 0.25 | 0.5 | 0.25 |
| 2.64 | 0.25 | 0.5 | 0.25 |
| 2.7 | 0.25 | 0.5 | 0.25 |
| 2.76 | 0.25 | 0.5 | 0.25 |
| 2.82 | 0.25 | 0.5 | 0.25 |
| 2.88 | 0.25 | 0.5 | 0.25 |
| 2.94 | 0.25 | 0.5 | 0.25 |
| 3 | 0.25 | 0.5 | 0.25 |
| 3.06 | 0.25 | 0.5 | 0.25 |
| 3.12 | 0.25 | 0.5 | 0.25 |
| 3.18 | 0.25 | 0.5 | 0.25 |
| 3.24 | 0.25 | 0.5 | 0.25 |
| 3.3 | 0.25 | 0.5 | 0.25 |
| 3.36 | 0.25 | 0.5 | 0.25 |
| 3.42 | 0.25 | 0.5 | 0.25 |
| 3.48 | 0.25 | 0.5 | 0.25 |
| 3.54 | 0.25 | 0.5 | 0.25 |
| 3.6 | 0.25 | 0.5 | 0.25 |
| 3.66 | 0.25 | 0.5 | 0.25 |
| 3.72 | 0.25 | 0.5 | 0.25 |
| 3.78 | 0.25 | 0.5 | 0.25 |
| 3.84 | 0.25 | 0.5 | 0.25 |
| 3.9 | 0.25 | 0.5 | 0.25 |
| 3.96 | 0.25 | 0.5 | 0.25 |
| 4.02 | 0.25 | 0.5 | 0.25 |
| 4.08 | 0.25 | 0.5 | 0.25 |
| 4.14 | 0.25 | 0.5 | 0.25 |
| 4.2 | 0.25 | 0.5 | 0.25 |
| 4.26 | 0.25 | 0.5 | 0.25 |
| 4.32 | 0.25 | 0.5 | 0.25 |
| 4.38 | 0.25 | 0.5 | 0.25 |
| 4.44 | 0.25 | 0.5 | 0.25 |
| 4.5 | 0.25 | 0.5 | 0.25 |
Data table
| compression knee (steps) | pedestal error -0.25 | pedestal error +0 | pedestal error +0.25 |
|---|---|---|---|
| 1.5 | 0.3125 | 0.3125 | 0.3125 |
| 1.56 | 0.3125 | 0.3125 | 0.3125 |
| 1.62 | 0.3125 | 0.3125 | 0.3125 |
| 1.68 | 0.3125 | 0.3125 | 0.3125 |
| 1.74 | 0.3125 | 0.3125 | 0.3125 |
| 1.8 | 0.3125 | 0.3125 | 0.3125 |
| 1.86 | 0.3125 | 0.3125 | 0.3125 |
| 1.92 | 0.3125 | 0.3125 | 0.3125 |
| 1.98 | 0.3125 | 0.3125 | 0.3125 |
| 2.04 | 0.2491 | 2.103 × 10⁻⁸ | 5.415 × 10⁻¹⁷ |
| 2.1 | 0.0001821 | 1 × 10⁻²⁰ | 5.415 × 10⁻¹⁷ |
| 2.16 | 3.65 × 10⁻⁹ | 1 × 10⁻²⁰ | 5.415 × 10⁻¹⁷ |
| 2.22 | 1.825 × 10⁻¹² | 1 × 10⁻²⁰ | 5.416 × 10⁻¹⁷ |
| 2.28 | 1.809 × 10⁻¹⁴ | 1 × 10⁻²⁰ | 5.649 × 10⁻¹⁷ |
| 2.34 | 1.696 × 10⁻¹⁵ | 1 × 10⁻²⁰ | 9.3 × 10⁻¹⁷ |
| 2.4 | 7.107 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 1.81 × 10⁻¹⁶ |
| 2.46 | 5.777 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.317 × 10⁻¹⁶ |
| 2.52 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 2.58 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 2.64 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 2.7 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 2.76 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 2.82 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 2.88 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 2.94 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.06 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.12 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.18 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.24 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.3 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.36 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.42 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.48 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.54 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.6 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.66 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.72 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.78 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.84 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.9 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 3.96 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.02 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.08 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.14 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.2 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.26 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.32 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.38 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.44 | 5.702 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.357 × 10⁻¹⁶ |
| 4.5 | 5.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).
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.