Quadrature Mixer Corrections
Software defined radios often use an analog quadrature mixer to convert
RF to "baseband"; that is, to a lower frequency that can be sampled by
a PC sound card. The mixer produces two outputs that have equal
amplitude, but that differ in phase by 90 degrees. Subsequent
processing in the PC filters and demodulates the signal, and results in
radio sound output. Examples of such radios are the SoftRock
series, and the FlexRadio products.
Other software defined radios avoid analog mixers by sampling the
antenna voltage directly. Subsequent processing is identical to
radios based on quadrature mixers, but the mixers are digital instead
of analog. Examples of this type of radio are the SDR-IQ by RfSpace, the Mercury and Hermes projects
from the Open HPSDR Group and my
(James Ahlstrom) SDR transceiver.
Other radios use conventional mixers and crystal filters, and add
digital signal processing at the IF. Examples are the K3 from
Elecraft, and many other radios by leading manufacturers.
Here we are concerned with the problems that arise in radios based on
analog quadrature mixers when the amplitudes of the two channels are
not exactly equal, or the phases do not differ by exactly 90
degrees. These errors result in an undesired image response at
the negative of the receive frequency. That is, if the radio
receives a signal 10 kHz above the center frequency, the operator will
see and hear a false signal 10 kHz below the center frequency.
Careful analog design can reduce these errors, and then a correction
can be made in the software to reduce them further. For a
description of the software correction see
and the pages for the various SDR softwares such as Linrad.
Here are some measurements of the amplitude and phase errors of a
SoftRock Rx/Tx Ensemble given to my by Sid Boyce (thanks Sid). I
did these measurements to improve the amplitude and phase corrections
in my Quisk software. This
SoftRock has a VFO based on an Si570, so there are two tuning
variables, the frequency of the VFO and the tuning frequency as an
offset from the center of the audio band. For example, you could
tune in a signal at 7.101 kHz by setting the VFO to 7.070 kHz and
tuning to 31 kHz, or you could set the VFO to 7.080 kHz and tune to 21
The sample rate for all these measurements is 96000 samples per second,
and the sound card is an M-Audio Audiophile 24/96, an excellent
card. The corrections are made in the time domain; that is,
each imaginary (Quadrature) sample is corrected for amplitude, and a
small amount of the real sample is added to it.
I first set my homebrew AD9953 signal generator to 7.101 kHz, and
varied the VFO from 7.060 to 7.090 kHz. I used my Quisk software
to adjust the amplitude and phase to null the image. The range of
the corrections were:
Amplitude -0.0478 to -0.0467
Phase -8.878 to -8.524
At a VFO of 7.100 and a tuning frequency of 1 kHz I got an anomalous
The response of the audio path at DC (zero Hertz) is zero, so for
frequencies near zero the amplitude and phase vary greatly, and we
can't expect a good correction.
Next I set the VFO to 7.080 kHz and varied the signal from 7.091 to
7.121 kHz corresponding to a tuning frequency of 11 to 41 kHz.
The corrections needed to null the image were:
Amplitude -0.0472 to
-0.0461 Phase -8.669 to -8.520
Next I varied the VFO from 7.040 to 7.240 and set the signal 21 kHz
above the VFO (tuning frequency 21 kHz). The corrections to null
the image were:
Amplitude -0.0492 to
-0.0339 Phase -9.302 to -6.508
The larger range of corrections is expected because the frequency
changed by 200 kHz instead of 30 kHz. The average change in phase
when varying the VFO is (-6.508 + 9.302) / 200 or 0.0140 degree per
kilohertz. When varying the tuning frequency it is (-8.520 +
8.669) / 30 or 0.005 degrees per kilohertz. Apparently the phase
shifts are produced by different mechanisms.
- It will not be possible to correct near the center of the receive
band at zero Hertz audio frequency. The audio path is not DC
coupled, and has zeros in its transfer function. Near zero Hertz,
the amplitude and phase vary rapidly. The radio operator will
need to avoid this region.
- With fixed VFO the correction still varies across the receive
band, so images will still be present. To fix this we would need
to correct in the frequency domain; that is, take the FFT of the
receive band, make a correction based on frequency, and take the
inverse FFT to put it back together.
- We should use excellent analog design to reduce the need for
- The VFO correction is much larger than the tuning correction, and
is easy to make. We need multiple correction points per amateur
band, with curve fitting in between.
The above focuses on the receive path, but my SoftRock can also
transmit, and the same corrections are necessary. The transmit
corrections are different from the receive corrections, so a separate
set of corrections must be measured. To measure the transmit
corrections, we would connect the SoftRock to a spectrum analyzer and
null the image as before. While we were at it, we would adjust
the audio drive for a clean signal. Lacking a spectrum analyzer
we could use a second receiver tuned to the image.
The transmitter requires much better image rejection than the
receiver. A 40 dB image rejection is probably OK for the
receiver, but 42 dB is the minimum FCC requirement for HF. We
want to do much better than that because the image will appear several
tens of kilohertz away from our signal, perhaps even outside the
Here are some measurements of the image suppression I can achieve with
my SoftRock Rx/Tx Ensemble. The sample rate is 96 ksps, and the
setup is the same as before. The signal level is -10 dB (below
clip). First I set the VFO to 7050 kHz and the tuning frequency
to 7070 kHz, and I then nulled the image (at 7030 kHz). The
-0.049412 Phase -9.186891
I then measured the image rejection relative to the signal at fixed VFO.
Tune kHz Image dBc
We see that the center (zero Hertz audio) has a larger image, but even
at +1 kHz is still -42 dBc.
Next I checked the image over the rest of the 40 meter band.
We clearly need more rejection, so I set the VFO to 7250 kHz, the
tuning to 7270 kHz, and nulled the image. The corrections were
-0.033882 in amplitude and -6.436975 in phase. When Quisk has
more than one correction point, it uses linear interpolation based on
VFO frequency to set the corrections. We now get:
This is much better, and perhaps good enough, but I added a third
correction point at a VFO of 7150 to get the following:
Tune +20 kHz Tune -20 kHz
Based on this, I believe that three correction points are sufficient
for this case, but that the operator must avoid the center and far
edges of the sample band. Perhaps the correction point should be
made at a tuning frequency closer to the center of the sampled
spectrum, but it is a bother to avoid the area at the exact
center. This makes me wonder just how cheaply we could make an
SDR that avoids analog mixers.