Waveforms¶
Communication waveforms are the central configuration option of Modems
.
They describe the signal processing steps required to generate
base-band waveforms carrying information during transmission and, inversely,
the signal processing steps required to estimate information from base-band signals
during reception.
The following waveforms are currently supported:
Waveform |
Synchronization |
Channel Estimation |
Channel Equalization |
---|---|---|---|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
|
Yes |
No |
No |
- class CommunicationWaveform(modem=None, oversampling_factor=1, modulation_order=16, channel_estimation=None, channel_equalization=None)[source]¶
Bases:
ABC
,Serializable
Abstract base class for all communication waveform descriptions.
- Parameters:
modem (BaseModem, optional) – A modem this generator is attached to. By default, the generator is considered to be floating.
oversampling_factor (int, optional) – The factor at which the simulated baseband_signal is oversampled.
modulation_order (int, optional) – Order of modulation. Must be a non-negative power of two.
channel_estimation (ChannelEstimation, optional) – Channel estimation algorithm. If not specified, an ideal channel is assumed.
channel_equalization (ChannelEqualization, optional) – Channel equalization algorithm. If not specified, no symbol equalization is performed.
- symbol_type¶
Symbol type.
alias of
complex128
- bits_per_frame(num_data_symbols=None)[source]¶
Number of bits required to generate a single data frame.
- Parameters:
num_data_symbols (int) – Number of unique data symbols contained within the frame. If not specified, the waveform’s default number of data symbols will be assumed.
- Return type:
Returns: Number of bits.
- data_rate(num_data_symbols)[source]¶
Data rate theoretically achieved by this waveform configuration.
- Parameters:
num_data_symbols (int) – Number of data symbols contained within the frame.
- Return type:
Returns: Bits per second.
- abstract demodulate(signal)[source]¶
Demodulate a base-band signal stream to data symbols.
- Parameters:
signal (numpy.ndarray) – Vector of complex-valued base-band samples of a single communication frame.
- Return type:
- Returns:
The demodulated communication symbols
- abstract map(data_bits)[source]¶
Map a stream of bits to data symbols.
- Parameters:
data_bits (numpy.ndarray) – Vector containing a sequence of L hard data bits to be mapped onto data symbols.
- Returns:
Mapped data symbols.
- Return type:
- abstract modulate(data_symbols)[source]¶
Modulate a stream of data symbols to a base-band signal containing a single data frame.
- Parameters:
data_symbols (Symbols) – Singular stream of data symbols to be modulated by this waveform.
- Return type:
Returns: Samples of the modulated base-band signal.
- abstract pick(placed_symbols)[source]¶
Pick the mapped symbols from the communicaton frame.
Additionally removes interleaved pilot symbols.
- Parameters:
placed_symbols (StatedSymbols) – The placed symbols.
- Return type:
Returns: The symbols with the mapped symbols picked from the frame.
- abstract place(symbols)[source]¶
Place the mapped symbols within the communicaton frame.
Additionally interleaves pilot symbols.
Returns: The symbols with the mapped symbols placed within the frame.
- abstract unmap(symbols)[source]¶
Map a stream of data symbols to data bits.
- Parameters:
symbols (Symbols) – Sequence of K data symbols to be mapped onto bit sequences.
- Returns:
Vector containing the resulting sequence of L data bits In general, L is greater or equal to K.
- Return type:
np.ndarray
- abstract property bandwidth: float¶
Bandwidth of the frame generated by this generator.
Used to estimate the minimal sampling frequency required to adequately simulate the scenario.
- Returns:
Bandwidth in Hz.
- Return type:
- abstract property bit_energy: float¶
Returns the theoretical average (discrete-time) bit energy of the modulated baseband_signal.
Energy of baseband_signal \(x[k]\) is defined as \(\sum{|x[k]}^2\) Only data bits are considered, i.e., reference, guard intervals are ignored.
- property bits_per_symbol: int¶
Number of bits transmitted per modulated symbol.
- Returns:
Number of bits per symbol
- Return type:
- property channel_equalization: ChannelEqualization¶
Channel estimation routine.
- Returns:
Handle to the equalization routine.
- Return type:
- property channel_estimation: ChannelEstimation¶
Channel estimation routine.
- Returns:
Handle to the estimation routine.
- Return type:
- property modem: BaseModem | None¶
Access the modem this generator is attached to.
Returns: A handle to the modem.
- property modulation_order: int¶
Access the modulation order.
- Returns:
The modulation order.
- Return type:
- abstract property num_data_symbols: int¶
Number of bit-mapped symbols contained within each communication frame.
- property oversampling_factor: int¶
Access the oversampling factor.
- Returns:
The oversampling factor.
- Return type:
- abstract property power: float¶
Returns the theoretical average symbol (unitless) power,
Power of baseband_signal \(x[k]\) is defined as \(\sum_{k=1}^N{|x[k]|}^2 / N\) Power is the average power of the data part of the transmitted frame, i.e., bit energy x raw bit rate
- abstract property samples_per_frame: int¶
Number of time-domain samples per processed communication frame.
- abstract property sampling_rate: float¶
Rate at which the waveform generator signal is internally sampled.
- Returns:
Sampling rate in Hz.
- Return type:
- abstract property symbol_energy: float¶
The theoretical average symbol (discrete-time) energy of the modulated baseband_signal.
Energy of baseband_signal \(x[k]\) is defined as \(\sum{|x[k]}^2\) Only data bits are considered, i.e., reference, guard intervals are ignored.
- Returns:
The average symbol energy in UNIT.
- property symbol_precoding_support: bool¶
Flag indicating if this waveforms supports symbol precodings.
Returns: Boolean support flag.
- property synchronization: Synchronization¶
Synchronization routine.
- Returns:
Handle to the synchronization routine.
- Return type:
- class PilotCommunicationWaveform(modem=None, oversampling_factor=1, modulation_order=16, channel_estimation=None, channel_equalization=None)[source]¶
Bases:
CommunicationWaveform
Abstract base class of communication waveform generators generating a pilot signal.
- Parameters:
modem (BaseModem, optional) – A modem this generator is attached to. By default, the generator is considered to be floating.
oversampling_factor (int, optional) – The factor at which the simulated baseband_signal is oversampled.
modulation_order (int, optional) – Order of modulation. Must be a non-negative power of two.
channel_estimation (ChannelEstimation, optional) – Channel estimation algorithm. If not specified, an ideal channel is assumed.
channel_equalization (ChannelEqualization, optional) – Channel equalization algorithm. If not specified, no symbol equalization is performed.
- class ConfigurablePilotWaveform(symbol_sequence=None, repeat_symbol_sequence=True, **kwargs)[source]¶
Bases:
PilotCommunicationWaveform
- Parameters:
symbol_sequence (PilotSymbolSequence, optional) – The configured pilot symbol sequence. Uniform by default.
repeat_symbol_sequence (bool, optional) – Allow the repetition of pilot symbol sequences. Enabled by default.
**kwargs – Additional
CommunicationWaveform
initialization parameters.
- pilot_symbols(num_symbols)[source]¶
Sample a pilot symbol sequence.
- Parameters:
num_symbols (int) – The expected number of symbols within the sequence.
- Return type:
- Returns:
A pilot symbol sequence of length num_symbols.
- Raises:
RuntimeError – If a repetition of the symbol sequence is required but not allowed.
- pilot_symbol_sequence: PilotSymbolSequence¶
The configured pilot symbol sequence.
- repeat_pilot_symbol_sequence: bool¶
Allow the repetition of pilot symbol sequences.
- class CWT¶
Communication waveform type.
alias of TypeVar(‘CWT’, bound=
CommunicationWaveform
)