SPURS Software - RF Design Magazine Software Contest Winner
back in 1992, RF Design magazine ran a software contest. Those were the days when most engineers and hobbyists
wrote software in either Basic or Fortran. I happened to use Turbo Pascal, by Borland. At the time, I was working
as an RF engineer for Comsat, in Germantown, Maryland. Having done a lot of frequency conversion designs in my
previous work at General Electric, and even more there at Comsat, I had already written a crude program to
calculate mixer spurious products, so this challenge gave me the excuse I needed to refine the user interface and
add some creature comfort features like loadable mixer spur files and detection of spectral inversion if present.
Although I did not win the grand prize, I did win the runner-up prize (along with, I think, a couple other
people). The prizes included having the following article published in the November 1992 edition of the magazine,
a couple experimenter kits of surface mount inductors and resistors, a T-shirt (which I still have), and a couple
other items. Of course, the greatest prize as far was I was concerned was having an article published in a major
Sadly, I do not even own a copy of the program any more, or I would make it available for
download. RF Design distributed it, so if anyone happens to have a copy and would send it to me, I will post it
Here is a scanned and OCRed version of the article that appeared in the November 1992 edition
of "RF Design."
SPURS Calculates Direct and Intermodulation Products
By Kirt Blattenberger
COMSAT, Systems Division
|SPURS is the evolution of a program written originally to provide a simple means of
determining spur products. However, as the program was used both by the author and his fellow engineers, it
became clear that some user-friendliness would be a nice addition. Over the years much has been incorporated
in the form of error trapping, input and output display screen format, file handling, and on-line help
Basic system requirements to run SPURS v1.01 are an
IBM-compatible computer with 125 kBytes of free RAM, and a text screen. Color is nice but not necessary.
Running from either a hard or a floppy drive is possible. As can be seen on the input screen block diagram
(see Figure 1), the system is modeled as a cascaded ideal input filter, a mixer, and an ideal output filter.
The operator can select either a fixed local oscillator (LO) or a variable LO. Both up and down conversions
|be analyzed. SPURS performs a single-conversion, single-tone analysis of mixer spurious
products using parameters entered in the input parameter screen. Spurious products will be calculated
according to jLO ± kRF and kRF ± jLO, where j and k are integers for harmonics entered in the Highest Harmonic
input lines. Spurs that fall within the specified output filter bandwidth will be displayed and recorded. In
order to facilitate choosing a fixed LO frequency or variable frequency range, SPURS calculates the low-side
and high-side LO center frequencies that translate the center of the input frequency range to the center of
the output frequency range.
Input and Output Frequencies
Input and output frequencies describe the cutoff points for ideal bandpass filters at the input and output
of the mixer. Two forms are possible to specify the
|cutoff frequencies of the filters, center frequency and bandwidth or low and
high cutoff frequencies. Figure 1 shows the input parameter screen when the center frequency and bandwidth
input format is used along with a fixed frequency LO. Input Frequency and RF are used interchangeably
throughout this document. The use of the term RF is avoided for the input frequency since in the case of an up
converter the output may be considered the RF. However, in the output spur table and in the mixer spur level
files, RF is used to designate the harmonic number since doing so conforms to industry standards. Frequency
units (Hz, kHz, MHz, etc.) must be kept constant. Six places are provided for frequency inputs in order to
allow a span of nine decades between the lowermost and uppermost frequencies with at least a two place
Frequency inversion occurs when high frequencies at the
input of the conversion process are translated to low frequencies at the output, and vice versa (Figure 2). In
general, a high-side LO on either an up or a down conversion will result in a frequency inversion at the
Figure 2. Examples of mixers exhibiting inversion and no inversion.
Figure 1. SPURS input screen. Center frequency/BW and fixed LO specifications have been made.
|output. In the case of a dual conversion, two inversions will result in a
non-inverted output. Some applications can tolerate frequency inversion; however, voice systems with an
inversion result in unintelligible information. SPURS tests for inversion and reports the result to the screen
and, if selected, to the printer or disk file.
Two types of local
oscillators (LO) may be chosen: fixed and variable. If a fixed LO is chosen, that LO frequency will remain
fixed while the input frequency is swept in accordance with the chosen number of steps. If a variable LO is
chosen, the variable LO will step from the low frequency to the high frequency using a number of steps
designated by the user. Computation time increases over the fixed LO case by a factor equal to the number of
LO steps + 1. Spurious products will be calculated according to jLO ± kRF and kRF ± jLO, where j and k are
integers for harmonics entered in the Highest Harmonic input lines. Spurs that fall within the specified
output filter band will be displayed and recorded. In order to avoid an unnecessarily long list of inband spur
products, the 1 xi spurs are not recorded. If at least one occurrence is encountered, then the appropriate
"X", "Y", or "Z" is displayed in the output spur table and a note is made in the output file. Frequency
inversion must be considered when choosing the LO frequency.
Highest RF and LO Harmonics
Enter values for the highest harmonics to be used when calculating the spurious product frequencies. The
largest spur order to be calculated will equal the highest RF harmonic added to the highest LO harmonic.
Separate values are allowed for the two highest harmonics since computation time and the size of the spur
product file are highly dependent on both values. Many times high order LO harmonics are more important due to
leakage of the usually higher input power of the LO (+13 dB or more greater than maximum RF, typically). The
output spur table will display those products which are generated by the mixing process from 0 to the highest
harmonic values entered. The zeroth harmonic represents the DC (direct current) component, if any. Calculation
time and the output spur list can be shortened by choosing the lowest harmonic necessary to achieve the
required mixer spurious suppression.
Figure 3. SPURS output screen.
|For instance, if all RF harmonic spurs above the 5th and all LO harmonic spurs above the
7th are suppressed below the system requirement, then test only for up through the 5th RF harmonic and the 7th
Steps for Input Frequency
The input frequency is stepped through the range entered in the Input Frequency line. Entering a number of
steps of 1 would include the low and high frequencies only. Be sure to include enough steps to assure all of
the possible inband spur occurrences. For example, to include a specific frequency point of, say, 70 MHz, when
the low frequency is 10 MHz and the high frequency is 100 MHz, enter 9 for the number Input Frequency Steps.
The sixth step will be at exactly 70 MHz. The frequency step size can be calculated thusly:
Frequency = (fHIGH - fLOW) / Steps for
= Bandwidth / Steps for
Frequency steps are usually easier to
visualize without a calculator when the input and output frequencies are entered in the center frequency and
bandwidth form. For example, a bandwidth of 9 MHz (see above example) with a number of steps of 9 results in a
1 MHz step size.
|Steps for LO Frequency
The LO frequency is stepped through the range entered in
the LO Frequency line. Entering a number of steps of 1 would include the low and high frequencies only. Be
sure to include enough steps to insure all of the possible in band spur occurrences are found. Typically, the
LO will not need to be stepped in as small of a frequency increment as will the input. Three or four points
within the narrowest passband should suffice. For example, if the input has a BW of 20 MHz and the output has
a BW of 60 MHz, then four steps in each 20 MHz band would result in:
60/20 = 3 bands → 3x4 = 12 LO steps
Spur Table Output Screen
Inband spurious mixer products which fall within the
output filter band are represented in the spur table by an "X" if the spur was created by a jLO ± kRF product,
by a "Y" if created by a kRF ± jLO product, or by a "Z" if created by . both an "X" and a "Y" type product. A
"-" occurs in each harmonic location not taken by "X", "Y", or "Z", and indicates the highest harmonic tested
per the input parameter screen. If CURRENT.MXR, the mixer spur level file, was successfully read in during
program start-up, pressing F9 will display the corresponding power level (-dBc) relative to the 1 xi product.
Also displayed will be the mixer model number and the RF and LO input power for
|which the levels are valid, as specified in CURRENT.MXR. Conversion loss is not
accounted for in the level unless accounted for in CURRENT.MXR.
Figure 3 is the output screen spur table
in the X, Y, and Z format. Upon quitting the program you may review the results with a standard text editor or
Along with the spurious information, at the beginning of the file the file name, time, and
date plus all of the input parameter data is saved. The desired spurious product usually occurs for j = 1 and
k = 1; therefore, since it occurs most often it is not included in the output spur list. However, if it does
occur at least one time, the appropriate "X", "Y", or "Z" is displayed in the output screen spur table and a
statement is inserted into the output hard copy or disk file. Figure 4 shows the format.
file format is convenient for importing into other programs for post-processing such as graphing.
Assume the following system specifications:
Center Frequency: 150 MHz
Bandwidth (0.1 dB) : 20 MHz
(3.0 dB) : 25 MHz
(40 dB) : 40 MHz
Max Power: -10 dBm
LO Power: +10 dBm
Center Frequency: 500 MHz
Bandwidth (0.1 dB) : 20
(3.0 dB) : 25 MHz
(50 dB) : 40 MHz
Inband Spurious: -60
No Frequency Inversion
Looking at the mixer spur level data for EXAMPLE.MXR in Figure 5 shows that the 5RF x 7LO spur is the
highest order spur in the matrix to have less than 65 dB of rejection; therefore, the
|highest RF harmonic tested will be the 5th and the highest LO harmonic tested will be
Figure 1 shows the input screen format for the ripple (0.1 dB) bandwidth of the filters to be
used on the input and output. Recommended LO frequencies are displayed at the bottom right-hand side of the
input screen. Since no frequency inversion can be tolerated, the low-side (LS) LO frequency of 350.00 is
selected. The No Frequency Inversion message assures that part of the output specification will be met. Figure
4 represents what the output disk file would look like if printed or saved to disk. Figure 3 shows the output
spur table. Choosing the save file option and naming the file "2020" (the BW's) would result in the following
information being stored on the logged on drive and directory (Figure 4):
Relative spur power levels
can be displayed in the spur table by pressing F9. Those levels correspond to the levels
Figure 4. SPURS output file format.
Figure 5. An example mixer spur level file.
|entered in CURRENT.MXR. As can be seen in Figure 3, only the 3l0-4RF spur falls inband
with a level of -66 dBc. This selection of LO frequency and the mixer selection appears fine. A basic
requirement is that no intolerable spurs be generated from within the input frequency band since no amount of
filtering can get rid of them. However, since the real-life filters are not ideal, further investigation must
be made to assure that out-of-band RF input signals cannot generate intolerable spurs within the IF output
ripple bandwidth and that inband RF input signals cannot generate intolerable spurs in the IF output outside
of the specified ripple bandwidth. The system specification calls out maximum sigal powers for bandwidths out
to 40 MHz. By widening the input filter to a 25 MHz bandwidth and re-running SPURS, it will be found that no
new spurs fall inband. It will be noted, however, that the out-of-band input frequencies cause the same
3l0-4RF spurs. Since out-of-band input signals experience additional attenuation by the real-world input
filter, there is no cause for concern about I those spurs (provided that the out-of-band signal is no higher
in amplitude than the input signal). Next, we widen the input filter further to 40 MHz and re-run SPURS. The
output spur table now reveals the additional presence of 0LO x 3RF (-51 dBc) and 5RF-1LO (-59 dBc) spurs.
Pressing F8 displays the spur list. From here, we can determine at which frequencies the new spurs are caused
and, knowing the real-world filter rejection at those frequencies, determine whether or not a problem exists.
The 0LO x 3RF spurs occur for input frequencies ranging from 164.00 MHz to 170.00 MHz. 164.00 MHz corresponds
to the 28.0 MHz bandwidth. Although 164.00 MHz is presented as the lowest input frequency for which 0LO x 3RF
spur falls inband, in reality the lowest input frequency would be 490/3 = 163.33 MHz. Using a larger number of
steps would have included 163.33 MHz in the output spur list. The important point is that the number of steps
chosen did indicate all possible types of inband spurious products. If the real-world input filter provides at
least (60 - 51) dB = 9 dB of rejection at 163.33 MHz, then no problem exists. Input frequencies above 163.33
MHz will be attenuated even more if the filter is monotonic (no inflection) in that region of the stopband.
The 5RF-1 LO spurs are generated at
||input frequencies from 168.00 MHz to 170.00 MHz. 168.00 MHz corresponds to the 36.0 MHz
bandwidth. Similarly, if the input filter provides at least (60 - 59) dB = 1 dB of attenuation at 168.00 MHz,
then all is fine. In fact, if the filter passes for the criterion of the previous paragraph, then it
automatically passes for this criterion since 168.00 MHz is deeper into the stopband. Spurious product levels
must now be checked throughout the full specified output band. To do so, SPURS is run again with the input
filter set to a 40 MHz bandwidth while the output filter is first set for 480 MHz to 490 MHz, and then for 510
MHz to 520 MHz. Since the output inband spurs have already been to be of no consequence, including the center
20 MHz frequencies in the final analysis would only make the output spur list longer and more difficult to
interpret. Running SPURS once for the lower band and once for the upper band makes more sense. Running SPURS
for the lower side of the output band to the 40 MHz bandwidth results in the 0LO x 3RF (-51 dBc), 5RF-1 LO
(-59 dBc), and the 310 - 4RF (-66 dBc) spurs showing up. Since they all are less than the required -50 dBc,
output filtering for the low side is good regardless of the input filter rejection. Finally, running SPURS for
the upper side of the output band to the 40 MHz bandwidth results in the 0LO x 3RF (-51 dBc), 0LO x 4RF (-73
dBc), and the 3l0-4RF (-66 dBc) spurs showing up. Since they all are less than the required -50 dBc, output
filtering for the high side is good also. This example is a recommended procedure for efficiently using SPURS,
but experience has proven that someone
||else will almost assuredly find a more sensible way to utilize the features of this
program. If you discover that better way, the author would appreciate a note, so that your discovery can be
|About the Author
Kirt Blattenberger entered electronics as an Air Force traffic control radar repairman. He mixed work
as an electronics technician and school for several years, receiving his BSEE from the University of
Vermont in 1989. He can be reached at 13446 Greensburg Road, Smithsburg, MD 21783, or by phone at
(301) 824- 2505.