Single Carrier¶

Single carrier waveforms modulate only a single discrete carrier frequency. They are typically applying a shaping filter around the modulated frequency, of which the following are currently available:
- class FilteredSingleCarrierWaveform(num_preamble_symbols=16, num_data_symbols=256, num_postamble_symbols=0, pilot_rate=0, guard_interval=0.0, pilot_symbol_sequence=None, repeat_pilot_symbol_sequence=True, **kwargs)[source]¶
Bases:
ConfigurablePilotWaveformThis method provides a class for a generic PSK/QAM modem.
The modem has the following characteristics: - root-raised cosine filter with arbitrary roll-off factor - arbitrary constellation, as defined in modem.tools.psk_qam_mapping:PskQamMapping
This implementation has currently the following limitations: - hard output only (no LLR) - no reference signal - ideal channel estimation - equalization of ISI with FMCW in AWGN channel only - no equalization (only amplitude and phase of first propagation path is compensated)
- Parameters:
num_preamble_symbols (
int) – Number of preamble symbols within a single communication frame.num_data_symbols (
int) – Number of data symbols within a single communication frame.num_postamble_symbols (
int) – Number of postamble symbols within a single communication frame.guard_interval (
float) – Guard interval between communication frames in seconds. Zero by default.pilot_rate (
int) – Pilot symbol rate. Zero by default, i.e. no pilot symbols.pilot_symbol_sequence (
PilotSymbolSequence|None) – The configured pilot symbol sequence. Uniform by default.repeat_pilot_symbol_sequence (
bool) – Allow the repetition of pilot symbol sequences. Enabled by default.kwargs (
Any) – Waveform generator base class initialization parameters.
- classmethod Deserialize(process)[source]¶
Deserialize an object’s state.
Objects cannot be deserialized directly, instead a
Factorymust be instructed to carry out the deserialization process.- Parameters:
process (
DeserializationProcess) – The current stage of the deserialization process. This object is generated by theFactoryand provides an interface to deserialization methods supporting multiple backends.- Return type:
- Returns:
The deserialized object.
- demodulate(signal, bandwidth, oversampling_factor)[source]¶
Demodulate a base-band signal stream to data symbols.
- Parameters:
- Return type:
- Returns:
The demodulated communication symbols
- map(data_bits)[source]¶
Map a stream of bits to data symbols.
- Parameters:
data_bits (
ndarray) – Vector containing a sequence of L hard data bits to be mapped onto data symbols.- Return type:
Returns: Mapped data symbols.
- 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.
- 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.
- pilot_signal(bandwidth, oversampling_factor)[source]¶
Model of the pilot sequence within this communication waveform.
- Parameters:
- Return type:
Returns: The pilot sequence.
- 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.
- plot_filter(oversampling_factor=64)[source]¶
Plot the transmit filter shape.
- Parameters:
oversampling_factor (
int) – The oversampling factor used for the waveform generation.- Return type:
Returns: Handle to the generated matplotlib figure.
- plot_filter_correlation(oversampling_factor=64)[source]¶
Plot the convolution between transmit and receive filter shapes.
- Parameters:
oversampling_factor (
int) – The oversampling factor used for the waveform generation.- Return type:
Returns: Handle to the generated matplotlib figure.
- 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:
- 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 guard_interval: float[source]¶
Frame guard interval.
- Raises:
ValueError – If interval is smaller than zero.
- property modulation_order: int[source]¶
Access the modulation order.
- Returns:
The modulation order.
- Return type:
- property num_data_symbols: int[source]¶
Number of data symbols per frame.
- Raises:
ValueError – If num is smaller than zero.
- property num_postamble_symbols: int[source]¶
Number of postamble symbols.
Transmitted at the end of communication frames.
- Raises:
ValueError – If the number of symbols is smaller than zero.
- property num_preamble_symbols: int[source]¶
Number of preamble symbols.
Transmitted at the beginning of communication frames.
- Raises:
ValueError – If the number of symbols is smaller than zero.
- property pilot_rate: int[source]¶
Repetition rate of pilot symbols within the frame.
A pilot rate of zero indicates no pilot symbols within the data frame.
- Raises:
ValueError – If the pilot rate is smaller than zero.
- class RolledOffSingleCarrierWaveform(relative_bandwidth=1.0, roll_off=0.0, filter_length=16, *args, **kwargs)[source]¶
Bases:
FilteredSingleCarrierWaveformBase class for single carrier waveforms applying linear filters longer than a single symbol duration.
- Parameters:
relative_bandwidth (
float) – Bandwidth relative to the configured symbol rate. One by default, meaning the pulse bandwidth is equal to the symbol rate in Hz, assuming zero roll_off.roll_off (
float) – Filter pulse shape roll off factor between zero and one. Zero by default, meaning no inter-symbol interference at the sampling instances.filter_length (
int) – Filter length in modulation symbols. 16 by default.
- 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:
- property filter_length: int[source]¶
Filter length in modulation symbols.
Configures how far the shaping filter stretches in terms of the number of modulation symbols it overlaps with.
- Raises:
ValueError – For filter lengths smaller than one.
- property relative_bandwidth: float[source]¶
Bandwidth relative to the configured symbol rate.
- Raises:
ValueError – On values smaller or equal to zero.
- property roll_off: float[source]¶
Filter pulse shape roll off factor.
- Raises:
ValueError – On values smaller than zero or larger than one.