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% 99Notice 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);
Store