Professional Documents
Culture Documents
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 1/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
H(z)
H(z)
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 2/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
retain the target filter specifications even after quantizing the coefficients. In
addition, sometimes we observe that a particular structure can dramatically
reduce the computational complexity of the system.
M−1
y(n) = ∑ b kx(n − k)
k=0
M −1
y(n) = ∑ bk x(n − k)
Equation 1
k=0
Based on the above equation, we need the current input sample and
M−1
M=5
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 3/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
multipliers for an
M
(M − 1)
th-order FIR filter. However, usually, we can almost halve the number of
(M − 1)
multipliers. This can be achieved by noting that we are mainly interested in
linear-phase FIR filters. In fact, the main advantage of a FIR filter over an
infinite impulse response (IIR) design is its linear-phase response,
otherwise, for a given set of specifications, an IIR design can offer a filter of
lower order and reduce the computational complexity. On the other hand, for
a linear-phase FIR filter, we observe the following symmetry in the
coefficients (https://www.allaboutcircuits.com/technical-articles/finite-
impulse-response-filter-design-by-windowing-part-i-concepts-and-rect/) of
the difference equation
bk = ± bM − 1 − k
bk = ±bM −1−k
For
M=5
, Equation 1 gives
M = 5
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 4/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
Assuming
bk = bM − 1 − k
, we obtain
bk = bM −1−k
The structure obtained from the above equation is shown in Figure 2. While
Figure 1 requires five multipliers, employing the symmetry of a linear-phase
FIR filter, we can implement the filter using only three multipliers. This
example shows that for an odd
(M − 1)
to
M
M+1
2
this
2 article (https://www.allaboutcircuits.com/technical-articles/finite-impulse-
response-filter-design-by-windowing-part-i-concepts-and-rect/).
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 5/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
Figure 2. The symmetry of a linear-phase FIR filter can be used to reduce the number of
multipliers.
H(z)
M−1 P
M −1 P
−k
H (z) = ∑ bk z = ∏ (b0k + b1k z
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 6/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
∑ ∏(
Equation 2 k=0 k=1
where
. For example,
M
2
M=5
,
M = 5
H(z)
H(z)
To clarify converting a system function into the cascade form, let’s review an
example.
Example 1
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 7/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
Assume that we need to implement the nine-tap FIR filter given by the
following table using a cascade structure.
−2
H (z) = −0.0977 + 0.1497z + 0.2
It can be shown that
where
G = − 0.0977
G = −0.0977
(
H 1(z) = 1 − 2.5321z − 1 + z − 2 )
−1 −2
H1 (z) = (1 − 2.5321z +z )
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 8/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
(
H 2(z) = 1 − 0.3474z − 1 + z − 2 )
−1 −2
H2 (z) = (1 − 0.3474z +z )
(
H 3(z) = 1 + 1.8794z − 1 + z − 2 )
−1 −2
H3 (z) = (1 + 1.8794z +z )
(
H 4(z) = 1 + z − 1 + z − 2 )
−1 −2
H4 (z) = (1 + z +z )
H 1(z)
is shown in Figure 4.
H1 (z)
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 9/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
H 1(z)
.
H1 (z)
H 1(z)
H(z)
, i.e.
H (z)
z 1 = 2.0425
and
z1 = 2.0425
z 2 = 0.4896
H(z)
H 2(z)
are
H2 (z)
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 10/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
( )
z 3 = 0.1737 + 0.9848j
and
z3 = 0.1737 + 0.9848j
z 4 = 0.1737 − 0.9848j
.
z4 = 0.1737 − 0.9848j
Since finding the cascade form of a practical FIR filter involves tedious
mathematics, we can use the MATLAB function tf2sos, which stands for
transfer function to second-order section, to obtain the cascade form of a
given transfer function. In fact, the cascade form of
H(z)
in the above example was found using the tf2sos function with the following
H (z)
lines of code:
sos=
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 11/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
and
G = − 0.0977
.
G = −0.0977
Each row of sos above gives the transfer function of one of the second-order
sections. The first three numbers of each row represent the numerator of the
corresponding second-order section and the second three numbers give its
denominator. For example, the first row of sos gives the second-order
section
H 1(z)
of Example 1 and so on. The tf2sos command also gives a gain factor,
H1 (z)
Example 2
Assume that we need to implement the ten-tap FIR filter given by the
following table using a cascade structure.
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 12/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
sos =
and
G = − 0.0024
.
G = −0.0024
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 13/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
where
G = − 0.0024
G = −0.0024
H 1(z) = 1 − 7.7465z − 1
−1
H1 (z) = 1 − 7.7465z
−1 −2
H2 (z) = 1 + 0.8709z − 0.1291z
−1 −2
H3 (z) = 1 + 1.7922z + 1.6972z
H 4(z) = 1 + 0.9858z − 1 + z − 2
−1 −2
H4 (z) = 1 + 0.9858z +z
−1 −2
H5 (z) = 1 + 1.0560z + 0.5892z
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 14/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
H 1(z)
b 2k
We can realize the second-order sections of this example using a direct form
structure and obtain the cascade structure of the filter; however, there is
another alternative which allows us to reduce the computational complexity.
To find this computationally efficient structure, remember that, as illustrated
by Figure 1 and 2 above, a linear-phase FIR filter can be realized with a
smaller number of multipliers. On the other hand, notice that while the target
system function is a linear phase, only
H 4(z)
bk
z1
and
z1
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 15/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
z 1∗
and
1
z1
1
∗
z1
are also a pair of its zeros.We can use this property to group the zeros in a
1
way
z
1
that the system function is decomposed into linear-phase elements.
∗
Let’s use the MATLAB command roots, to find the zeros of the system
function:
roots(N)
Hence, we obtain:
z 1 = − 1.0000
z1 = −1.0000
z 2 = 7.7465
,
z2 = 7.7465
z 3 = 0.1291
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 16/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
z3 = 0.1291
z 4 = − 0.4929 + 0.8701j
,
z4 = −0.4929 + 0.8701j
z 5 = − 0.4929 − 0.8701j
z5 = −0.4929 − 0.8701j
z 6 = − 0.5280 + 0.5571j
,
z6 = −0.5280 + 0.5571j
z 7 = − 0.5280 − 0.5571j
z7 = −0.5280 − 0.5571j
z 8 = − 0.8961 + 0.9456j
,
z8 = −0.8961 + 0.9456j
z 9 = − 0.8961 − 0.9456j
z9 = −0.8961 − 0.9456j
The reader can verify that
1
z2 = z3
,
1
z2 =
z3
1
z4 = ∗
z5
,
1
z4 = ∗
z
5
1
z6 = ∗
z8
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 17/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
and
1
z6 = ∗
z
8
1
z7 =
z 9∗
and
z2
z3
−1
HLP 1 (z) = (1 − 0.1291z )(1 − 7.7
Pairing
z4
and
z4
z5
gives:
Grouping
z6
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 18/19
11/19/2017 Structures for Implementing Finite Impulse Response Filters
z7
z8
, and
z9
together, we obtain:
z1
H LP4(z) = 1 + z − 1
where
G = − 0.0024
https://www.allaboutcircuits.com/technical-articles/structures-for-implementing-finite-impulse-response-filters/ 19/19