Push Tracker
ria-toolkit-oss/src/ria_toolkit_oss/signal/signal.sigil

27 lines
2.3 KiB
Plaintext
Raw Normal View History

2026-07-21 10:16:09 -04:00
component SignalProcessing {
goal {
Provide the toolkit's signal generation and processing suite: functional waveform generators and a modular block-based modulation-chain framework.
Own the DSP building blocks that produce Recording objects for datasets and transmission.
}
interface {
Functional generators returning a Recording: sine, square, sawtooth, noise, chirp, lfm_chirp_complex, complex_sine.
Block framework: Block, SourceBlock, ProcessBlock, and RecordableBlock forming a DataType-typed chain, with sources (BinarySource, AWGNSource, SineSource, RecordingSource, ...), Mapper (PSK/QAM/PAM constellations; standalone APSK and cross-QAM mapper classes exist but are not reachable through Mapper) and SymbolDemapper, symbol modulators (GMSK, OOK, OQPSK), continuous-phase modulators (FSK, CPFSK), pulse-shaping filters (RaisedCosine, RootRaisedCosine, Gaussian, Sinc, Rect), Upsampling, channels (AWGNChannel, FlatRayleigh), and basic ops (Add, MultiplyConstant, PhaseShift, FrequencyShift, frequency up/down conversion).
High-level generators: PSKGenerator, QAMGenerator, and PAMGenerator, each with record(batch_size, num_bits).
This layer is a standalone library surface; the RIA Hub controller does not import it directly.
}
}
expand SignalProcessing {
logic {
A SignalGenerator validates that each block's output type matches the next block's input type; sample production is driven by the blocks themselves (Block and RecordableBlock via get_samples, and the PSK/QAM/PAM generators by chaining block __call__).
Blocks auto-serialize their JSON-safe attributes into the produced Recording's metadata.
}
constraints {
Supported modulations reachable via Mapper and the generators: PSK, QAM, PAM (constellation); GMSK, OOK, OQPSK (symbol); FSK and CPFSK (continuous). QAM and PAM require an even bits-per-symbol (QAM additionally more than 2). APSK and cross-QAM mapper classes exist but are unwired.
The basic generators (sine, square, sawtooth, noise, complex_sine) raise on a sample rate below 1 (chirp instead requires at least two samples); FSK and CPFSK require frequency spacing times symbol duration of at least 0.5.
Data flows as typed stages (bits, symbols, upsampled symbols, baseband, passband) via the DataType enum.
}
}