![](/html/2c/2caa/2caadef3a0783d703780756f246bd048a5c17e1344c61da59be921c698f17643/bg1.png)
FC108 - Polyphase filterbank v1.1
User manual
Introduction
The polyphase filterbank algorithm is a very efficient way to implement a uniformly
distributed multi-channel filterbank using a Fast Fourier Transform (FFT). This Intellectual
Property (IP) core was designed to process data in real time up to rates of 1GSPS in Virtex-4
devices. Sundance’s core is the fastest and the most efficient available in the FPGA world.
Features
• This IP core targets the following devices:
¾ Xilinx: Virtex-IITM, Virtex-II ProTM, Spartan-3TM and Virtex-4TM
• Number of channels: M=2m with m = 3 to 12 (8 to 4096 channels)
• Arithmetic type and data formats :
¾ 16-bit integer fixed point
¾ Any resolution upon request
• Configurable on the fly filter taps for each channel
• Fully functional VHDL testbench and the related Matlab functions delivered along the
FFT/IFFT core for simulation purposes and specific performance characterization.
Polyphase filterbank product manual
December 2005 www.sundance.com - 1 -
Fast
![](/html/2c/2caa/2caadef3a0783d703780756f246bd048a5c17e1344c61da59be921c698f17643/bg2.png)
FC108 - Polyphase filterbank v1.1
Algorithm
The Fast Fourier Transform (FFT) is an efficient algorithm for computing the Discrete Fourier
Transform (DFT), that is transform data between the time and frequency domains. Consider the
DFT X(k) of a data set consisting of a sequence x(n) multiplied by a window function h(n)
implemented in the form of a Finite Impulse Response (FIR) filter.
nkj
π
−
−
1
N
=
∑
=
0
n
Equation 1: Windowed original function
The Fourier transform computing effort required by the implementation described in Equation
1 is very large. However, it is possible to apply some mathematical tricks to reduce it and make
the algorithm implementation fit more easily in FPGA devices. For an FFT implementation, k
takes the values 0 to N-1. To prune the output data only a subset of the X(k) values need to be
calculated. If N can be factored as rM and only every rth value of X(k) is taken then the
calculation is reduced to:
−
1
N
=
∑
=
0
n
nxnhkX
2
N
)().()(
nxnhkX
e
−
)().()'(
e
with k = 0, 1, …, N-1
rnkj
π
'2
N
with k’ = 0, 1, …, M-1
Equation 2: Windowed pruned function
This can be rearranged in the following manner:
−=−
101
rmM
∑∑
=
n
++=
mMnxmMnhkX
0
Equation 3: Polyphase filterbank
π
−
'2
nkj
M
)().()'(
e
with k’ = 0, 1, …, M-1
The total workload needed to implement the windowing is unchanged but the FFT is reduced
to a single M-point transform. This can be implemented by a structure as the one shown in
Figure 1. The data filtering in the polyphase filterbank is performed using two independent
filter paths for the In and Quadrature phase samples. This further reduces the computational
load by halving the number of multiplications required. The Polyphase filterbank core is
therefore implemented as per Equation 4.
−=−
101
rmM
+++++=
))().()().(()'(
∑∑
=
0
n
with k’ = 0, 1, …, M-1. With xI = I_in and xQ=Q_in. With hI= I_filter_taps and hQ= Q_filter_taps
Equation 4: Polyphase filterbank implementation
mMnxQmMnhQmMnxImMnhIkX
e
nkj
π
−
'2
M
Polyphase filterbank product manual
December 2005 www.sundance.com - 2 -
Fast
![](/html/2c/2caa/2caadef3a0783d703780756f246bd048a5c17e1344c61da59be921c698f17643/bg3.png)
FC108 - Polyphase filterbank v1.1
Figure 1: Polyphase filterbank
Implementation
Prior to performing the Fourier transform, the samples undergo first an M-decimation and are
filtered using a complex 8-tap filter with independent real and imaginary paths. The filter
coefficients are entirely user defined and can be loaded or updated at anytime before or during
processing.
The FFT core uses a decomposition of radix-4 and radix-2 butterflies for computing the DFT,
ranging from 8 to 4096 points. The FFT length is a user programmable parameter and it can be
changed without the need to reconfigure the FPGA.
Polyphase filterbank product manual
December 2005 www.sundance.com - 3 -
Fast