4
White Paper | Versatile Channelizer with DSP Builder for Intel FPGAs
Filter Design
The prototype filter of a polyphase filter is basically a
low pass decimation filter with bandwidth of 1/M. In
oversampling channelizer, 1/M is larger than 1/K. A causal
design may set the stop band to 1/M as in the top of Figure 9,
so that the transition band is (1/M – F
pass
)/2. A more resource
efficient design would double the transition bandwidth as
shown in bottom of Figure 9, so that half of the transition
band is within 1/M and the other half is outside. In other
words, (F
stop
+ F
pass
)/2 equals to 1/M. The energy outside
1/M folds back to the transition band within 1/M, and the
passband is not affected. It may nevertheless introduce
slightly more noise from the larger transition band. Doubling
the transition bandwidth roughly reduces the number of
coefficients to half.
Inverse Channelizer
Inverse channelizer or synthesis filter bank is just the
reverse of the channelizer. Figure 10 shows the back-to-back
channelizer and inverse channelizer. For x(n) at the output to
be perfectly reconstructed from x(n) at the input, filter H(z)
and G(z) has to be inverse of each other. or, H(z)G(z) = cz
-d
I
K
where c and d are constants.
Fixed-Point vs Floating-Point Numeric
Precision
When implementing algorithms hardware developers will
need to tradeoff between floating-point and fixed-point
numeric precision. Algorithms are typically developed
using double-precision floating-point numbers. This
provides almost infinite dynamic range and infinitesimal
resolution and allows the algorithm developer to focus
on the mathematical part of the algorithm without being
concerned about the effects of a reduced precision datatype
on their algorithms. When implementing these algorithms
in hardware, however, double-precision floating-point
is expensive forcing the designer to evaluate reduced
precision data type formats that typically include single
precision floating-point or fixed-point. These data types
can reduce the cost and power of the final system but add to
the complexity of the design process by requiring analysis
of the reduced numeric precision effects on the algorithm
response.
A fixed-point number defines a dedicated number of bits
for the integer and fractional parts of the number. No matter
how large or small the number the same number of bits
are used for each portion. For example, a 16-bit fixed-
point number is typically defined using the nomenclature
“unsigned (16,13)”, which means this is an unsigned number
that uses a total of 16-bits to represent the number where
13 of the bits are used for the fractional (right of the decimal
point) and 3 bits are used for the integer portion of the
number (left of the decimal point). If more numeric range
is required than more bits can be allocated to the integer
portion or if finer resolution is required more bits can be
assigned to the fractional portion of the number.
In contrast, a floating-point number does not reserve a
specific number of bits for the integer part or the fractional
part. Instead it reserves a certain number of bits for the
number (called the mantissa or significand) and a certain
number of bits to indicate where within that number the
decimal place sits (called the exponent). So, a floating-point
number that took up 10 digits with 2 digits reserved for the
exponent might represent a largest value of 9.9999999e+50
and a smallest value of 0.0000001e-49. An IEEE 754 double-
precision floating-point number requires 64 bits and an IEEE
754 single-precision floating-point number requires 32 bits.
Converting an algorithm from floating to fixed point can be a
complex and tedious process that requires an analysis of the
effects of the reduced numeric precision on the algorithm
performance but can yield hardware cost and power savings.
Intel FPGAs support both floating and fixed-point numbers
but historically FPGA have supported “soft” implementations
of floating-point functionality that was implemented using
fixed-point digital signal processing (DSP) blocks and
other logic resources. Such implementation provided good
numerical performance advantages but suffered from FPGA
resource over-usage high-power consumption compared to
fixed-point implementations. Intel Stratix 10 and Intel Arria®
10 FPGAs have solved this problem by incorporating IEEE
754 single-precision floating-point functionality into each
DSP blocks. This makes the usage decision much easier as it
does not imply any resources penalty with negligible power
consumption difference versus fixed-point mode of DSP
block.
Figure 9. Low Pass Filter Design
Figure 10. Back-to-Back Channelizer and Inverse Channelizer
pass
1/M
F
pass
1/M
F
stop
Doubling
Transition
1
1
H
0
(n)
X
0
(m)
H
1
(n)
X
1
(m)
H
K-2
(n)
X
K-2
(m)
H
K-1
(n)
X
K-1
(m)
IFFT
FFT
G
0
(n)
G
1
(n)
G
K-2
(n)
G
K-1
(n)
X(n)