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