Optimal and LSB Stereo Decoding

Occasionally it's suggested that FM stereo noise could be reduced by decoding only the lower sideband of the double-sideband L-R signal. The argument is that since this requires half the bandwidth, the noise should be half as much. In fact, goes the argument, detected FM noise actually rises with frequency, so USB noise is greater than LSB noise, yielding even further noise reduction. Evidently the engineers at Pioneer took these arguments to heart when they implemented LSB stereo decoding in their F-93 tuner.

What the argument neglects is that dispensing with the USB forgoes the signal components there. During synchronous demodulation, LSB and USB signal components combine coherently, the amplitudes adding to yield 6 dB signal gain. But uncorrelated noise in the two sidebands combines incoherently, increasing only 3 dB for flat noise. Still, FM noise does rise with frequency, so perhaps LSB decoding offers a benefit despite the 6-dB signal penalty.

I wrote a short computer program to resolve the issue. The program compares S/N for conventional DSB stereo decoding with that for two other methods. The first is LSB decoding. The second is optimal decoding, where the upper and lower sidebands are combined with weighting coefficients that maximize S/N for the combination. The coefficients vary with frequency so the method essentially multiplies the sidebands by a weighting curve before combining them.

The optimal weighting coefficient for two noisy channels with equal signal amplitudes is c = n / q, where n and q are the RMS noise amplitudes of the noisier and quieter channels. The coefficient for the quieter channel is c, while that for the noisier channel is 1 / c. These coefficients don't sum to a constant value, so the signal spectrum is corrected to flat after combination.

The final result is 0.21 dB S/N gain for optimal combining and 2.29 dB S/N loss for LSB.

Since detected FM noise rises 6 dB per octave, the program uses frequency as noise amplitude. The program does not bother to accumulate signal power. For optimal decoding it forces it to be equal to DSB signal power and for LSB it is 1/4 of the DSB value. The program accumulates noise powers and then compares them.

	CONST pi = 3.141593, fc = 1 / (2 * pi * 75E-6)
	DECLARE FUNCTION db (p)

	FOR f = 20 TO 15000      ' Integrate noise components from 20 Hz to 15 kHz
	  d = f / fc             ' Deemphasis corner factor
	  d = 1 + d * d          ' Deemphasis power factor
	  u = 38000 + f          ' USB freq
	  l = 38000 - f          ' LSB freq
	  nu = nu + (u * u) / d  ' Accumulate deemphasized USB noise power
	  nl = nl + (l * l) / d  ' Accumulate deemphasized LSB noise power
	  w = u / l              ' Optimal weighting coefficient for LSB
	  l = l * w              ' Weighted LSB noise amp
	  u = u / w              ' Weighted USB noise amp
	  s = w + 1 / w          ' Weighted signal amp (1 + 1 unweighted)
	  c = 2 / s              ' Amplitude-correction factor for flat signal
	  nw = nw + (u * u + l * l) * c * c / d ' Weighted, corrected, deemphasized noise power
	NEXT f

	PRINT db((nu + nl) / nw)       ' S/N gain for optimal stereo decoder
	PRINT db((nu + nl) / nl / 4)   ' S/N gain for LSB stereo decoder

	FUNCTION db(p)
	db = 10 * LOG(p) / LOG(10)
	END FUNCTION


More is here.

Updated July 17, 2007