# RRC Polyphase Filter in generic modulator

I’ve been trying to understand what’s happening under the hood with the
polyphase filter bank in the generic_mod_demod.py.

Here’s what I think is happening, since nfilt=32 which is also used the
sampling rate of the firdes.root_raised_cosine filter means that the
highest rate the polyphase filter will see is an interpolation factor of
32
from the basic inputted signal sampling frequency?

while pfb.arb_resampler_ccf has a sampling rate of samples_per_symbol
which
in the default case is =2 … does this mean that the polyphase filter
is
interpolating by a factor of 2?

If I am inputting data at a sampling rate of 16kHz and I’m trying to
interpolate them to 256kHz before sending them to the user how is the
256kHz and the desired interpolation factor of 16 taken into account in
the
RRC filter in the generic modulator block.

I’ve read the gnuradio pfb page but I think I’m missing something
important
here.

Thanks

perhaps the examples in gr-digital/examples/demod are more suitable to
understand the internals.

A couple of notes:

On Thu, Feb 21, 2013 at 08:58:42PM -0500, Almohanad F. wrote:

I’ve been trying to understand what’s happening under the hood with the
polyphase filter bank in the generic_mod_demod.py.

Here’s what I think is happening, since nfilt=32 which is also used the
sampling rate of the firdes.root_raised_cosine filter means that the highest
rate the polyphase filter will see is an interpolation factor of 32 from the
basic inputted signal sampling frequency?

PFB filter taps operate on what you could think of as ‘fractional’
time, i.e. the sampling time is 1/32th (or whatever) of the original
sampling time. If you have a cutoff frequency in your low pass, that
must be taken care of in the filter taps (i.e. reduced by factor 32).
If you’re specifying absolute frequencies, just increase the sampling
frequency (hm, I’m not sure this is really clear…).

the default case is =2 … does this mean that the polyphase filter is
interpolating by a factor of 2?

When going from symbols to samples, you always have to interpolate.
Usual values are 2 (as used here) or 4.

If I am inputting data at a sampling rate of 16kHz and I’m trying to
interpolate them to 256kHz before sending them to the user how is the 256kHz
and the desired interpolation factor of 16 taken into account in the RRC filter
in the generic modulator block.

I don’t understand this Q. The answer is probably, you’ll need an extra
interpolation block, depending on how your FG looks like.

I’ve read the gnuradio pfb page but I think I’m missing something important
here.

Just to be clear, you do know what an FIR does and how filter taps are
defined? Or is this the information you’re lacking?

MB

Karlsruhe Institute of Technology (KIT)
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.
Research Associate

Kaiserstraße 12
Building 05.01
76131 Karlsruhe

Phone: +49 721 608-43790
Fax: +49 721 608-46071
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and
National Laboratory of the Helmholtz Association

Thanks martin for your explanation. I modified the dbpsk_loopback.grc
example to where my input sampling frequency is 16khz and instead of
looping back i’m using a uhd sink block with a sampling rate of 256khz.
Looking at the constellation on my spectrum analyzer i’m getting a dbpsk
signal with a symbol rate of 128khz.

Since the flowgraph seems to be working i’m expecting an interpolation
factor of 16 somewhere i originally was trying to do it with a FIR
filter
before sending it to the usrp but then i found out that modulation block
itself has an internal rrc filter. Now I am trying to figure out where
the
interpolation factor of 16 is occurring in the polyphase filter.

I’m confused how things are working without an explicit interpolation
factor of 16. I’m not sure if the issue is my lack of understanding of
polyphase filters or I didn’t see where the interpolation factor is
calculated internally.

Thanks

On Fri, Feb 22, 2013 at 9:29 AM, Almohanad F.
[email protected] wrote:

interpolation factor of 16 is occurring in the polyphase filter.

I’m confused how things are working without an explicit interpolation factor
of 16. I’m not sure if the issue is my lack of understanding of polyphase
filters or I didn’t see where the interpolation factor is calculated
internally.

Thanks

How many samples/symbol are you using? And I would actually print this
number out from inside generic_mod_demod.py. There’s some calculations