Skip to main content

Module blocks

Module blocks 

Source
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}
  - decimate

The 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

ModuleBlocks
sourcesimulated symbols, measured recordings
channelnoise, phase noise, frequency offset, linear channels, IQ imbalance
fibersingle-polarisation fibre propagation and its compensation
opticalWDM, dual-polarisation propagation, PMD, back-propagation
dspshaping, filtering, resampling, clock and carrier recovery, equalisation, frame synchronisation
wirelessantennas, fading, OFDM, MIMO detection
codingchannel codes, probabilistic amplitude shaping, mapping, soft demapping
ce_ofdmconstant-envelope OFDM
cpmcontinuous-phase modulation (CPFSK, MSK, GMSK)
systemsthe DVB-S2 chain of comnum-systems (ADR 0010)
analysisprobes, 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§

BlockInfo
The documentation of a block: its parameters and its ports.
BuildContext
What the builders of the blocks need besides their parameters.
CaptureState
A measured capture (capture, reference_sync).
ChannelState
The channel of a trial, as a genie-aided receiver knows it.
Coding
The coded blocks of a trial.
ConstellationSpec
A constellation given as a mapping.
Extension
A block of the registry, added by register for 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 Frame are.
OfdmFrame
An OFDM frame: what the receiver needs to undo transmit.
ReceiverState
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 by build, described by json_schema and checked by check_link like the others. A crate that defines blocks registers them before it runs a specification, and may ship its own comnum binary around cli::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§

ConstellationParam
The value of a constellation parameter: a name or a ConstellationSpec.