Hi Alex
     In regards to your question if PFB block is the way to go for FSK
timing recovery: remember that GNU Radio is a tool to implement signal
processing algorithms while leaving the underlying algorithms choice (and
development for custom blocks) to the user. In my opinion, PFB can be used
with FSK for a lab demo or a small project. If this is what you want, then
you're all right. But most probably a professional algorithm developer
looking for a working solution under several different operating conditions
will set up a solution more suited to the exact problem itself.
     Unlike SE, we don't have an environment here to put a short derivation
but you can realize from the Quadrature Demod block that it is cancelling
the argument of one sample (omega(k)*n) from the previous sample
(omega(k)*(n-1)) where omega(k) is the k_th symbol and n is sample index or
time, thus obtaining a rough estimate of the digital frequency omega(k).
Done for a reasonable number of samples per symbol, you would have a square
wave representing symbols +omega and -omega just like a pulse amplitude
modulated scheme.

      The problem however is that arg function delivers the principal value
of the argument which is highly non-linear and an unwrapping process would
be needed (I assume that this is not implemented within the block since it
is not written in the documentation). This becomes difficult as noise does
not translate so nicely from arguments to a linear representation and
severely limits the performance at moderate to low SNRs.

>  I have issues
> where if I start the receiver before the transmitter, the system
> doesn't
> work. And if I start the transmitter before the receiver, it will
> eventually lose sync and never recover.

How about using the same hardware to implement a well behaved linearly
modulated system to confirm if it is working properly and then switch to
FSK? In addition to my comments above, every feedback solution is quite
sensitive to the value with which it is initialized. Instead of running a
loop wild on noise arguments, I would prefer to start it after detection of
signal presence e.g., through a power ramp.

Cheers,
Qasim

Reply via email to