discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] PFB Clock Sync stops producing samples


From: Andy Walls
Subject: Re: [Discuss-gnuradio] PFB Clock Sync stops producing samples
Date: Fri, 09 Jun 2017 08:46:37 -0400

>                              From: 
> devin kelly
>                           Subject: 
> Re: [Discuss-gnuradio] PFB Clock
> Sync stops producing samples
>                              Date: 
> Thu, 8 Jun 2017 15:41:38 -0400
> 
> ______________________________________________________________________
> OK, I'll give that block a try.  Are you saying there's a bug in the
> PFB Clock Sync block?

Yes.

I'm also saying that since there are two fundamental bugs (incorrect tag
propagation, and conflation of symbol clock phase with resampling
interpolator sample phase) which both take a lot of work to fix and
should be fixed together, that it's not worth anyone's time to fix the
PFB clock sync blocks (complex IO and float IO).  The M&M clock sync
blocks (complex IO and float IO) and the MSK timing recovery block
(complex IO) also have those same two bugs.

Properly fixing those bugs for just the PFB clock sync blocks, results
in the PFB clock sync blocks evolving into a partial implementation of
the Symbol Synchronizer blocks, and still leaves the other 3 blocks
broken.  Properly fixing those bugs for all 5 of the in-tree
synchronizer blocks, in one place, results in most of the implementation
of the Symbol Synchronizer blocks.  There is no point in fixing the
existing blocks.

> That was my suspicion but I'm not sure I understand what the block is
> doing well enough to know with certainty.

For a quick overview of symbol recovery, see this MatLab documentation:
https://www.mathworks.com/help/comm/ref/comm.symbolsynchronizer-class.html#bumtxky-18

For the PFB clock sync block algorithms specifically, see figure 10 of:

Fredric J. Harris, Michael Rice, "Multirate Digital Filters for Symbol
Timing Synchronization in Software Defined Radios",
_IEEE_Journal_on_Selected_Areas_in_Communications_, Vol. 19, No. 12,
December 2001, pp. 2346 - 2357
https://pdfs.semanticscholar.org/3077/d85fc72d89c72c4c6d11f1014c5175e319c3.pdf

(The gist is to combine the receive pulse matched filter with the
resampling interpolator filter to save filtering operations.  The
resampling interpolator filter is implemented with a PFB and a
derivative PFB, since the (approximate) maximum likelyhood timing error
detector needs the derivative of the signal too.)

Also see this for an additional explanation written by Tom Rondeau:
https://wiki.gnuradio.org/index.php/Guided_Tutorial_PSK_Demodulation#7.6.1._Details_of_the_PFB_Clock_Recovery_Block


For the Symbol Synchronizer blocks, see this napkin diagram:
https://github.com/gnuradio/gnuradio/files/950045/Symbol_Synchronizer_block_diagram.pdf
and this comment:
https://github.com/gnuradio/gnuradio/pull/1294#issuecomment-296628308

For the symbol clock phase tracking loop transfer function and gain
computation, see this document:
https://github.com/awalls-cx18/gr-nwr/blob/master/docs/clock_loop.pdf


And now you can be certain that if I don't want to fix the existing PFB
clock sync blocks, neither do you. :)

-Andy




reply via email to

[Prev in Thread] Current Thread [Next in Thread]