Documentation

Phase Noise

Apply receiver phase noise to complex baseband signal

• Library:
• Communications Toolbox / RF Impairments

Description

The Phase Noise block adds phase noise to a complex signal. This block emulates impairments introduced by the local oscillator of a wireless communication transmitter or receiver. The block generates filtered phase noise according to the specified spectral mask and adds it to the input signal. For a description of the phase noise modeling, see Algorithms.

Ports

Input

expand all

Input signal, specified as an NS-by-1 vector of complex values. NS represents the number of samples in the input signal.

Data Types: `double`
Complex Number Support: Yes

Output

expand all

Output signal, returned as an NS-by-1 vector of complex values. NS equals the number of samples in the input signal.

Data Types: `double`
Complex Number Support: Yes

Parameters

expand all

Phase noise level in decibels relative to carrier per hertz (dBc/Hz), specified as a vector of negative scalars. The Phase noise level (dBc/Hz) and Frequency offset (Hz) parameters must have the same length.

Tunable: Yes

Frequency offset in Hz, specified as a vector of positive increasing values. The Phase noise level (dBc/Hz) and Frequency offset (Hz) parameters must have the same length.

Tunable: Yes

Data Types: `double`

Sample rate in samples per second, specified as a positive scalar. To avoid aliasing, the sample rate must be greater than twice the largest value specified by Frequency offset (Hz).

Tunable: Yes

Data Types: `double`

Initial seed of noise generator, specified as a positive scalar.

This block uses the Random Source block to generate noise. The block generates random numbers using the Ziggurat method (V5 RANDN algorithm). Every time you rerun the simulation, the block reuses the same initial seed. That way, the block outputs the same signal each time you run a simulation.

Tunable: Yes

Data Types: `double`

Display magnitude response of filter defined by the Phase Noise block. The block uses the `fvtool` function to display the magnitude response.

• `Interpreted execution` –– Simulate model using the MATLAB® interpreter. This option shortens startup time speed, but the speed of the subsequent simulations is slower than `Code generation`. In this mode, you can debug the source code of the block.

• `Code generation` –– Simulate model using generated C code. The first time you run a simulation, Simulink® generates C code for the block. The C code is reused for subsequent simulations, as long as the model does not change. This option requires additional startup time, but the speed of the subsequent simulations is faster than `Interpreted execution`.

Block Characteristics

 Data Types `double` | `single` Multidimensional Signals `no` Variable-Size Signals `no`

Algorithms

The output signal, yk, is related to input sequence xk by yk=xkejφk, where φk is the phase noise. The phase noise is filtered Gaussian noise such that φk=f(nk), where nk is the noise sequence and f represents a filtering operation.

To model the phase noise, define the power spectrum density (PSD) mask characteristic by specifying scalar or vector values for the frequency offset and phase noise level.

• For a scalar frequency offset and phase noise level specification, an IIR digital filter computes the spectrum mask. The spectrum mask has a 1/f characteristic that passes through the specified point.

• For a vector frequency offset and phase noise level specification, an FIR filter computes the spectrum mask. The spectrum mask is interpolated across log10(f). It is flat from DC to the lowest frequency offset, and from the highest frequency offset to half the sample rate.

IIR Digital Filter

For the IIR digital filter, the numerator coefficient is

`$\lambda =\sqrt{2\pi {f}_{offset}{10}^{L/10}}\text{\hspace{0.17em}},$`

where foffset is the frequency offset in Hz and L is the phase noise level in dBc/Hz. The denominator coefficients, γi, are recursively determined as

`${\gamma }_{i}=\left(i-2.5\right)\frac{{\gamma }_{i-1}}{i-1}\text{\hspace{0.17em}},$`

where γ1 = 1, i = {1, 2,..., Nt}, and Nt is the number of filter coefficients. Nt is a power of 2, from `2`7 to `2`19. The value of Nt grows as the phase noise offset decreases towards 0 Hz.

FIR Filter

For the FIR filter, the phase noise level is determined through log10(f) interpolation for frequency offsets over the range [df, fs / 2], where df is the frequency resolution and fs is the sample rate. The phase noise is flat from 0 Hz to the smallest frequency offset, and from the largest frequency offset to fs / 2. The frequency resolution is equal to $\frac{{f}_{s}}{2}\left(\frac{1}{{N}_{t}}\right)$, where Nt is the number of coefficients, and is a power of 2 less than or equal to `2`16. If Nt < `2`8, a time domain FIR filter is used. Otherwise, a frequency domain FIR filter is used.

The algorithm increases Nt until these conditions are met:

• The frequency resolution is less than the minimum value of the frequency offset vector.

• The frequency resolution is less than the minimum difference between two consecutive frequencies in the frequency offset vector.

• The maximum number of FIR filter taps is `2`16.

References

[1] Kasdin, N. J., "Discrete Simulation of Colored Noise and Stochastic Processes and 1/(f^alpha); Power Law Noise Generation." The Proceedings of the IEEE. Vol. 83, No. 5, May, 1995, pp 802–827.