FSK demodulation

Hi, I am new to gnuradio, I want to develop 4FSK system. transmitter and
receiver. Is there any existing 4FSK transceiver system in gnuradio ?
Also,
which one of the following two is the best/optimum 4FSK demodulator for
low
SNR?

a. Quadrature demodulation
b. Correlator demdulation (autocorrelate tones–>energy detect->pick
largest)

Which one of the above can be implemented in gnuradio ?

Marc

Hi Marc,

demod:
both can be implemented in GNU Radio. Correlation of course is more
computationally intensive; I haven’t thought about 4-FSK so far, but I
guess for quadrature demodulation, you’d need multiple branches to
distinguish the possible symbols. There are other approaches (e.g. polar
discrimination by calculating the phase difference between two samples
etc. There’s an exciting new polyphase filterbank channelizer
implementation, also, which you could abuse to do FSK, too).

Generally, if you are synchronized, you might even just estimate the
frequency of a symbol. In the easiest case, this might break down to an
abs(FFT_4) (which, by the way, is mathematically very similar to
correlating with known frequencies).

But since you asked about low-SNR situations: Employ a lot of
oversampling, if possible. Processing gain when correlating/averaging
should be proportional to oversampling factor. Oversampling, giving you
more bandwidth, would also be beneficial if you used a filterbank
approach, since it reduces the need for frequency synchronization in a
practical system, if your FSK shift is sufficiently larger than your
frequency offset.

All in all, the question which demodulator architecture to use is an
academic/research one and not related to the implementation in GNU Radio
modulation. This is a highly interesting field and I can but encourage
you to read a lot of books [1] and papers on this.

modulation:

Assuming you don’t want phase jumps between symbols, why not just use
the VCO block to generate frequencies out of your input values?

Greetings,
Marcus

[1] a nice list:
http://gnuradio.org/redmine/projects/gnuradio/wiki/SuggestedReading