This preview shows pages 1–3. Sign up to view the full content.
EEL 3135: Signals and Systems
Dr. Fred J. Taylor, Professor
Lesson Title: FIR Filter Architecture
Lesson Number: 11 (Section 54)
Background:
In Chapter 5, elementary FIR filters are discussed. FIRs are, and will remain, a popular filter
methodology due to their intrinsic simplicity and versatility. In Chapter 5, the basic design of an
FIR is seen to be a multiplyadd expression.
The FIR implementation choices made by an
engineer FIR give rise to architectural diversity.
Whether the filter implementation involves the
use of software, hardware, or firmware, the designer is expected to realize a solution that
implements the convolution sum:
[
]
[
]
∑
=

=
M
k
k
k
n
x
h
n
y
0
1.
efficiently and affordably.
The design is also expected to meet all posted speed (filter
cycles/sec), power (W), and precision (bits) requirements. The very structure of Equation 1 infer
the type of basic elements, called building blocks, that are required to build an FIR solution.
Simple (soft) Implementations
Equation 1 can be implemented in software using low to high level languages.
For example, at
a low level, an FIR would execute a code similar to that shown below:
For each input sample x[k], do
2
x
0
=x[k]
y[k]=h
0
x
0
+ h
1
x
1
+…+ h
N1
x
N1
{update FIFO stack}
x
N1
= x
N2
*… = …
x
2
= x
1
x
1
= x
0
It is assumed that the data is stored in a firstin firstout (FIFO) buffer. Once in operation, the
code would perform N multiplications and N1 adds, export the outcome, and read a new data
sample into the FIFO per filter cycle.
At a high level, MATLAB would perform FIR filter using the
filter
command as illustrated below.
Example
A MATLAB filter call is reported below.
filter
1D digital filter
1
This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentEEL 3135: Signals and Systems
Dr. Fred J. Taylor, Professor
Syntax
y = filter(b,a,X)
[y,zf] = filter(b,a,X)
[y,zf] = filter(b,a,X,zi)
y = filter(b,a,X,zi,dim)
[...] = filter(b,a,X,[],dim)
Description
y = filter(b,a,X)
filters the data in vector
X
with the filter described by numerator coefficient
vector
b
and denominator coefficient vector
a
. If
a(1)
is not equal to
1
,
filter
normalizes the filter
coefficients by
a(1)
. If
a(1)
equals
0
,
filter
returns an error.
If
X
is a matrix,
filter
operates on the columns of
X
. If
X
is a multidimensional array,
filter
operates on the first nonsingleton dimension.
[y,zf] = filter(b,a,X)
returns the final conditions,
zf
, of the filter delays. If
X
is a row or
column vector, output
zf
is a column vector of
max(length(a),length(b))1
. If
X
is a matrix,
zf
is an array of such vectors, one for each column of
X
, and similarly for multidimensional arrays.
[y,zf] = filter(b,a,X,zi)
accepts initial conditions,
zi
, and returns the final conditions,
zf
,
of the filter delays. Input
zi
is a vector of length
max(length(a),length(b))1
, or an array with
the leading dimension of size
max(length(a),length(b))1
and with remaining dimensions
matching those of
X
.
y = filter(b,a,X,zi,dim)
This is the end of the preview. Sign up
to
access the rest of the document.
 Spring '08
 ?

Click to edit the document details