DSPRelated.com
Forums

PC FSK decoding - stuck beginner!

Started by mcd April 1, 2005
Hi,
I'm urgently trying to get my head around methods for decoding an FSK
encoded signal on my PC.
I have a .wav file of the transmitted data, and I want to get the data
out.
I'm doing my work in Matlab/Simulink for now for simplicity.
So far I've tried:
- Goertzel algorithm as used for dtmf
- mag� of fft and peak detect
I've struggled with both of these techinques. With a 22kHz .wav source I
don't have enough samples/bit for Goertzel and seemingly for the dft
technique either. I have the mag� working at 50 baud but not at 100
(reqd).

So, I went back to the drawing board and searched again, this time on fsk
decoding. I came up with:
- Matched filters and Cauchy-Schwarz inequality
- Soft PLL

Is there a standard way of decoding FSK please? If so can anybody offer
any tips on what it is/how to do it, a dummys guide as it were.  I like
the idea of the matched filter but I'm completely stuck when it comes to
implementing the Caucht-Schwarz inequality. 

Any help would be very much appreciated...

Thanks,

Martin



		
This message was sent using the Comp.DSP web interface on
www.DSPRelated.com
Hi,

Although I am not familiar with the techniques you are attempting to use,
you should take a step back and remember how FSK used to be implemented in
the first place: in very simple hardware. For this reason, FSK signals used
for saving data of old computers (C64) or music equipment (older
sequencers) are usually frequency varying square waves: they are the
direct output of a clock going thru a sequential circuit of some sort.

Detection could be circuits that will retrigger a clock (astable
multivibrator for instance) on each zero crossing or upwards zero
crossing. This would provide a time reference. The multivibrator should
frewheel at the average measured frequency thus far in the absence of a
pulse (this is much easier in software than in hardware) And other
circuits that detect the prescence of zero crossings within specified
timeframes marked by the multivibrator. This makes me think that the
easiest way to implement FSK decoding would be to go with the "naiive"
approach instead and just write a state machine program that reads each
sample and emulates the hardware counterparts instead of a pure DSP
approach.

Good luck!

-Aurelio


>Hi, >I'm urgently trying to get my head around methods for decoding an FSK >encoded signal on my PC. >I have a .wav file of the transmitted data, and I want to get the data >out. >I'm doing my work in Matlab/Simulink for now for simplicity. >So far I've tried: >- Goertzel algorithm as used for dtmf >- mag� of fft and peak detect >I've struggled with both of these techinques. With a 22kHz .wav source I >don't have enough samples/bit for Goertzel and seemingly for the dft >technique either. I have the mag� working at 50 baud but not at 100 >(reqd). > >So, I went back to the drawing board and searched again, this time on
fsk
>decoding. I came up with: >- Matched filters and Cauchy-Schwarz inequality >- Soft PLL > >Is there a standard way of decoding FSK please? If so can anybody offer >any tips on what it is/how to do it, a dummys guide as it were. I like >the idea of the matched filter but I'm completely stuck when it comes to >implementing the Caucht-Schwarz inequality. > >Any help would be very much appreciated... > >Thanks, > >Martin > > > > >This message was sent using the Comp.DSP web interface on >www.DSPRelated.com >
This message was sent using the Comp.DSP web interface on www.DSPRelated.com
depends on how much noise there is on the signal and how close to ideal
you want the decoder to work...

If the signal is noisy and the freq dev between mark and space is large
compared to the baud rate, I understand the two filter method, one for
mark and one for space is close to ideal because it tends to ignore the
noise energy in the gap between the mark and space.

Mark  (not space)