Inheritance diagram of hermespy.modem.waveform_single_carrier.FMCWWaveform

The Frequency-Modulated Continuous Waveform (FMCW) is a single-carrier modulation scheme filtering the communication symbols with rectangle pulse shape:

Pulse Properties

(Source code, png, hires.png, pdf)


(Source code, png, hires.png, pdf)


The waveform can be configured by specifying the number of number of data- and preamble symbols contained within each frame, as well as the considered symbol rate:

1# Initialize the waveform description
2waveform = FMCWWaveform(
3    oversampling_factor=128,
4    symbol_rate=1e6,
5    bandwidth=10e6,
6    num_preamble_symbols=16,
7    num_data_symbols=32,
8    modulation_order=64,

Afterwards, additional processing steps such as synchronization, channel estimation, equalization, and the pilot symbol sequence can be added to the waveform:

 1# Configure the waveform's synchronization routine
 2waveform.synchronization = SingleCarrierCorrelationSynchronization()
 4# Configure the waveform's channel estimation routine
 5waveform.channel_estimation = SingleCarrierLeastSquaresChannelEstimation()
 7# Configure the waveform's channel equalization routine
 8waveform.channel_equalization = SingleCarrierZeroForcingChannelEqualization()
10# Configure the waveform's pilot symbol sequence
11waveform.pilot_symbol_sequence = CustomPilotSymbolSequence(
12    np.exp(.25j * np.pi * np.array([0, 1, 2, 3]))

In order to generate and evaluate communication transmissions or receptions, waveforms should be added to modem implementations. Refer to Transmitting Modem, Receiving Modem or Simplex Link for more information. For instructions how to implement custom waveforms, refer to Implementing Communication Waveforms.

class FMCWWaveform(bandwidth, chirp_duration=0.0, *args, **kwargs)[source]

Bases: FilteredSingleCarrierWaveform, Serializable

Frequency Modulated Continuous Waveform Filter Modulation Scheme.

  • bandwidth (float) – The chirp bandwidth in Hz.

  • chirp_duration (float, optional) – Duration of each FMCW chirp in seconds. By default, the inverse symbol rate is assumed.

property bandwidth: float

Bandwidth of the frame generated by this generator.

Used to estimate the minimal sampling frequency required to adequately simulate the scenario.


Bandwidth in Hz.

Return type:


property chirp_duration: float

FMCW Chirp duration.

A duration of zero will result in the inverse symbol rate as chirp duration.


Chirp duration in seconds.


ValueError – If the duration is smaller than zero.

property chirp_slope: float

Chirp slope.

The slope is equal to the chirp bandwidth divided by its duration.


Slope in Hz/s.

yaml_tag: Optional[str] = 'SC-FMCW'

YAML serialization tag