Recall that resampling by rational rate LM
LM can be accomplished
through the following three-stage process(see Figure 1).
If we implemented the upsampler/LPF pair with a polyphase filterbank, we
would still waste computations due to eventual downsampling by
M
M. Alternatively, if we implemented the LPF/downsampler pair
with a polyphase filterbank, we would waste computations by feeding it the
(mostly-zeros) upsampler output. Thus, we need to examine this problem in
more detail.
Assume for the moment that we implemented the upsampler/LPF pair with a
polyphase filterbank, giving the architecture in Figure 2.
Keeping the "parallel-to-serial" interpretation of the upsampler/delay
ladder in mind, the input sequence to the decimator ql
ql
has the form as in Figure 3
leading to the observation that
ql=
v
l
L
⌊lL⌋
q
l
v
l
L
l
L
ym=qmM=
v
mM
L
⌊mML⌋=∑k
h
mM
L
kx⌊mML⌋−k
y
m
q
m
M
v
m
M
L
m
M
L
k
k
h
m
M
L
k
x
m
M
L
k
(1)
Thus, to calculate the resampled output at output index mm,
we should calculate only the output of branch number
〈mM〉L
m
M
L
at input index ⌊mML⌋m
ML. No other branch outputs are
calculated, so that no computations are wasted. The resulting structure is depicted in Figure 4.
An equally-efficient structure could be obtained if we implemented the LPF/downsampler
using the MM-branch polyphase decimator which was fed with
the proper sequence of input samples. However, this structure is not as elegant:
rather than computing the output of one particular polyphase
branch per output sample, we would need to add all branch outputs,
but where each branch output was calculated using a particular subset
of polyphase taps.