CT Detector Front-End for Photodiode Arrays
← Back to: Medical Imaging & Patient Monitoring
A CT detector front-end is “good” only when it turns tiny photodiode currents into codes with predictable noise, drift, and timing—so every channel stays calibratable and every sample stays correctly aligned. The practical path is to close the loop from PD realities → topology and noise budgeting → CDS timing → ADC/reference choices → deterministic markers and FPGA integrity flags.
What this front-end must guarantee (acceptance criteria)
This chapter defines what “good” means in measurable terms. A CT detector front-end must remain linear, low-noise, uniform across channels, and time-deterministic. Each guarantee below includes a testable definition and a failure signature that can be traced to a concrete design lever (Cf/Rf, integration timing, CDS, ADC/reference integrity, and marker/alignment discipline).
- Static linearity: gain error and INL over the intended input range (including near full-scale).
- Dynamic recovery: number of frames/samples required to return to baseline after near-saturation events.
- Stability: no “creep” in baseline when input is constant (drift is treated as a measurable error, not a narrative).
- Baseline RMS (dark/zero mode): code RMS with no signal stimulus.
- Low-signal RMS: code RMS at a representative low-dose equivalent level (still within front-end stimulus limits).
- Reference/ADC contribution: demonstrate the reference + ADC path is comfortably below the analog floor (margin is explicit).
- Offset/gain maps: per-channel offset and gain distributions must be measurable and stored.
- Residual after calibration: post-calibration residual must stay within a defined band (project-defined threshold).
- Drift vs temperature: the residual must not collapse across a temperature sweep; drift must be quantifiable and compensatable.
- Deterministic latency: define and verify a fixed mapping from sample aperture to output data word (within a known tolerance).
- Marker integrity: timestamp/marker must be monotonic and checkable (loss, duplication, mis-order are detectable).
- Alignment observability: misalignment cannot be silent—flags/counters must expose it before images degrade.
| Metric | Definition | How to measure | Failure signature |
|---|---|---|---|
| INL & gain error | Code vs known injection level residual | Step through N levels; fit line; compute residual curve | Compression near FS; curvature that varies by channel |
| Recovery | Samples to return within baseline band | Burst to near FS then stop; count samples until stable | Long tails; “memory” effect; channel-dependent delay |
| Baseline RMS | Std-dev of dark codes over a window | Dark mode; fixed timing; compute RMS and PSD if needed | RMS increases with humidity/handling; slow “walk” |
| Calibration residual | Post-map residual band | Apply stored offset/gain; re-test at a subset of levels | FPN bands; residual grows with temperature |
| Latency & marker integrity | Fixed sample→word mapping + monotonic counters | Inject periodic marker; verify sequence and alignment over long run | Rare drops/duplicates; drift-like “ghost” misalignment |
Photodiode array reality: current, capacitance, dark, leakage
The “input” to a CT detector channel is not just the desired signal current. The front-end sees a combined model: Iin(t) = Isig(t) + Idark(T) + Ileak feeding an input node with Cdet + Cpar. If this model is not bounded with measurements, later choices (Cf/Rf, integration time, CDS timing, and ADC resolution) become guesswork and low-dose stability often fails first.
Iin(t) = Isig(t) + Idark(T) + Ileak_total Integrator / CSA readout (per sample window Tint): Qwin = ∫ Iin(t) dt ≈ Iin_avg · Tint Vout ≈ Qwin / Cf Leakage-to-code constraint (practical budgeting): Require V_leak = (Ileak_total · Tint)/Cf ≤ k · LSB Where LSB = VFS / 2^N, k is margin (e.g., 0.25 for "¼ LSB" drift target) ⇒ Ileak_total ≤ k · (VFS / 2^N) · (Cf / Tint)
- Why this matters: Ileak and Idark are not “noise”; they create baseline shift that looks like random instability unless explicitly budgeted and measured.
- Cdet impact: larger input capacitance raises stability demands and increases susceptibility to coupling; it can also slow settling and break timing aperture consistency.
- Order-of-magnitude requirement: capture Imin/Imax and Idark(T) as bounds (not a single number). If bounds span multiple decades, integrator/CSA is often easier to budget.
| Parameter | How to obtain | Why it is load-bearing |
|---|---|---|
| Imin / Imax (bounds) | Detector characterization or vendor bounds; verify with injection sweep | Sets Cf/Rf and full-scale margin; prevents compression and recovery tails |
| Tint (timing window) | Design timing plan; verify with scope/logic marker timing | Directly converts current to charge; also defines noise bandwidth |
| Cdet + Cpar | Estimate + measure with LCR/step response; include ESD/switch parasitics | Determines stability margin, noise gain, settling, and coupling vulnerability |
| Idark(T) | Measure baseline vs temperature; store curve/fit parameters | Consumes low-dose budget; adds shot component; drives recal interval |
| Ileak_total (budget) | Dark drift test + humidity/handling A/B; isolate ESD/switch contributions | Turns into baseline creep; must be constrained to sub-LSB over Tint |
- Why “it looks random”: small Ileak variations (humidity, contamination, handling) create a slow-moving baseline that inflates RMS unless separated by drift analysis.
- Front-end mitigation: guard sensitive nodes, minimize exposed high-impedance copper, keep ESD choices consistent with leakage budget, and validate with a long-run dark drift test.
- Acceptance tie-in: the leakage budget should be expressed as “≤ k·LSB drift over Tint” so it remains compatible with ADC resolution changes.
TIA vs Integrator/CSA: choosing the front-end topology with clear boundaries
This section gives a practical selection boundary—not a generic amplifier overview. A topology is “right” only if it can meet your acceptance contract from H2-1 under the real input model from H2-2: Isig(t) + Idark(T) + Ileak into (Cdet + Cpar) with a defined integration/measurement window and an ADC interface that must be time-deterministic.
- Windowed sampling: is there a stable per-sample window Tint (fixed aperture and cadence)?
- Dynamic range: how many decades does Imax/Imin span under real exposure conditions?
- Input capacitance: how large is Cdet + Cpar at the AFE input node (including ESD/switch parasitics)?
- Baseline drift allowance: what is the maximum permitted drift within one window (e.g., “≤ ¼ LSB per Tint”)?
- Saturation & recovery: do near-full-scale bursts occur, and how quickly must the chain recover?
- ADC interface shape: is the ADC capture inherently sampled/held (window-friendly) or continuously tracked?
-
Rf thermal noise vs bandwidth/stability: pushing Rf up increases gain but also pushes noise and stability cost.
Failure signature: low-signal RMS does not improve with “better ADC,” or you must reduce bandwidth so much that settling within the measurement aperture becomes inconsistent. -
Large (Cdet + Cpar) makes the loop sensitive: the input capacitance changes the noise-gain shape and phase margin.
Failure signature: ringing/long tails after edges, or channel-dependent peaking that looks like “random noise” but is actually dynamic error. -
Dynamic range and recovery constraints: continuous outputs can clip during high exposure and recover with memory effects.
Failure signature: burst-to-burst baseline shifts and multi-frame “tails,” sometimes different per channel.
-
Reset / charge injection: the reset switch and parasitics can inject a step onto Cf.
Acceptance check: measure post-reset baseline step and its channel-to-channel distribution; verify settling time stays within the allocated guard time. -
kTC / reset noise: Cf carries a reset-related thermal noise term that can dominate the floor if untreated.
Acceptance check: compare baseline RMS with CDS enabled/disabled (or two-sample subtraction timing); the delta must match your budget expectations. -
Saturation recovery: once the integrator hits a limit, recovery depends on reset strategy and cadence.
Acceptance check: apply a near-FS burst, stop stimulus, and count windows until baseline returns within band (the “recovery frames” metric).
Noise budget, step by step: shot, kTC, amplifier, quantization, and reference noise
This is the “hard-value” chapter: it turns “noise talk” into a budget that can be computed and then verified on the bench. The key is to use one unit system end-to-end. For windowed CT readout, a practical default is charge noise per window (Qrms, in coulombs), then convert to ADC LSB RMS. For a resistive TIA, you may start from input-referred current noise and map it through the measurement bandwidth.
- Pick the unit: use Qrms per Tint (Integrator/CSA) or Irms (TIA), then commit to it.
- Define the mapping to codes: for Integrator/CSA, Vn = Qrms / Cf, then convert to ADC LSB RMS via full-scale.
- Compute shot noise: include both signal current and dark current contributions at your operating temperature.
- Compute reset/kTC term: treat it as a real floor unless CDS (or equivalent subtraction) measurably suppresses it.
- Add amplifier + ADC + reference terms: map each to the same unit, then combine with RSS.
- Validate with mode switches: use controlled toggles (CDS on/off, reference test mode, input short, timing variants) so each term can be isolated.
Shot noise is not only about “useful photons.” The dark current Idark(T) also produces a shot component. That is why low-signal stability can collapse at high temperature even if the analog chain is unchanged. In budgeting, always compute the shot term at the same operating point used for acceptance tests (temperature, window cadence, and baseline conditions).
Validation idea: run a dark acquisition across a temperature sweep and track RMS. If RMS rises strongly with temperature, the Idark-related term is likely consuming your low-dose budget.
In an integrator/CSA, each reset places the integration capacitor into a thermal state that appears as baseline uncertainty. This term can dominate the floor when Cf is small or when the reset cadence is aggressive. CDS (or two-sample subtraction) is valuable because it is a measurable mechanism to suppress reset-correlated uncertainty and slow drift components.
Validation idea: compare baseline RMS with CDS on/off using identical timing. If the measured delta is small, the floor is likely dominated elsewhere (shot, amplifier noise, or reference/ADC paths).
Amplifier voltage noise (en) typically maps through the loop’s noise gain, which becomes more sensitive as (Cdet + Cpar) grows. Amplifier current noise (in) behaves like an extra input current source; in a windowed integrator it accumulates over Tint into additional charge uncertainty. This is why a “low en” part is not automatically a win if input capacitance is large or if current noise dominates.
Validation idea: change Tint (or the effective bandwidth) and observe whether RMS scales in a way that matches the mapping you assumed. Budget terms that cannot be experimentally separated tend to become painful in production.
Quantization is a predictable RMS term tied to LSB size and effective resolution. Reference noise is often more subtle: it modulates codes directly and can mimic analog noise even when the input is quiet. In a well-balanced design, the ADC + reference equivalent input noise should be comfortably below the analog front-end floor (a common engineering target is “≤ one-third of the analog RMS,” or a clear dB margin).
Validation idea: use an input-short or internal test mode and compare RMS with different reference conditions. If RMS changes materially, reference integrity (buffering, decoupling, routing, load transients) is part of the root cause.
| Contributor | Compute in chosen unit | Depends on | How to validate (mode switch) | Primary mitigation |
|---|---|---|---|---|
| Shot (Isig + Idark) | Convert to Qrms per Tint (or Irms) | Temperature, average current, window cadence | Dark vs low-signal runs; temperature sweep | Reduce Idark impact; control leakage; thermal strategy |
| kTC / reset | Map to Qrms or Vn then to codes | Cf, reset timing, CDS effectiveness | CDS on/off; reset cadence variants | CDS tuning; Cf choice; cleaner reset switch behavior |
| Amplifier (en / in) | Map through noise gain or integrate over Tint | Cdet, loop compensation, bandwidth, Tint | Bandwidth/timing change; input-cap variants | Op-amp selection; compensation; layout to reduce Cpar |
| ADC quantization | LSB RMS equivalent | ENOB, full-scale mapping, dither/noise shaping | Input short / DC injection; resolution mode compare | Better mapping (gain/FS); choose ADC with real ENOB |
| Reference noise | Convert Vref noise to code RMS | Buffering, decoupling, load transients | Reference test mode; stress load and observe RMS | Reference path design; routing; isolation from switching loads |
CDS and sampling timing: removing reset artifacts and drift from codes
In CT detector readout, a “good” analog chain is often defeated by timing. Correlated double sampling (CDS) works only when the reset edge, the integration window, and the two sample points are engineered as a deterministic sequence. The priority is not extreme bandwidth—it is aperture repeatability and channel-to-channel alignment across the array.
- Reset the integrator/CSA node to a known starting condition.
- Guard / settle (do not sample during reset tail or MUX transients).
- Sample #1 (baseline capture, CDS “reference” sample).
- Integrate for a defined Tint window.
- Sample #2 (signal capture, CDS “signal” sample).
- Hold the captured level and convert (ADC activity must not disturb the sensitive node).
CDS subtracts two samples taken close in time: a baseline sample and a post-integration sample. This cancels terms that remain sufficiently correlated between the two captures (offset, slow drift, and portions of reset-correlated behavior). It does not cancel terms that change significantly between the two sample instants, such as fast noise, aperture mismatch, or a long reset-injection tail that is still decaying during sampling.
- CDS removes what is correlated between Sample #1 and Sample #2 (offset and low-frequency drift components).
- CDS does not remove errors caused by sampling at different points on a transient (aperture mismatch or incomplete settling).
- CDS must be validated with a mode switch (CDS on/off or timing variants) to prove the expected delta in RMS and baseline stability.
- Minimize coupling from reset control edge into the integration node (reduce parasitic coupling paths).
- Use consistent reset devices and routing per channel to reduce channel-dependent injection (avoid “random” differences).
- Keep sensitive nodes clean from leakage paths; otherwise reset-related steps appear as long drifting tails.
- After reset deassertion, enforce a guard time before Sample #1 so the tail is not captured as baseline.
- Do not change MUX/channel selection inside the dangerous window around Sample #1/#2; switch early and settle.
- Schedule ADC conversion so its digital/charge kickback does not coincide with sensitive sampling moments; hold isolates the node.
In an array, each channel must measure the same physical window. If Sample #1 or Sample #2 shifts relative to reset/integration edges, different channels capture different points on settling tails and transient behavior. That error does not look like white noise—it becomes channel-dependent bias and visible fixed-pattern structure. Bandwidth alone cannot fix this; timing determinism can.
| Item | Must align / must guard | What to observe | Failure signature if wrong |
|---|---|---|---|
| Reset deassert → Sample #1 | Guard time must cover reset tail | Integrator node (Cf), baseline capture level | Baseline step or drift; CDS “does not help” |
| MUX switch → Sample #1/#2 | Switch outside sampling danger window | ADC input node, settling behavior | Channel-dependent offset; visible FPN stripes |
| Sample #1/#2 aperture alignment | Channel-to-channel timing skew within limit | Logic timing vs analog node capture instant | “Noise” that tracks timing/edges, not physics |
| Hold → ADC convert | Hold isolates sensitive node from conversion | ADC input glitch; code-to-code stability | Conversion-coupled spurs; periodic banding |
Drift, fixed-pattern noise, and calibration hooks: what must be designed in from day one
For CT detector front-ends, success is not “it runs once.” The requirement is long-term stability: calibratable, traceable, and repeatable across temperature and time. This section defines what the analog chain must provide so that offset and gain variations become measurable maps—not unpredictable artifacts.
- Offset map is visible in dark mode and often drifts strongly with temperature.
- Gain map is visible under known stimulus/injection and must remain stable across timing configurations.
- Production robustness requires both maps, each tied to a versioned calibration record and operating conditions.
- Dark current vs temperature: shifts the low-signal baseline and shot floor; requires dark-mode capture and temperature tagging.
- Cf/Rf effective drift: changes scaling and baseline behavior; requires injection or known stimulus for repeatable gain checks.
- Reference drift: appears as global code drift and can mimic analog drift; requires reference switching/comparison modes.
- Timing drift: changes settling capture point; requires explicit logging of timing configuration and aperture alignment checks.
A calibration run is only trustworthy if the front-end can enter a controlled mode and explicitly label it in the output stream. The purpose here is simple: produce repeatable measurements for map generation and drift tracking.
- Dark mode: zero-input equivalent; used for offset map and drift tracking.
- Flat / stimulus mode: known stimulus or known injection; used for gain map and linearity checks.
- Short / clamp mode: force a known input condition; isolates chain noise and baseline behavior.
- Reference A/B compare: separate “reference drift” from “analog drift” by controlled switching and labeling.
| Hook | Front-end purpose | Must be labeled / logged | Validation check |
|---|---|---|---|
| Test injection (current/charge) | Gain map, linearity, dynamic range boundary | Injection enable, amplitude code, timing state | Injection uniformity + injection side-effects (added FPN) |
| Short / clamp input | Offset map, noise floor, drift tracking | Clamp state, channel mask, CDS config | No added leakage; stable baseline across windows |
| Reference A/B switch | Separate reference drift from analog drift | Selected reference ID, settle time, mode flag | Switch transient bounded; repeatable compare result |
| Mode flags + table version | Traceability for production and field drift tracking | Mode, Tint, gain range, temperature tag, table version | Reproducible re-run produces the same labeled conditions |
Crosstalk and settling: the multi-channel details that break arrays
In multi-channel CT detector front-ends, “crosstalk” is rarely a single mechanism. It is usually a mix of shared-node coupling, edge injection, and charge memory. The practical goal is to turn crosstalk into a classified, measurable, and repeatable specification—then close it with board-level return-path and timing discipline.
- Shared reference / supply coupling: many channels move together; strongly correlated with conversion or load steps on VREF/AVDD. Signature: global, in-phase modulation.
- Ground bounce / return-path coupling: spikes aligned to digital edges; magnitude depends on loop area and shared return impedance. Signature: edge-locked, often polarity-consistent.
- Control-line edge coupling: reset/MUX/S/H edges capacitively inject into high-Z nodes (integrator input, PD node). Signature: deterministic step/impulse at fixed timing offsets.
- Neighbor capacitance (routing + detector parasitics): strongest on adjacent channels; worsens with longer parallel runs and weak guarding. Signature: local, adjacency-dependent coupling map.
Many “victim” deviations are not true coupling; they are incomplete forgetting of a previous channel or a previous state. This must be treated as a timing-and-impedance problem.
- S/H memory: the hold capacitor retains previous channel level and bleeds into the next sample if discharge/settle is insufficient.
- ADC sampling kickback: SAR sampling capacitors draw impulsive current; without isolation/hold discipline it disturbs the analog node.
- Reset tail residue: reset is not an ideal instant; sampling during tail decay creates channel-dependent bias and visible fixed patterns.
The only settling that matters is the deviation at the sampling instant (Sample #1 / Sample #2). Define an acceptance bound using an epsilon target: |V(ts) − V(∞)| ≤ ε · VFS (or ≤ ε in LSB RMS units). This links timing, output impedance, and transient tails to an actionable limit.
- Aperture mismatch converts the same transient into different channel codes (fixed pattern, not random noise).
- Slew + settle must be considered: a large step may be slew-limited before exponential settling begins.
- Timing changes (guard time, convert placement) can reduce crosstalk more than swapping amplifier models.
| Coupling path | What to control | Front-end action |
|---|---|---|
| Shared VREF / AVDD | Dynamic load steps & loop area | Local decoupling near loads; keep reference return tight and short |
| Ground bounce | Shared return impedance | Continuous return path under sensitive nodes; avoid return detours |
| CTRL edge coupling | Capacitive injection into high-Z | Route CTRL away from integrator/PD nodes; add guarding where needed |
| Leakage & surface paths | Long tails, baseline drift | Guard rings; cleanliness and conformal coating treated as requirements |
- Single aggressor stimulus: excite one channel (known injection or controlled step); keep others quiet.
- Victim map: measure response across neighbors and far channels to classify “local” vs “global” coupling.
- Edge correlation: align waveforms to reset/MUX/S/H/convert edges; edge-locked spikes imply control/return coupling.
- Reference + ground observe: probe VREF and a true quiet ground point; global motion indicates shared-node issues.
- Timing sweeps: vary guard time, hold placement, and convert position; strong sensitivity implies settling/memory mechanisms.
- Quantify: define Xt = ΔVictim / ΔAggressor (code or equivalent input) as the regression metric.
Anti-alias and analog conditioning: the integration window is part of the filter
Anti-aliasing is not “add an RC.” In CT readout, the sampling method (integration window, sample/hold behavior, and ADC sampling) defines how out-of-band noise folds into the measured code. The first anti-alias element is often the integration window itself, and the remaining job is to manage sampling kickback and reference-driver stability.
- Tint defines an effective bandwidth: longer Tint averages more, shrinking the noise passband.
- Short Tint increases reliance on conditioning: more wideband noise is available to fold into the sampled result.
- Window shape matters: “integrate-and-dump” behaves differently than continuous TIA; the filter must match the sampling model.
- Continuous TIA output + sampled ADC input: wideband noise and ADC sampling kickback require output isolation / bandwidth shaping.
- Edge-rich control activity near sampling instants: reset/MUX/convert edges can create deterministic folding into the baseband.
- Reference driver is not quiet or not stable: reference noise or ringing becomes code noise and may bypass CDS cancellation.
The reference path must remain stable during sampling and conversion. If the reference node rings or droops under sampling currents, the ADC converts that behavior as if it were signal. Conditioning is successful when reference motion at sampling moments stays below the allowed noise contribution.
- Isolate impulsive sampling currents from the sensitive node (small series R + local C, placed to keep loop tight).
- Stabilize the driver under the real load (avoid oscillation or peaking that increases out-of-band energy).
- Schedule conversion so sampling moments do not overlap the noisiest switching edges (timing is part of anti-alias control).
| Mode | Tint window | Equivalent bandwidth target | Alias folding allowance | Conditioning elements | Verification idea |
|---|---|---|---|---|---|
| Low signal | Longer Tint | Narrow passband to reduce noise | Folded noise < small fraction of RMS budget | Window dominates; isolate kickback | Out-of-band injection → check code RMS change |
| High throughput | Shorter Tint | Wider band; needs stronger conditioning | Alias contribution bounded by ε at sample | AA/RC + output isolation + ref stability | Sweep guard/convert placement → stability check |
| Continuous TIA | No hard window | AA set by analog network | Prevent folding at ADC sampling | Output R/C + kickback isolation | Measure reference motion during sampling instants |
ADC choice for CT readout: SAR vs ΣΔ vs Pipeline in the detector front-end
In CT detector readout, an ADC is not “just resolution.” The practical selection hinges on in-band noise (ENOB in the effective window), per-channel sustained throughput, and deterministic latency that keeps timestamps/markers meaningful. Reference behavior and sampling kickback must be treated as part of the ADC solution, not as afterthoughts.
- In-band ENOB: effective noise within the readout window / conditioning bandwidth, not a “headline” datasheet number.
- Sustained per-channel rate: stable throughput and consistent behavior across channels, not peak burst capability.
- Deterministic latency: fixed, defined latency from sampling instant to data word, stable across modes and conditions.
- Reference + drive stability: reference noise/drift and sampling kickback translate directly into code noise and fixed patterns.
- Channel timing: simultaneous sampling vs interleaving mismatch (offset/gain/timing) as a fixed-pattern risk.
- Marker/timestamp alignment requires predictable, fixed latency.
- Multi-channel readout needs consistent timing behavior across channels.
- Front-end conditioning or integration window can constrain bandwidth so wideband noise is controlled.
- Sampling kickback: ADC sampling capacitors draw impulsive current; isolate the analog node during sample/convert.
- Reference load steps: VREF must remain quiet at sampling instants, or it becomes code noise.
- Interleaving mismatch (if used): offset/gain/timing mismatch can become fixed-pattern components unless bounded and verifiable.
Practical rule: SAR selection succeeds when the design can keep the reference node stable and can guarantee that sampling events are isolated from the noisiest switching edges.
- Low in-band noise is the primary target and internal filtering is acceptable.
- Latency can be larger, as long as it is well-defined and stable for marker attachment.
- Digital filter latency: group delay must be specified as a fixed mapping from sampling instant to output word.
- Mode changes can change effective bandwidth/latency; these changes must be surfaced in status/flags.
- Channel state alignment: multi-channel operation must ensure consistent filter state after resets or re-sync events.
Practical rule: ΣΔ is safe for CT front-end timestamps only when the conversion pipeline has a published, testable “time meaning” for each output word.
- High sustained throughput is needed and bandwidth cannot be overly narrowed by windowing.
- Latency is fixed and can be characterized across operating conditions.
- Drive settling: input drive and common-mode must settle within the sampling aperture to avoid deterministic code errors.
- Mode-dependent latency: internal calibration or mode switches must not shift the alignment point without flags.
- Interleaving inside the ADC may exist; mismatch risk must be bounded by verifiable specs and tests.
Practical rule: pipeline ADCs behave well in CT front-ends when their latency is stable and the input network is designed to meet a settling-at-sample epsilon bound.
- Simultaneous sampling keeps time meaning clean; the key spec is channel-to-channel aperture skew and its stability.
- Interleaving trades hardware for calibration burden; offset/gain/timing mismatch must be bounded and regression-tested.
| Item | Target / limit | Why it matters (CT edge) | How to verify |
|---|---|---|---|
| ENOB (in-band) | Defined within effective bandwidth/window | Predicts code RMS under real readout timing | Measure noise with same window/conditioning |
| Per-channel rate | Sustained output per channel | Avoids channel-to-channel behavior drift | Long run at max load; check drops/gaps |
| Deterministic latency | Fixed, mode-stable latency | Makes marker/timestamp semantics valid | Step/event → locate output word offset |
| Latency jitter | Bounded timing variation | Protects alignment across channels/frames | Sweep conditions; measure output timing |
| Reference noise/drift | Upper bound in code contribution | Reference motion becomes code noise/FPN | Probe VREF during sampling; correlate to code |
| Kickback tolerance | Isolation/hold strategy supported | Prevents deterministic spikes and cross-channel coupling | Compare with/without isolation; look for edge-locked artifacts |
| Simultaneous vs interleaved | Skew or mismatch limits defined | Mismatch produces fixed-pattern components | Stimulus sweep; check periodic/mapped errors |
Timestamps and sync markers at the detector edge: the minimum semantics that make alignment auditable
This section defines what “synchronization” means at the detector edge: each sample/line/frame must carry unambiguous alignment semantics and must expose health flags when the semantics are violated. The goal is not networking; it is a stable, testable mapping from control timing to marker fields on the output data stream.
- Sample-index marker: identifies the sample number; used to detect gaps and confirm ordering.
- Line marker: defines line boundary; ties sample-index ranges to a line_id.
- Frame marker: defines frame boundary; ties line_id ranges to a frame_id.
A free-running counter provides monotonic time. A latch event captures counter_value at a defined alignment point (sample, line_start, or frame_start). The output stream must declare whether the marker is attached to sample-time or output-time; the difference is the deterministic latency of the conversion path.
- Monotonic rule: counter_value is non-decreasing; discontinuities must be flagged.
- Rollover rule: overflow is expected; rollover_count (or epoch) makes reconstruction unambiguous.
- Reset semantics: a reset event must be visible (flag) so downstream can treat it as a timeline break.
| Flag | Trigger | Meaning |
|---|---|---|
| missing_marker | Expected marker not present / index gap | Alignment is not auditable for that segment |
| jitter_over_limit | Marker interval variation exceeds limit | Sampling window consistency is compromised |
| window_shift | Detected phase slip vs expected schedule | Samples no longer represent intended timing |
| latency_mode_changed | Conversion pipeline latency changed | Marker meaning must be re-interpreted |
| counter_non_monotonic | Counter decreased unexpectedly | Timeline integrity is broken |
- frame_id: increments each frame_start; rollover allowed with explicit rule.
- line_id: increments each line_start; ties sample ranges to a line.
- sample_index: monotonically increments per sample; gaps trigger missing_marker.
- counter_value: latched free-running counter at the declared latch event.
- latch_event_type: sample / line_start / frame_start.
- attach_point: sample-time or output-time (must be explicit).
- rollover_count (or epoch): makes counter overflow unambiguous.
- flags: missing_marker, jitter_over_limit, window_shift, latency_mode_changed, counter_non_monotonic.
- Define the endpoints: from sampling instant (t0) to the output word carrying the marker (t1).
- Declare the mapping: which output word index corresponds to each sample-index marker.
- Characterize stability: confirm latency does not shift across modes/temperature; if it shifts, set latency_mode_changed.
FPGA aggregation & data integrity: alignment, buffering, and auditable flags (no host/PCIe assumptions)
Aggregation at the detector edge succeeds only when two things stay true under temperature, cable variation, and run-time resets: (1) every lane/word remains correctly aligned, and (2) every output word can prove its integrity with counters, flags, and CRC. The goal is not throughput marketing; it is repeatable alignment and fast fault isolation between analog symptoms and digital transport issues.
A) Alignment layers: define what “aligned” means before building logic
In multi-ADC, multi-lane CT readout, alignment is not a single step. It is a stack of locks that must remain stable: bit boundary → word boundary → lane deskew → frame/marker alignment. Each layer must have a clear lock criterion and a failure indicator, otherwise bring-up becomes guesswork.
| Alignment layer | Lock evidence | FPGA action | Failure flag (example) |
|---|---|---|---|
| Bit alignment | Recognizable training bits / stable transitions | Bit slip until pattern hits; confirm over N samples | lane_unlock |
| Word alignment | Known word header / comma / test word | Word slip to find boundary; lock with hysteresis | word_misalign |
| Lane deskew | Multi-lane pattern phase relationship | Elastic buffer per lane; align to reference lane | deskew_overflow |
| Marker/frame alignment | sample_index / line_id / frame_id consistency | Align packing boundaries to markers; detect gaps | missing_marker |
“Looks fine on a scope” is not alignment proof. If the output word does not carry a monotonic sequence counter and consistent marker semantics, silent misalignment can persist and later appear as fixed-pattern artifacts.
B) Training → lock → monitor: a workflow that avoids “one-time alignment” traps
A robust aggregator locks in stages and keeps monitoring after lock. The recommended approach is: pattern-based lock for bit/word first, then marker-based validation for frame correctness, then continuous monitoring with counters/CRCs.
- Enable deterministic test output (ADC internal test pattern or controlled ramp/checkerboard).
- Bit lock per lane: slip until pattern matches; require stable match over N consecutive words.
- Word lock: locate the word boundary (header/comma/test word) and lock with hysteresis.
- Lane deskew: use elastic buffers to align all lanes to a chosen reference; record skew margin.
- Switch to normal data: keep deskew enabled; begin marker/sequence monitoring.
- Validate marker semantics: sample_index monotonic; line_id/frame_id boundaries land where expected.
- Turn on integrity tools: sequence counters + CRC + sticky error counters.
- Run a long soak test: watch error counters; verify no drift-induced deskew overflow/underflow.
- Static words (all-0 / all-1): quick sanity for bit flips and lane swaps.
- Checkerboard: exposes swapped bits and byte-lane inversions.
- Ramp: exposes word alignment and monotonic ordering issues.
- PRBS (if available): good for stress testing lane stability and CDC paths.
- FPGA-generated test stream: isolates the downstream packing/CRC logic from ADC/analog front-end.
C) Buffering & CDC: prevent silent mis-ordering across clock domains
Hidden failures often come from clock domain crossings (CDC): data looks valid, but ordering and alignment drift. The safe rule is: multi-bit data crosses via async FIFO (or handshake), while single-bit controls cross via synchronizers with explicit edge handling.
- ADC data clock domain → FPGA processing clock domain (packing/formatting).
- Marker/control generation domain → data domain (risk: control/data mis-association).
- Per-lane recovery clocks → common aggregation clock (deskew buffers required).
- Never “sync a bus” with multiple flip-flops; use async FIFO for multi-bit payload or multi-field marker bundles.
- Latch markers with data before crossing domains to avoid “correct marker on the wrong sample.”
- Elastic buffer depth must cover worst-case lane skew + jitter margin; if not, deskew_overflow is guaranteed under stress.
- Count over/underflow events and expose counters; transient CDC faults must be visible in field logs.
D) Integrity that can be audited: sequence counters + flags + CRC (and where they pay off)
Integrity is more than CRC. A good CT edge format separates analog condition flags (saturation/over-range) from digital transport flags (alignment/CDC/CRC failures), and includes sequence counters that catch missing words even when CRC still passes.
[ Payload ]
sample_code[ch] // per-channel converted code(s)
[ Marker semantics ]
frame_id | line_id | sample_index
counter_value (optional) // if detector-edge timebase is exported
latch_event_type / attach_point // sample-time vs output-time semantics
[ Flags ]
analog_flags: saturation | over_range | baseline_warning (if available)
digital_flags: lane_unlock | word_misalign | deskew_overflow | fifo_overflow | missing_marker
[ Integrity ]
seq_counter (per-stream or per-line)
crc16/crc32 (covers payload + marker + flags)
- seq_counter: catches missing/duplicated words even if CRC happens to match on adjacent data.
- missing_marker: detects semantic breaks (sample_index gaps) even if raw data still streams.
- deskew_overflow / fifo_overflow: proves buffering/CDC stress instead of hiding it as “random noise.”
- CRC: detects corruption in payload/marker/flags, including intermittent lane errors.
- Sticky error counters: transient issues become diagnosable in factory and in the field.
E) Factory & field: isolate analog vs digital failures using flags + test patterns
The fastest debug flow is a two-branch split: digital integrity failing (CRC/seq/alignment/CDC flags) versus analog condition failing (saturation/over-range without digital errors). A short decision table prevents “rebuilding the board” when the issue is actually lane deskew margin or CDC overflow.
| Symptom | Check first | Quick test | Likely root |
|---|---|---|---|
| CRC failures appear intermittently | crc_fail_count, lane_unlock | Force PRBS / checkerboard; soak test at temperature corners | Lane stability / deskew margin / CDC stress |
| Sequence gaps with no CRC errors | seq_gap, fifo_overflow | Reduce rate; watch overflow counters; check CDC boundaries | Buffer depth insufficient / CDC handling |
| Marker discontinuity (missing_marker) | missing_marker, latency_mode_changed | Verify marker attach point; confirm deterministic latency assumptions | Semantic mis-association (control/data) or mode shift |
| Saturation/over-range without digital errors | analog_flags only | Switch to known stimulus; compare channels; check gain/offset modes | Analog front-end range/bias/calibration issue |
These are representative parts frequently used for detector-edge aggregation. Equivalent families are acceptable; the key is resource fit (I/O, logic, memory interface) and timing closure margin.
| Function | Example P/N | Why it fits (in this chapter’s scope) |
|---|---|---|
| FPGA (mid/high aggregation) | AMD Xilinx XC7K325T, XCKU035, XC7A200T, ZU3EG | Resources for multi-lane deskew, FIFOs, CRC, counters, and sticky error stats |
| FPGA (alternate families) | Intel 10CX150 (Cyclone 10 GX), 10AX115 (Arria 10) | Comparable use for alignment pipelines and integrity instrumentation |
| External buffer memory (optional) | Micron MT41K256M16 (DDR3L), MT40A256M16 (DDR4) | Deeper elastic buffering/diagnostic capture without defining recorder/host |
| LVDS lane buffering (if needed) | TI SN65LVDS2, SN65LVDS4 | Simple differential receive/buffer stage for lane management within detector edge |
| Mode/flag I/O control (optional) | NXP PCA9555, Microchip MCP23S17 | Production-friendly control of resets/test modes/status lines (no host assumptions) |
FAQs (CT Detector Front-End)
These FAQs stay strictly within the detector-edge front-end: PD array inputs, TIA/integration, noise budgeting, CDS timing, ADC/reference choices, marker semantics, and FPGA alignment/aggregation integrity.