Expand description
The blocks of a declarative link and their registry.
A link is a list of blocks applied in order to a Frame. The first block is a
source, which draws the transmitted bits and symbols; every other block transforms
the current samples (a channel, a device, a DSP stage, a trained receiver) and may
record diagnostic values (an estimated frequency offset, the iterations of a fit).
registry lists every block with its parameters, their defaults and their meaning;
the command comnum blocks prints it.
A block is written as a mapping with a type, an optional label (the prefix of the
values it records, the type by default) and its parameters; a block without
parameters can be written as its name alone. Unknown parameters are errors.
link:
- {type: source, constellation: 16-QAM, n_symbols: 4096, symbol_rate: 32e9}
- {type: pulse_shape, sps: 2, rolloff: 0.1}
- {type: awgn, snr_db: $snr_db}
- {type: matched_filter, rolloff: 0.1}
- decimateThe wireless blocks (wireless) add antennas, fading channels, OFDM and MIMO
detection; the coding blocks (coding) add channel codes, mapping of coded bits
and soft demapping.
§The model of a trial
Frame carries one trial along the link. A simulated source sets the
transmitted symbols (symbols, indices, bits) and the samples; a coded link
starts with fec_encode, which draws the information bits (coding.payload) and
sets the coded bits, then map, which sets the symbols. With several transmit
antennas or two polarisations the samples of stream 0 stay in samples and those of
the others go to antennas, and Layout says what they are. The channel blocks
act on every stream and record what a genie-aided receiver knows
(ChannelState); a transmitter block leaves its frame to its receiver block in
InFlight. The receiver blocks bring the signal back to one sample per transmitted
symbol, aligned on the symbols, as the metrics need, and declare the noise of their
outputs (ReceiverState); the soft demapper and the decoder then fill
coding.llr and coding.decoded.
§The families of blocks
| Module | Blocks |
|---|---|
source | simulated symbols, measured recordings |
channel | noise, phase noise, frequency offset, linear channels, IQ imbalance |
fiber | single-polarisation fibre propagation and its compensation |
optical | WDM, dual-polarisation propagation, PMD, back-propagation |
dsp | shaping, filtering, resampling, clock and carrier recovery, equalisation, frame synchronisation |
wireless | antennas, fading, OFDM, MIMO detection |
coding | channel codes, probabilistic amplitude shaping, mapping, soft demapping |
ce_ofdm | constant-envelope OFDM |
cpm | continuous-phase modulation (CPFSK, MSK, GMSK) |
systems | the DVB-S2 chain of comnum-systems (ADR 0010) |
analysis | probes, recordings of the samples (dump), the declared posterior of a receiver |
Every module declares its blocks next to their code (blocks: the documentation
and the builder of every block, an Extension as the blocks of other crates); a test checks
that the parameters a block accepts and those it documents are the same.
Re-exports§
pub use optical::WdmFrame;pub use schema::Fact;pub use schema::Mapping;pub use schema::NameOr;pub use schema::Named;pub use schema::ParamDefault;pub use schema::ParamInfo;pub use schema::Params;pub use wireless::Csi;
Modules§
- analysis
- Measurements in the middle of a link: probes, recordings of the signal (
dump) and the declared posterior of a classic receiver. - ce_ofdm
- Constant-envelope OFDM (Thompson et al. 2008): the modulator and the phase demodulator, which records the error rates of the linear regime.
- channel
- Channels and impairments of one or several streams: noise, phase noise, frequency offset, linear channels, IQ imbalance, converters.
- coding
- Coding blocks: channel codes, mapping of the coded bits and soft demapping (bit-interleaved coded modulation).
- cpm
- Continuous-phase modulation: the modulator and its detectors.
- dsp
- Receiver DSP: shaping and matched filtering, resampling and decimation, clock recovery, adaptive equalisation, carrier recovery, frame synchronisation.
- fiber
- Single-polarisation fibre propagation and its compensation: linear fibre, split-step Fourier, EDFA, dispersion compensation, digital back-propagation.
- optical
- Optical blocks: wavelength-division multiplexing and dual-polarisation nonlinear propagation.
- schema
- The single description of a block: its parameters and its ports.
- source
- Sources: simulated symbols (
source) and measured recordings (capture,reference_sync). - systems
- Blocks of the standard-compliant chains of
comnum_systems(ADR 0010). - wireless
- Wireless blocks: several antennas, fading channels, OFDM and MIMO detection.
Structs§
- Block
Info - The documentation of a block: its parameters and its ports.
- Build
Context - What the builders of the blocks need besides their parameters.
- Capture
State - A measured capture (
capture,reference_sync). - Channel
State - The channel of a trial, as a genie-aided receiver knows it.
- Coding
- The coded blocks of a trial.
- Constellation
Spec - A constellation given as a mapping.
- Extension
- A block of the registry, added by
registerfor the blocks of another crate. - Frame
- The state carried along a link during one trial: what was transmitted, the current samples, and the contexts that some blocks set for the following ones.
- InFlight
- The frames between a transmitter block and its receiver.
- Layout
- What the streams of a
Frameare. - Ofdm
Frame - An OFDM frame: what the receiver needs to undo
transmit. - Receiver
State - What the receiver declares about its outputs.
Traits§
- Block
- A block of a link.
Functions§
- build
- Build a block from its JSON description.
- check_
link - Check the ports of a link of block types (see
schema::check_link). - json_
schema - The JSON Schema of a block of a link (see
schema::json_schema). - parse
- Deserialize the parameters of a block, with the block type in the error message.
- parse_
constellation - Parse a constellation, normalised to unit energy: a name of
Constellation::from_name(16-QAM,qam16,QPSK,BPSK,8-PSK,4-PAM,OOK) or a mapping{kind, m}(ConstellationSpec). - register
- Add a block to the registry: it is listed by
registry, built bybuild, described byjson_schemaand checked bycheck_linklike the others. A crate that defines blocks registers them before it runs a specification, and may ship its owncomnumbinary aroundcli::main. - registry
- Every block of the registry, in the order of a link: the blocks of this crate, then
those added by
register.
Type Aliases§
- Constellation
Param - The value of a
constellationparameter: a name or aConstellationSpec.