Skip to Main Content Skip to Search
Home |   Select Country  Choose Country  |  Contact Us  |  Cart Store 
Create Account | Log In
Products & Services Solutions Academia Support User Community Company
spacer spacer spacer spacer spacer spacer

 

RF Toolbox 2.6

Visualizing Mixer Spurs

Mixers are non-linear devices used in RF systems. They are typically used to convert signals from one frequency to another. In addition to the desired output frequency, mixers also produce intermodulation products (also called mixer spurs), which are unwanted side effects of their nonlinearity. The output of the mixer occurs at the frequencies:

 Fout(N, M) = |N Fin + M Flo|

Here, Fin is the input frequency, Flo is the local oscillator frequency, N is a non-negative integer, and M is an integer. That is, N = 0, 1, 2, 3…, and M = …-3, -2, -1, 0, 1, 2, 3….

Contents

Only one of these output frequencies is the desired tone. For example, in a downconversion mixer (i.e. Fin = Frf) with a low side LO (i.e. Frf > Flo), the case N = 1 and M = -1 represents the desired output tone. That is:

 Fout(1,-1) = Fif = |N Fin + M Flo| = Frf - Flo

All other combinations of N and M represent the spurious intermodulation products.

Intermodulation tables (IMTs) are often used in system-level modeling of mixers. This demo first examines the IMT of a mixer. Then the demo reads an S2D format file containing an IMT, and plots the output power at each output frequency, including the desired signal and the unwanted spurs. The demo also creates a cascaded circuit which contains a mixer with IMT followed by a filter, whose purpose is to mitigate the spurs, and plots the output power before and after mitigation.

Introduction to Intermodulation Tables

The IMT provides information on the amount of power generated at each intermodulation product frequency. For accurate mixer spurs analysis results, the IMT should be built from simulated or measured data at the desired input signal and local oscillator frequency and power conditions. Extrapolation to other conditions will lead to inaccuracies.

Here is the IMT of a downconverting mixer with a low side LO, measured at Fin = Frf = 2.1GHz, Pin = Prf = -10dBm, Flo = 1.7GHz, and Plo = 7dBm.

      ! Input Signal Level (dBm) LO Level (dBm)
      # -10 7
      ! Element (N,M) gives power of |N*Fin+M*Flo| in dBc
      ! Top indices give M =
!Left-hand
!indices
!give
!N=
       %0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  0%   99 26 35 39 50 41 53 49 51 42 62 51 60 47 77 50
  1%   24 0  35 13 40 24 45 28 49 33 53 42 60 47 63
  2%   73 73 74 70 71 64 69 64 69 62 74 62 72 60
  3%   67 64 69 50 77 47 74 44 74 47 75 44 70
  4%   86 90 86 88 88 85 86 85 90 85 85 85
  5%   90 80 90 71 90 68 90 65 88 65 85
  6%   90 90 90 90 90 90 90 90 90 90
  7%   90 90 90 90 90 87 90 90 90
  8%   99 95 99 95 99 95 99 95
  9%   90 95 90 90 90 99 90
 10%   99 99 99 99 99 99
 11%   90 99 90 95 90
 12%   99 99 99 99
 13%   90 99 90
 14%   99 99
 15%   99

Notice that it is a convention in industry-standard IMTs to assume symmetry, namely:

 Power(Fout(N, M)) = Power(Fout(N, -M))

and RF Toolbox™ follows this convention.

If the measurement reveals that in fact the mixer is asymmetric, i.e.:

 Power(Fout(N, M)) != Power(Fout(N, -M)))

there is no way of accommodating this information in an industry-standard IMT. In this situation, the most common convention is to build an approximate model by placing the value:

 Max(Power(Fout(N, M)), Power(Fout(N, -M)))

at position N, M.

Thus industry-standard IMTs in general and RF Toolbox in particular will over-estimate the power of one spur in each pair of asymmetric spurs.

In the IMT, a "0" always appears in the table at the position (N = 1, M = 1), which represents both the desired signal and its symmetric image pair. All other entries are specified in dBc below the power of the mixer output at the desired frequency. (In the unlikely case of a spur being above the power of the desired, it will appear as a negative number, the magnitude of which is the spur power in dBc above the desired.)

For example, in the IMT above, at row N = 1, column M = 3, the IMT value is 13. RF Toolbox will place a pair of symmetric IM products at:

 Fout(1, 3) = Fin + 3Flo
 Fout(1,-3) = |Fin - 3Flo|

each with a power level of -13 dBc. The absolute power of a spur in dBm is calculated by subtracting the IMT dBc value from the output power (also in dBm) of the desired tone.

By convention, the special value of "99" means the tone at that index is negligible.

Create an RFCKT.MIXER Object using Data from an S2D File

Create an RFCKT.MIXER object to represent the downconverting mixer that is specified in the file 'samplespur1.s2d'. The mixer is characterized by S-parameters, spot noise and IMT. This data is stored in the NetworkData, NoiseData and MixerSpurData properties of the RFCKT object, respectively.

Mixer = rfckt.mixer('FLO', 1.7e9);      % Flo = 1.7GHz
read(Mixer, 'samplespur1.s2d');
PropertiesOfMixer = get(Mixer)
PropertiesOfMixer =

               Name: 'Mixer'
              nPort: 2
     AnalyzedResult: [1x1 rfdata.data]
           IntpType: 'Linear'
        NetworkData: [1x1 rfdata.network]
          NoiseData: [1x1 rfdata.noise]
      NonlinearData: Inf
      MixerSpurData: [1x1 rfdata.mixerspur]
          MixerType: 'Downconverter'
                FLO: 1.7000e+009
         FreqOffset: []
    PhaseNoiseLevel: []

IMT = Mixer.MixerSpurData.data
IMT =

  Columns 1 through 12

    99    26    35    39    50    41    53    49    51    42    62    51
    24     0    35    13    40    24    45    28    49    33    53    42
    73    73    74    70    71    64    69    64    69    62    74    62
    67    64    69    50    77    47    74    44    74    47    75    44
    86    90    86    88    88    85    86    85    90    85    85    85
    90    80    90    71    90    68    90    65    88    65    85    99
    90    90    90    90    90    90    90    90    90    90    99    99
    90    90    90    90    90    87    90    90    90    99    99    99
    99    95    99    95    99    95    99    95    99    99    99    99
    90    95    90    90    90    99    90    99    99    99    99    99
    99    99    99    99    99    99    99    99    99    99    99    99
    90    99    90    95    90    99    99    99    99    99    99    99
    99    99    99    99    99    99    99    99    99    99    99    99
    90    99    90    99    99    99    99    99    99    99    99    99
    99    99    99    99    99    99    99    99    99    99    99    99
    99    99    99    99    99    99    99    99    99    99    99    99

  Columns 13 through 16

    60    47    77    50
    60    47    63    99
    72    60    99    99
    70    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99
    99    99    99    99

Plot the Mixer Output Signal and Spurs

Use the PLOT method of the RFCKT object to plot the power of the desired output signal and the spurs. The second input argument must be the string 'MIXERSPUR'. The third input argument must be the index of the circuit for which to plot output power data. The RFCKT.MIXER object only contains one circuit (the mixer), so index 0 corresponds to the mixer input and index 1 corresponds to the mixer output.

CktIndex = 1;       % Plot the output only
Pin = -10;          % Input power is -10dBm
Fin = 2.1e9;        % Input frequency is 2.1GHz
fig = figure; plot(Mixer, 'MIXERSPUR', CktIndex, Pin, Fin);

Use the Data Cursor

Run the cursor over the plot to get the frequency and power level of each signal and spur.

Create an RFCKT.CASCADE Object

Create an amplifier object for LNA, a mixer object, and an LC Bandpass Tee filter object. Then build the cascade shown in the following figure:

FirstCkt = rfckt.amplifier('NetworkData', ...
    rfdata.network('Type', 'S', 'Freq', 2.1e9, 'Data', [0,0;10,0]), ...
    'NoiseData', 0, 'NonlinearData', inf);      % 20dB LNA
SecondCkt = copy(Mixer);                        % Mixer with IMT table
ThirdCkt = rfckt.lcbandpasstee('L', [97.21 3.66 97.21]*1.0e-9, ...
    'C', [1.63 43.25 1.63]*1.0e-12);            % LC Bandpass filter
CascadedCkt = rfckt.cascade('Ckts', {FirstCkt, SecondCkt, ThirdCkt});

Plot the Output Signal and Spurs of the LC filter in a Cascade

Use the PLOT method of the RFCKT object to plot the power of the desired output signal and the spurs. The third input argument is 3, which tells the RF Toolbox to plot the power at the output of the third component of the cascade (the LC filter).

CktIndex = 3;       % Plot the output signal and spurs of the LC filter,
                    % which is the 3rd circuit in the cascade
Pin = -30;          % Input power is -30dBm
Fin = 2.1e9;        % Input frequency is 2.1GHz
plot(CascadedCkt, 'MIXERSPUR', CktIndex, Pin, Fin);

Plot the Cascade Signal and Spurs in 3D

Use the PLOT method of the RFCKT object with a third input argument of 'all' to plot the input power and the output power after each circuit component in the cascade. Circuit index 0 corresponds to the input of the cascade. Circuit index 1 corresponds to the output of the LNA amplifier. Circuit index 2 corresponds to the output of the mixer, which was shown in the previous plot. Circuit index 3 corresponds to the output of the LC Bandpass Tee filter.

CktIndex = 'all';   % Plot the input signal, the output signal, and the
                    % spurs of the three circuits in the cascade: FirstCkt,
                    % SecondCkt and ThirdCkt
Pin = -30;          % Input power is -30dBm
Fin = 2.1e9;        % Input frequency is 2.1GHz
plot(CascadedCkt, 'MIXERSPUR', CktIndex, Pin, Fin);
view([68.5 26]);
close(fig);
Contact sales
Free technical kit
Trial software
E-mail this page

Get Pricing and
Licensing Options