# Re: FSK demodulation

**URL:** <https://www.ruby-forum.com/t/re-fsk-demodulation/230461>\
**Category:** GNU Radio\
**Created:** [June 19, 2014, 6:01am UTC](https://www.ruby-forum.com/t/re-fsk-demodulation/230461 "2014-06-19T06:01:01Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jason\_sam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/7993a0/32.png) [@jason\_sam](https://www.ruby-forum.com/u/jason_sam)\
**Post date:** [June 19, 2014, 6:01am UTC](https://www.ruby-forum.com/t/re-fsk-demodulation/230461/1 "2014-06-19T06:01:01Z")

</div>

> 

Hi Marcus!

Thanks for your detailed reply. To what I have studied yet polar  
discriminator will be affected more by the amplitude variations during  
transmission. Currently I do not know how to cater these variations, I  
am  
reading literature on it.  
Currently, I am trying to implement correlation receiver using FIR  
filters. I am looking into polyphase filterbank channelizer to  
implement  
correlation, but currently unable to do so because I currently do not  
know  
how to assign taps for channelizer.

> practical system, if your FSK shift is sufficiently larger than your  
> frequency offset.

Oversampling at baseband ? I am currently sampling at 1Msps (usrp sink  
sampling rate) for a tone spacing of 125KHz. You mean after the USRP  
sink  
block I should upsample again and then do the correlation? Or you mean  
something else ? Please forgive me for asking too many question, I am  
still  
learning.

> 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.

Thanks for the link, nice stuff.

> 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?

Wow! modulation is easy using VCO. A question, why would someone want  
phase  
jump between symbols?

Marc

---

<div class="post-metadata">

**Author:** ![Marc\_Miller](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c5a1d2/32.png) [@Marc\_Miller](https://www.ruby-forum.com/u/Marc_Miller)\
**Post date:** [June 19, 2014, 9:37am UTC](https://www.ruby-forum.com/t/re-fsk-demodulation/230461/2 "2014-06-19T09:37:13Z")

</div>

Hi Marc,

> Currently, I am trying to implement correlation receiver using FIR  
> filters. I am looking into polyphase filterbank channelizer to implement  
> correlation, but currently unable to do so because I currently do not  
> know how to assign taps for channelizer.

I should have pointed you at Tom’s article on PFB channelizers and  
synthesizers [1].

> Oversampling at baseband ? I am currently sampling at 1Msps (usrp sink  
> sampling rate) for a tone spacing of 125KHz. You mean after the USRP sink  
> block I should upsample again and then do the correlation? Or you mean  
> something else ? Please forgive me for asking too many question, I am still  
> learning.  
> don’t worry; this list is meant for GNU Radio discussion, I think things  
> like exploring possibilities to do certain tasks in GNU Radio fit  
> nicely, especially because you are considering using something “cool and  
> new” like the PFBs in your approach. GNU Radio can always use more  
> people actually trying to implement stuff!

So: Oversampling is what you do when getting more samples out of your  
ADC than nyquist forces you to do. If you do 125k spacing 4FSK, then you  
have a total bandwidth of 750kHz + X, so 1MS/s is “just enough”; anyway,  
if you sample with let’s say 3.125MS/s, than you’ll have more samples.  
Within that received bandwidth, you will have the same signal as before,  
but now correlating against your known tone will give you a higher value  
than with only 1MS/s, and because noise stays uncorrelated, this will  
increase SNR. This is processing gain!

> > … encourage you to read a lot of books [1] and papers on this.

> Thanks for the link, nice stuff.  
> If you find something interesting, don’t hesitate to add a new heading  
> like “FSK demodulator technology” and add the references there; I think  
> this list is something that could use broader usage 🙂
> 
> > Assuming you don’t want phase jumps between symbols, why not just use  
> > the VCO block to generate frequencies out of your input values?  
> > Wow! modulation is easy using VCO. A question, why would someone want phase  
> > jump between symbols?  
> > In FSK systems, you’d usually want to avoid that, because phase jumps  
> > lead to spectral components that are not at the frequency you shifted  
> > to.  
> > With PSK, phase jumps is your only way to encode data, and with QAM  
> > “half” of the information is encoded in phase. However, you usually see  
> > a pulse shaper after these, because transmitting a real phase  
> > discontinuity is somewhat physically impossible[2]. So these modulations  
> > get the spectrum of a phase-jumping system, smoothed by the spectral  
> > shape of the pulse shaping.

Greetings,  
Marcus

[1]

> **[PFB Channelizers and Synthesizers — Rondeau Research](http://www.trondeau.com/examples/2014/1/23/pfb-channelizers-and-synthesizers.html)**
>
> Building the Filters 
> Based on the paper presented at the  Karlsruhe Institute of Technology's  Workshop on Software Radio (WSR). 
> The paper starts off by explaining how to build the prototype filters and how these lead directly to the concept of...

[2] Basically, imagine the baseband signal as a sequence of rectangles  
in time; now, the fourier transform of a rectangle is a sin(x)/x, and  
that has a support that doesn’t fit into a limited bandwidth.
