[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Re: gr_pfb_clock_sync_ccf.cc question related to
Re: [Discuss-gnuradio] Re: gr_pfb_clock_sync_ccf.cc question related to work function
Tue, 23 Nov 2010 22:30:51 -0500
On Mon, Nov 22, 2010 at 6:01 AM, John Andrews <address@hidden> wrote:
> I got it. The polyphase filter is implemented by having a single stage
> filter and choosing the right taps from the set of 'nfilts' taps rather than
> having nfilts filter stages. This of course is computationally more
Thanks for the question. And the answer. You had me worried for a
second that I had missed something in the implementation. I was pretty
sure I had this correct when fred and I were talking about all of this
stuff last summer.
As you've surmised, the implementation pretty much follows figure
13.21 in fred's book. Although he was looking at it being designed in
an FPGA where he had to load the registers with the coefficients;
instead, I just keep the bank of filter coefficients, each with their
own symbol phase, and select the path into the bank based on the error
estimate. So we select the appropriate filter path to go through and
run that one stage.
It's a "neat trick" as fred likes to say.
And yes, literalnet, I understand that we're still actually loading
the coefficients into registers. I'm only talking about how the C++
code was implemented conceptually as opposed to an FPGA design.
> On Sat, Nov 20, 2010 at 9:47 PM, John Andrews <address@hidden> wrote:
>> I was trying to understand the code of the new clock sync block
>> gr_pfb_clock_sync_ccf.cc and although I understand most of it there is one
>> particular thing that confuses me. This is what I understood so far
>> 1. There are two filter banks present. A) For RRC filtering B) the
>> differential filter bank
>> 2. These filters are implemented as polyphase filters thus, each of these
>> filters has nfilts=32 sub-filters
>> 3. The theory behind this block is found in section 13.3.2 of fred harris'
>> book on multi-rate filters so I understand the concept behind this block
>> pretty well.
>> What confuses me is the coding.
>> In line 265 of gr_pfb_clock_sync_ccf.cc
>> out[i] = d_filters[d_filtnum]->filter(&in[count]);
>> the input to the block is passed only to one sub-filter of each filter
>> bank. Why? Looking at the section in harris' book i thought it was an input
>> to all the sub-filters and we choose one of the outputs as the sync'd
> Discuss-gnuradio mailing list