Given a signal that's been FM encoded on a carrier wave, what are the individual steps I need to take to demodulate it, and recover the original signal?
I don't have a background in signal processing, I have a background in programming. I'm trying to solve a real-world problem:
I'm trying to demodulate a raw analog RF signal captured from a Laserdisc at 40 MHz. This RF signal contains a composite video signal centered at 8.1 MHz, two analog audio channels at 2.81 MHz and 2.3 MHz, and one digital data channel encoded at 1.75 MHz and below.
For a handy reference image, here's a visual representation:
More specifics on the frequency ranges and other related info can be found in a concise summary here, and in the official documentation describing the final encoding format here.
Now, I've captured a signal like this straight from a Laserdisc. Under a spectral view, it looks like the following:
Here I can clearly see the composite video signal encoded, in this case showing the end of a field, the vblank period, and the start of a new field. I can see the two analog audio channels encoded below, and at the bottom, a band of low-frequency noise which contains the digital channel data. I can also see the harmonic sidebands coming through, giving lower intensity "echoes" of the data at lower and higher frequencies than the encoded frequency.
When the composite video is decoded to a waveform, I expect to see a signal like this:
The problem I'm having right now is, I don't really understand the math involved in demodulating the FM signals from the combined RF signal here.
I understand I can use some basic band-pass filtering to eliminate frequencies outside the bands I'm interested in, which would allow me to separate the audio, video, and digital signals from each other, but after that it's the actual process of de-modulating the FM-encoded data back into their data streams (i.e., turning FM encoded data back to a basic waveform), that I'm not getting right now.
For an answer here, I'm after something that explains this in layman's terms, so that if I was a green student walking into a classroom on signals processing for the first time (which I pretty much am here) I can understand what you're talking about. I still need it to be specific though, because ultimately, I need to understand this well enough so that I can write real code that performs these operations. I'm after a pure digital solution to this problem.