27 lines
2.3 KiB
Plaintext
27 lines
2.3 KiB
Plaintext
|
|
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.
|
||
|
|
}
|
||
|
|
}
|