I'm looking at fine tuning the frequency to a known FM broadcast automatically. (from complex signal) My beginner's idea is to either:

  • lowpass filter to get ~2x the bandwidth visible
  • do the frequency demod
  • get a moving average
  • apply frequency correction until the average is ~0

or do the same thing, but after demodulation apply a bandpass filter to the pilot frequency.

Either way seems to work ok - but should one of them be significantly better than the other? I guess the pilot signal is more stable in this case.

Is there any better solution for fine-tuning that I'm not aware of? (My knowledge here is limited)

Unless I misunderstood the description, this would be similar behaviour to what Foster–Seeley discriminator is aiming for, right?


The first thing I would do is to choose a logical limited frequency band. For a Wide Band FM MPX signal my choice would be 152 Khz. 1. enough room for filtering the signal 2. easy centering of the MPX signal to the Station frequency using the deviation between PilotTones 3. after demodulation and filtering you have a 76 kHz MPX signal 4. now you have logical integer step spacings between L+R, PilotTone, L-R and RDS 5. 0 start of L+R signal 6. 76 Khz / 4 = 19 Khz (PilotTone has exactly 8 samples for full 19 Khz cycle) 7. 76 Khz / 2 = 38 Khz center of L-R signal 8. 19 Khz * 3 = 57 Khz RDS

Now you can compose or decompose the MPX signal without using ( Sine Cosine ) trigonometry, but only using adds and multiplications with natural values instead of real values resulting in more precision and easier and faster calculations. Face shifts are also easy calculated, because the PilotTone has exact 8 sample values for a full cycle. So tuning The PilotTone exactly to 19 Khz is easier. Synchronizing PilotTone and RDS is more exact too.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.