SM 5 BSZ - Linux pc radio, digital balancing of amplitude and phase for a direct conversion receiver.
(Sept 30 2000)
Check this link Correct for amplitude and phase errors in a direct conversion receiver. for more recent information.

Typical performance of uncompensated direct conversion receiver

Using 1% standard components for the IQ mixer and the anti alias filters the spur suppression is typically around 30 to 40dB. Fig.1 shows a signal that is sweeping slowly across the receiver passband.

Fig 1. A sweep generator sweeping over 120kHz produces this image when no compensation is made for the amplitude and phase errors in the hardware. The center frequency is 7.050MHz and the sweep time is 50 seconds for 120kHz. The spectrum at the bottom shows the spur at -30dB when the signal is at about 84kHz (=7.086MHz). The signal has a positive slope and red colour while the spur has negative slope, is green at the center and goes slightly red towards the ends. The colour change shows that the spur suppression is less good towards the spectrum ends where the limited accuracy of the filter capacitors has a large influence. In general phase and amplitude depends more critically on component values near the filter edge - more the sharper the edge is.

The spur balancing routine

The spur is much smaller than the main signal. As it turns out there is a fixed phase and amplitude relation between the spur and the main signal and therefore the spur can be cancelled easily.

After having completed the first fft one more loop is added in the make_fft1() routine in which a small fraction of the spur frequency is added to each frequency. The amplitude and phase of this small fraction is determined by a separate calibration routine.

The first screen of the spur balancing routine is shown in fig.2. below. A stable signal generator is connected at the antenna input. The signal level has to be high enough, but it must not saturate the A/D converters - otherwise a warning message will be displayed and no data accumulated.

Fig 2. Spur balancing screen. The operator must tune the signal source for each of the segments into which the frequency range is divided. After a short time the spectrum colour changes from white over red to green. Once the colour is green, no more data is accuired for that frequency so the operator should select a new one.
When most of the segments are green and the operator has pressed "U" the screen of fig.3 is shown. This screen is the complex amplitude of the spur frequency that has to be added to the signal frequency to remove the spur. If the routine is run one or more times before this screen shows the amount to add in addition to previously determined values. To get very good spur suppression the balancing routine has to be run two or three times.

Fig 3. The second screen of the spur balancing routine. This screen is just to give the operator some idea about what is going on - it may help to decide about how many segments to use next time.
How many segments to split the frequency range in depends on the hardware - how fast the amplitude and phase errors change with frequency. With many enough segments and a high quality (low noise) signal generator the spur can be eliminated completely. Temperature stability of the analog circuitry may limit the practically achievable attenuation, something that future experience will show.

Fig. 4 below is produced exactly as fig. 1 - but after running the calibration routine (with a noisy oscillator, a Tektronix TR503). The spur is suppressed by about 70dB and is almost invisible.

Fig 4. A sweep generator sweeping over 120kHz produces this image when compensation is made for the amplitude and phase errors in the hardware. This image is produced the same way as fig.1.