This is the gr-channels package. It contains signal processing blocks to simulate channel models.
The Python namespace is in gnuradio.channels, which would be normally imported as:
See the Doxygen documentation for details about the blocks available in this package. A quick listing of the details can be found in Python after importing by using:
The basic gr::channels::channel_model block is essentially an additive white Gaussian noise (AWGN) channel with a few extra additions. This channel model simulates AWGN as well as frequency and timing offsets between the transmit and receiver and a simple static multipath environment.
The parameters include:
The gr::channels::fading_model builds a basic fading simulation. This model approximates a fading channel using the sum of sinusoids method for the number of expected multipath components. This block also takes in the Doppler frequency shift as a normalized value, a line-of-sight (LOS) parameter that is either true or false, the Rician K factor, and a random seed to the noise generators. These parameters are provided in the documentation as:
Extending the fading model, the gr::channels::selective_fading_model channel model allows us to specify frequency selective parameters for the model. Starting with the same inputs as the gr::channels::fading_model, this block also takes in power delay profile (PDP). The PDP is given as a vector of the times of the delays and another vector of the corresponding magnitudes of the PDP. We also specify the number of taps in the filter to simulate this. These parameters are provided in the documentation as:
GNU Radio also provides a model for incorporating parameters of a radio transmitter and receiver to better simulate signals as they would be transmitted and received through real hardware. This simulation tool can be used to see how a waveform would behave over a known radio, or if designing radio hardware, this block could help understand the requirements and tolerances for the new system.
The hardware impairments model is a Python-only hierarchical block, which is declared as digital.impairments(...). The block is also represented in GRC under the "Impairment Models" category.
The impairments model is actually made up of a handful of other hierarchical blocks, each of which perform one aspect of the impairments model. Each subsection is usable on its own, and each one can be used in GRC. These subsystems are:
There are also a few other blocks that were built to develop and simulate different hardware behaviors
The digital.impairments model combines the phase noise, IQ imbalance, and second and third order distortion generators. It also performs I and Q offset imbalance and internal frequency shifting problems.
The parameters for using the hardware impairments model are: