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 |
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
|
Yes |
Yes |
Yes |
- class CommunicationWaveform(modulation_order=16, channel_estimation=None, channel_equalization=None, synchronization=None)[source]¶
Bases:
ABC,SerializableAbstract base class for all communication waveform descriptions.
- Parameters:
modulation_order (
int) – Order of modulation. Must be a non-negative power of two. By default, a modulation order of \(16\) is assumed.channel_estimation (
ChannelEstimation|None) – Channel estimation algorithm. If not specified, no channel estimation is performed, which implicitly assumes an ideal channel.channel_equalization (
ChannelEqualization|None) – Channel equalization algorithm. If not specified, no symbol equalization is performed.synchronization (
Synchronization|None) – Time-domain synchronization routine. If not specified, no synchronization is performed, which implicitly assumes a channel without delay.
- bit_energy(bandwidth, oversampling_factor)[source]¶
Expected energy of a single data bit within the modulated baseband-signal.
Typically denoted by \(E_b\). Can be derived from the
symbol_energyvia the modulation order:\[E_b = \frac{E_s}{\log_2(M)}\]where \(M\) is the modulation order, i.e. the number of unique symbols.
- Returns:
The expected bit energy.
- Return type:
- bits_per_frame(num_data_symbols=None)[source]¶
Number of bits required to generate a single data frame.
- Parameters:
num_data_symbols (
int|None) – 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, bandwidth)[source]¶
Data rate theoretically achieved by this waveform configuration.
- Parameters:
- Return type:
Returns: Bits per second.
- abstract demodulate(signal, bandwidth, oversampling_factor)[source]¶
Demodulate a base-band signal stream to data symbols.
- Parameters:
- Return type:
- Returns:
The demodulated communication symbols
- estimate_channel(symbols, bandwidth, oversampling_factor, delay=0.0)[source]¶
Estimate the wireless channel of a received communication frame.
Wrapper around the channel estimation rountine assigned to this waveform via the
channel_estimationproperty.- Parameters:
- Return type:
- Returns:
The symbols and their respective channel states.
- abstract map(data_bits)[source]¶
Map a stream of bits to data symbols.
- Parameters:
data_bits (
ndarray[tuple[int],dtype[uint8]]) – Vector containing a sequence of L hard data bits to be mapped onto data symbols.- Return type:
Returns: Mapped data symbols.
- abstract modulate(data_symbols, bandwidth, oversampling_factor)[source]¶
Modulate a stream of data symbols to a base-band signal containing a single data frame.
- Parameters:
- 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 samples_per_frame(bandwidth, oversampling_factor)[source]¶
Number of time-domain samples per processed communication frame.
- Parameters:
Note that the overall sampling rate is defined as bandwidth * oversampling_factor.
- Returns:
Number of samples per frame.
- Return type:
- serialize(process)[source]¶
Serialize this object’s state.
Objects cannot be serialized directly, instead a
Factorymust be instructed to carry out the serialization process.- Parameters:
process (
SerializationProcess) – The current stage of the serialization process. This object is generated by theFactoryand provides an interface to serialization methods supporting multiple backends.- Return type:
- abstract symbol_energy(bandwidth, oversampling_factor)[source]¶
Expected energy of a single communication symbol within the modulated baseband-signal.
- Parameters:
Typically denoted by \(E_s\). HermesPy defines the symbol energy as the expected sum of squared magnitudes
\[E_s = \sum_{n=0}^{N-1} |x[n]|^2\]where \(x[n]\) are the complex base-band samples of a single communication symbol.
- Returns:
The expected symbol energy.
- Return type:
- property bits_per_symbol: int[source]¶
Number of bits transmitted per modulated symbol.
- Returns:
Number of bits per symbol
- Return type:
- property channel_equalization: ChannelEqualization[source]¶
Channel estimation routine.
- property channel_estimation: ChannelEstimation[source]¶
Channel estimation routine.
- property modulation_order: int[source]¶
Access the modulation order.
- Returns:
The modulation order.
- Return type:
- abstract property num_data_symbols: int[source]¶
Number of bit-mapped symbols contained within each communication frame.
- abstract property power: float[source]¶
Expected in-band power of the generated baseband-signal for within given target bandwidth.
Typically denoted by \(P\).
- Returns:
The expected power of the modulated signal.
- property symbol_precoding_support: bool[source]¶
Flag indicating if this waveforms supports symbol precodings.
Returns: Boolean support flag.
- property synchronization: Synchronization[source]¶
Synchronization routine.
- class PilotCommunicationWaveform(modulation_order=16, channel_estimation=None, channel_equalization=None, synchronization=None)[source]¶
Bases:
CommunicationWaveformAbstract base class of communication waveform generators generating a pilot signal.
- Parameters:
modulation_order (
int) – Order of modulation. Must be a non-negative power of two. By default, a modulation order of \(16\) is assumed.channel_estimation (
ChannelEstimation|None) – Channel estimation algorithm. If not specified, no channel estimation is performed, which implicitly assumes an ideal channel.channel_equalization (
ChannelEqualization|None) – Channel equalization algorithm. If not specified, no symbol equalization is performed.synchronization (
Synchronization|None) – Time-domain synchronization routine. If not specified, no synchronization is performed, which implicitly assumes a channel without delay.
- class ConfigurablePilotWaveform(symbol_sequence=None, repeat_symbol_sequence=True, **kwargs)[source]¶
Bases:
PilotCommunicationWaveform- Parameters:
symbol_sequence (
PilotSymbolSequence|None) – The configured pilot symbol sequence. Uniform by default.repeat_symbol_sequence (
bool) – Allow the repetition of pilot symbol sequences. Enabled by default.kwargs – Additional
CommunicationWaveforminitialization 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[source]¶ The configured pilot symbol sequence.
- class CWT[source]¶
Communication waveform type.
alias of TypeVar(‘CWT’, bound=
CommunicationWaveform)