In GNU Radio there is an AM demod block. If this wasn’t there what processes would be required to achieve same function?

AM demod looks simple on the surface, but under the hood it’s doing a couple of neat little tricks.

If the built-in AM demod block vanished overnight, you’d rebuild it from first principles like this:


🧠 1. Start With the RF Signal (Complex Baseband)

From your SDR you’ve got complex IQ samples centered on your AM carrier.

So conceptually:

s(t) = [1 + m(t)] * cos(2πf_ct)

After the SDR tunes and mixes to baseband, that carrier is sitting at 0 Hz.


🔧 2. Envelope Detection (The Core Trick)

Classic AM demod is just envelope detection.

In GNU Radio terms:

✔ Take the magnitude

Use:

  • Complex to Mag block

This computes:

|I + jQ| = sqrt(I² + Q²)

That gives you the envelope.

At this point, you’ve essentially done what a diode detector does in an old radio.


🎚 3. Remove the DC Component

AM signals include a carrier offset (that “+1” in the equation).
So your magnitude output will have a big DC level.

You remove it using:

  • DC Blocker or
  • High-pass filter (very low cutoff, e.g. 20–50 Hz)

Now you’re left with just the modulation (audio).


🎛 4. Low-Pass Filter (Audio Bandwidth)

AM broadcast audio bandwidth is ~5 kHz (sometimes 10 kHz).

So you’d add:

  • Low Pass Filter
    • Cutoff: ~5 kHz (or whatever your signal uses)
    • Transition width: reasonable
    • Decimate if needed

This cleans up high-frequency junk from the magnitude operation.


🔊 5. Audio Gain + Resample

Then:

  • Multiply Const (adjust volume)
  • Rational Resampler if needed to get to 48 kHz or 44.1 kHz
  • Send to Audio Sink

So the Full Replacement Chain Would Be:

SDR Source
   ↓
Frequency translating filter (if needed)
   ↓
Complex to Mag
   ↓
DC Blocker
   ↓
Low Pass Filter
   ↓
Gain
   ↓
Audio Sink

Boom. Homemade AM demod.


🔬 If You Want To Be Fancy (Synchronous Detection)

Envelope detection works, but it:

  • distorts under fading
  • struggles with weak signals
  • doesn’t like overmodulation

A higher-quality approach:

Multiply by a local carrier (product detector)

  1. Multiply signal by cos(2πf_ct)
  2. Low-pass filter result

In baseband SDR world this becomes:

  • Ensure carrier is centered
  • Use Complex to Real (or multiply by 1∠0)
  • Low-pass filter

Even better:

  • Add a PLL to lock onto carrier (for DSB or SSB cases)

That’s basically what “AM Sync” receivers do.


🛰 For Your 1420 MHz Work

If you’re using AM in some diagnostic context (be honest… are you sneaking AM into an interferometer chain? 👀), envelope detection is fine.

But for serious signal integrity:

  • Coherent detection is cleaner
  • Especially if carrier suppression is present

TL;DR

To replace GNU Radio’s AM Demod block:

Magnitude → Remove DC → Low Pass → Gain

That’s it.


By Admin

Leave a Reply

Your email address will not be published. Required fields are marked *


This site uses Akismet to reduce spam. Learn how your comment data is processed.