CodingBox Documentation

CMIS lane pages register map (10h, 11h, VDM, CDB)

Everything per lane in a CMIS module lives in banked pages: bank b (lower byte 126) covers lanes 8b+1 … 8b+8. Page 10h is where the host writes — data-path initialisation, Tx disable, polarity, squelch, equalisation and the staged control sets that select applications; page 11h is where it reads back — data-path states, per-lane flags, monitors, configuration status and the active control set. Pages 20h–2Fh hold VDM and 9Fh the CDB mailbox. This page lists the key bytes, compiled against CMIS 5.x (byte positions of some signal-integrity fields differ between 4.x and 5.x; those are given as ranges). Narrative: CMIS.

Legend: per-lane bytes use bit n−1 for lane n (bit 0 = lane 1 … bit 7 = lane 8); nibble fields use bits 7–4 for the odd lane and 3–0 for the even lane of each pair unless stated · rsvd = reserved.

Page 10h — lane control (host writes)

ByteFieldBits / contents
128DPDeinitLanebit per lane: 1 = deinitialise (take the lane's data path to DPDeactivated)
129rsvd
130OutputDisableTxbit per lane: 1 = Tx output (laser) off
131PolarityFlipTxbit per lane: invert Tx electrical input
132SquelchDisableTxbit per lane: 1 = disable automatic Tx squelch
133ForceSquelchTxbit per lane: 1 = force Tx squelch
134rsvd
135AdaptiveInputEqEnableTxbit per lane: 1 = adaptive host-side input equalisation
136AdaptiveInputEqRecallTxbit per lane: recall stored EQ setting (4.x: freeze)
137rsvd
138–141FixedInputEqTargetTxnibble per lane (138: lanes 1–2 … 141: lanes 7–8): fixed input EQ code 0–15
142rsvd
143ApplyDPInitLanebit per lane: 1 = apply Staged Control Set 0 and run DPInit
144ApplyImmediateLanebit per lane: apply SCS0 without re-initialising the data path
145–152Staged Control Set 0 — data-path configurationone byte per lane (145 = lane 1 … 152 = lane 8): bits 7–4 AppSelCode (1–15 = descriptor index, 0 = none) · 3–1 DataPathID (first host lane of the data path − 1) · 0 ExplicitControl (1 = use the SI settings below instead of the application defaults)
153SCS0 AdaptiveInputEqEnableTxbit per lane
154SCS0 AdaptiveInputEqRecallTxbit per lane
155rsvd
156–159SCS0 FixedInputEqTargetTxnibble per lane
160SCS0 CDREnableTxbit per lane: 1 = Tx CDR on, 0 = bypass
161SCS0 CDREnableRxbit per lane
162–165SCS0 OutputEqPreCursorTargetRxnibble per lane
166–169SCS0 OutputEqPostCursorTargetRxnibble per lane
170–173SCS0 OutputAmplitudeTargetRxnibble per lane
174–177rsvd
178–210Staged Control Set 1same layout as 145–177 (178–185 data-path configuration, 186–210 SI targets)
211–255Rx output controls and masksOutputDisableRx, PolarityFlipRx, SquelchDisableRx per lane; flag masks for page 11h (byte positions per revision)

Selection flow: write 145–152 → set 143 for the lanes → poll page 11h 202–205 for ConfigStatus → read 128–131 for the data-path state — CMIS, Speed & rate.

Page 11h — lane status (host reads)

ByteFieldBits / contents
128DPStateHostLane 1–23–0 lane 1 state · 7–4 lane 2 state (code table below)
129DPStateHostLane 3–4as above
130DPStateHostLane 5–6
131DPStateHostLane 7–8
132–133rsvd
134DPStateChangedFlagbit per lane; latched
135TxFaultFlagbit per lane
136TxLOSFlagbit per lane (host-side input LOS)
137TxCDRLOLFlagbit per lane
138TxAdaptiveInputEqFailFlagbit per lane
139Tx power high alarmbit per lane
140Tx power low alarm
141Tx power high warning
142Tx power low warning
143Tx bias high alarm
144Tx bias low alarm
145Tx bias high warning
146Tx bias low warning
147RxLOSFlagbit per lane (media-side LOS)
148RxCDRLOLFlagbit per lane
149Rx power high alarm
150Rx power low alarm
151Rx power high warning
152Rx power low warning
153OutputStatusRxbit per lane: 1 = Rx output enabled/valid
154–169Tx power monitors2 bytes per lane (154–155 lane 1 … 168–169 lane 8), unsigned, 0.1 µW
170–185Tx bias monitors2 bytes per lane, 2 µA × multiplier
186–201Rx power monitors2 bytes per lane, 0.1 µW
202ConfigStatus lanes 1–23–0 lane 1 · 7–4 lane 2 (code table below)
203ConfigStatus lanes 3–4
204ConfigStatus lanes 5–6
205ConfigStatus lanes 7–8
206–213Active Control Set — data-path configurationone byte per lane, same layout as page 10h 145–152: the configuration actually in force
214–234Active Control Set — SI settingsadaptive EQ enable/recall, fixed EQ, CDR Tx/Rx, Rx pre/post-cursor, Rx amplitude — mirror of the SCS layout
235DPInitPendingbit per lane: 1 = a staged configuration awaits ApplyDPInit
236–255rsvd / flags per revision

Data-path state codes (bytes 128–131)

CodeStateMeaning
1hDPDeactivatedlane idle; Tx off
2hDPInitinitialising with the applied configuration
3hDPDeinittearing down
4hDPActivatedTx on, data flowing
5hDPTxTurnOnlaser turning on
6hDPTxTurnOfflaser turning off
7hDPInitializedconfigured, waiting for Tx enable
0h, 8h–Fhrsvd

ConfigStatus codes (bytes 202–205)

CodeStatusMeaning
0hConfigUndefinedno configuration applied yet
1hConfigSuccessstaged set accepted and in force
2hConfigRejectedgeneric rejection
3hConfigRejectedInvalidAppSelAppSel code not advertised
4hConfigRejectedInvalidDataPathDataPathID not allowed for that application
5hConfigRejectedInvalidSIsignal-integrity target out of range
6hConfigRejectedLaneInUselane already part of another active data path
7hConfigRejectedPartialDataPathnot all lanes of the data path were configured
8h–Bhrsvd
ChConfigInProgressapplying
Dh–Fhcustomvendor

Page 12h — tunable laser control (per lane)

Channel number set, wavelength/frequency set, fine-tuning offset, tuning status and flags per lane, with capabilities on page 04h — Tunable maps.

Pages 20h–2Fh — VDM (Versatile Diagnostics Monitoring)

PagesContentsLayout
20h–23hDescriptors2 bytes per observable (128–255 → 64 per page, 256 in total): byte 0 bits 7–4 threshold-set ID, 3–0 lane (0 = module-level); byte 1 observable type (1 laser age · 2 TEC current · 3 laser frequency error · 4 laser temperature · 5/6 eSNR media/host · 7/8 PAM4 level transition media/host · 9–16 pre-FEC BER min/max/avg/current media/host · 17–24 FERC min/max/avg/current media/host · 128+ coherent set)
24h–27hSamples2 bytes per observable, same index as its descriptor; formats U16 / S16 / F16
28h–2BhThresholds8 bytes per threshold set: high alarm, low alarm, high warning, low warning
2Ch–2FhFlags and masksalarm/warning flags per observable (2Ch–2Dh) and masks (2Eh–2Fh)

F16 ratio format: bits 15–11 exponent e, bits 10–0 mantissa m; value = m × 10^(e − 24). Details: VDM & FEC metrics.

Page 9Fh — CDB command block

BytesFieldContents
128–129CMD IDcommand identifier, MSB first (0000h query status · 0040h module features · 0041h firmware-management features · 0100h get firmware info · 0101h start firmware download · 0102h abort · 0103h write firmware block LPL · 0104h write firmware block EPL · 0107h complete download · 0109h run image · 010Ah commit image)
130–131EPL lengthbytes of extended payload in pages A0h–AFh
132LPL lengthbytes of local payload (0–120)
133CdbChkCodechecksum over 128–132 and the LPL: one's complement of (Σ) mod 256
134RPL lengthreply payload length written by the module
135RplChkCodereply checksum
136–255LPLlocal payload (command parameters / reply)
A0h–AFh 128–255EPLup to 2048 bytes of extended payload

Writing byte 129 (the LSB of CMD ID) last triggers execution; the host then polls lower bytes 37–38 (CdbStatus) until CdbIsBusy clears.