A -1701 FM MPX Demodulator

     This is a just-for-fun project, for which no claims are made that it's optimal.  I just drew it up in half an hour a few months ago, and then tweaked the thing until it worked.

     The incoming composite signal is filtered into its three components:  the mono audio, the suppressed-carrier difference signal, and the 19 KHz pilot tone.  The latter needs doubling in frequency to 38 KHz in order to restore the suppressed carrier and demodulate the L-R signal.   Here it's done by phase-locking a local VCO to the pilot, producing a stable, constant-amplitude replica.  In many phase-locked loop (PLL) applications like this, a divide-by-two counter within the loop makes the VCO run at double frequency.  Here a simple squarer and DC block doubles the frequency after the PLL instead.

     The remaining circuit synchronously demodulates the L-R audio to build the L and R channels.  The ADAU1701MINIZ's pot adjusts stereo separation:  fully CCW is mono (L+R), midpoint is stereo, and fully CW is L-R.

     I pulled the composite signal from the FM detector in this transistor radio to feed the eval board's A-D input, then listened in stereo at the board's headphone jack.  It was that simple!  Many years ago I experimented with a LM1800 MPX demodulator IC, which works pretty much the same way as this DSP implementation.  Both do a good job, which I attribute to the PLL as it provides a stable carrier with which to demodulate the L-R info.  There's nothing like synchronous demodulation, which also should be in every AM radio more sophisticated than a crystal set (but unfortunately finds itself only in high-end shortwave radios).

MPX-Demod.dspproj.zip
  • Bob, this is again genius but it also reminds me of last year when I took the entire resources of a -1701 to generate a SPDIF output, in the sense that there's another IC that does that   I think I would save the -1701 instructions and use it to set the frequency of an FM RX chip instead.

    That PLL module is clever and useful for lots of other applications though.  -1701 forever!

  • Brilliant work, as usual, Bob. You really are enjoying designing in the digital domain!!

  • Bob, thanks for once again showing us creative and crazy ways to use the SigmaStudio tools.   I also enjoyed your posts on the Poor Engineer's Distortion Analyzer and Voice Activity Detector for the ADAU1701.  Keep them coming!

    -JT

  • Hi, Bob,

    You linked me to this a week or so ago, at which time I was not aware that you were using the ADAU1701.  Could you answer a couple of questions?  1) How fast are you running the 1701?;  2) Do you have any idea how close you are to running out of resources on the part?

    I am working on a very similar application, albeit not for FM Stereo.  I figure on running the 1701 at 192kHz, and am terrified that I'll run out of steam.  My circuit is a bit less complex (fewer parts) than yours, but I figure at 192kHz I'll be gobbling up resources at 4X.

    The 1701 compiler output does not give a nice accounting of which menu parts use how much overhead; I have another posting about that situation.  Many thanks; nice design, that PLL is genius.

  • Hi Jim,

    This project runs at 192 K, & fits with a few instructions to spare.   Out of curiosity I tried to run it at 96 K (using only the lower subcarrier sideband) but it sounded terrible.

    Bob