Radio-Frequency Chain

Inheritance diagram of hermespy.simulation.rf_chain.rf_chain.RfChain

The RF chain model is used to simulate the impairments of the RF front-end of a wireless device. During simulation runtime, the RF chain configuration is applied to the signal before transmission over the air and after reception before further processing. More specifically, during transmission, the base-band samples to be transmitted are initially converted to the analog domain by a digital-to-analog converter, followed by modeling mixer impairments (I/Q imbalance and phase noise), and finally by a power amplifier:

graph LR dac[DAC] --> iq[I/Q] --> pn[PN] --> pa[PA]

During reception, the received signal is first amplified by a low-noise amplifier, followed by mixer impairments (I/Q imbalance and phase noise), and finally converted to the digital domain by an analog-to-digital converter:

graph LR lna[LNA] --> pn[PN] --> iq[I/Q] --> adc[ADC]
class RfChain(phase_offset=None, amplitude_imbalance=None, adc=None, power_amplifier=None, phase_noise=None)[source]

Bases: Serializable

Radio-frequency (RF) chain model.

Parameters:
  • phase_offset (float, optional) – I/Q phase offset in radians.

  • amplitude_imbalance (float, optional) – I/Q amplitude imbalance.

  • adc (AnalogDigitalConverter, optional) – The analog to digital converter at the end of the RF receive chain. If not specified, ideal analog-to-digital conversion introducing no additional noise is assumed.

  • power_amplifier (PowerAmplifier, optional) – The power amplifier at the beginning of the RF transmit chain. If not specified, ideal linear power amplification is assumed.

  • phase_noise (PhaseNoise, optional) – Phase noise model configuration. If not specified, an ideal oscillator introducing no phase noise is assumed.

add_iq_imbalance(input_signal)[source]

Adds Phase offset and amplitude error to input signal.

Notation taken from https://en.wikipedia.org/wiki/IQ_imbalance.

Parameters:

input_signal (np.ndarray) – Signal to be deteriorated as a matrix in shape #no_antennas x #no_samples. #no_antennas depends if on receiver or transmitter side.

Returns:

Deteriorated signal with the same shape as input_signal.

Return type:

np.ndarray

receive(input_signal)[source]

Returns the distorted version of signal in “input_signal”.

According to reception impairments.

Return type:

Signal

transmit(input_signal)[source]

Returns the distorted version of signal in “input_signal”.

According to transmission impairments.

Return type:

Signal

property adc: AnalogDigitalConverter

The analog to digital converter at the end of the RF receive chain.

property amplitude_imbalance: float

I/Q amplitude imbalance.

Raises:

ValueError – If the imbalance is less than zero or more than one.

property phase_noise: PhaseNoise

Phase Noise model configuration.

property phase_offset: float

I/Q phase offset.

Returns: Phase offset in radians.

property power_amplifier: PowerAmplifier

Access the PowerAmplifier of the rf chain.

Returns:

A handle to the PowerAmplifier.

Isolation model (to be implemented): Kiayani et al.[1]