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
PC FSK decoding - stuck beginner!
Started by ●April 1, 2005
Reply by ●May 10, 20052005-05-10
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 onfsk>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
Reply by ●May 10, 20052005-05-10
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)