RX hardware¶
RFGen models receiver hardware as typed effects after an explicit receiver-input boundary. This keeps three different statements separate:
propagation says what reached one authoritative link endpoint;
receiver measurement facts say which receiver and measurement plane own the voltage; and
receiver effects say how noise, analog processing, conversion, and digital processing changed it.
The receiver-input boundary¶
Every signed receiver chain begins with receiver_measurement, a PLAN value
owned by one receiver setup. It declares receiver identity, nominal bandwidth,
effective noise bandwidth (ENBW), noise figure, impedance, and the
receiver_input measurement plane.
After final propagation or pathloss, receiver_input_boundary consumes the
realized signal and facts from that same upstream producer, the receiver
measurement, and the link’s authoritative PropagationEndpointFacts. The node
does not change IQ. It establishes the receiver-input qualifier and publishes
facts carrying the exact receiver, link, capture grid, plane, ENBW, noise
figure, and impedance.
This is a custody transition, not a generic relabel. A raw emission, facts from another propagation producer, a second endpoint authority with the same ids, or a forged qualifier is refused. Selects, conditionals, repeats, subgraphs, ordinary transforms, and combiners preserve the checked authority; a scalar receiver consumer requires one unambiguous boundary.
Equivalent-input noise¶
Two noise models are public, and they make different claims.
receiver_thermal_noise is the receiver model. It uses
where \(k\) is Boltzmann’s constant, \(T\) is reference temperature, \(B_{\mathrm{ENBW}}\) is the explicitly authored effective noise bandwidth, and \(F\) is the receiver noise factor. The boundary’s impedance converts available noise power in watts to the published voltage variance in V². Nominal receiver bandwidth is retained as evidence but is not substituted for ENBW.
awgn is synthetic target-SNR noise. It measures full-input mean-square
voltage and draws complex Gaussian noise at an authored ratio. Its
minimum_signal_power_v2 is the only numerical input floor; zero and
at/below-floor signals are undefined and refused. It is useful for controlled
training or test conditions, but it is not evidence of a calibrated thermal
receiver.
Both nodes require the signal and facts from the exact same checked boundary,
accept one [time] complex64-volts receiver only, and publish their realized
noise plane and receiver/link evidence. Multi-receiver attribution needs an
explicit per-receiver contract and is currently refused.
Receiver analog processing¶
Analog receiver effects run after equivalent-input noise and before conversion. This ordering matters: placing gain before input-referred noise would amplify the signal without amplifying the noise described by the receiver figure.
Automatic gain control¶
automatic_gain_control is a causal single-pole loop. For each sample it
computes post-gain magnitude, chooses the attack or decay time constant, and
updates gain toward positive target_v. gain_init and max_gain are
dimensionless; the exact gain trajectory is published with the signal.
The gain rail prevents unbounded loop growth during signal-free intervals. It does not clip waveform voltage.
Voltage limiting¶
receiver_voltage_limiter models a receiver analog protection rail in absolute
positive volts. It radially scales an over-rail complex sample and preserves
phase. The transmitter-side counterpart is transmitter_crest_limiter.
Neither limiter claims dBFS because neither binds converter full-scale
evidence. The retired combined limiter’s saturation_dbfs name was a false
reference to full scale and is not a public selector. AGC and the receiver
limiter share the analog interval; RFGen does not impose a relative order that
the modeled hardware did not declare.
Other analog effects include receiver mixing and LO error, IF finite-impulse- response filtering and scalar gain, group-delay realignment, and IQ imbalance. All consume typed complex voltage and preserve the checked chain lineage.
Conversion¶
The converter is not one opaque quantizer. Four nodes expose its evidence:
converter_scalingestablishes volts per code from ENOB and explicit full scale, or declares synthetic per-row normalization when full scale is null.converter_roundingperforms ties-to-even component rounding.converter_clippingapplies independent signed code rails to I and Q.converter_reconstructionreturns complex64 volts using the cited scale.
Signal and scale must come from the same immediate producer at every step. Thus a graph cannot pair one converter’s waveform with another converter’s scale or silently reorder clipping and rounding.
Digital receiver processing¶
Post-converter effects include rational resampling and sample-clock offset. The graph ordering contract places them after conversion. Their typed sample grids make changes in clock, spacing, origin, and sample count explicit rather than inferred from tensor length alone.
See also¶
Receiver stages API: selectors, order, and migration rules.
Nodes API: public classes, types, and extension contracts.
RX capture: capture coordinates and receiver context.
Noise-floor table: common
k T B Fvalues.