Chapter 1: Signals and Systems
This chapter begins the study of digital signal processing by
developing the notion of a discrete-time signal
and a discrete-time system.
We will concentrate on solving problems related to signal representations,
signal manipulations, properties of signals, system classification, and
system properties.
First, in Sect.1.2 we define precisely what is meant
by a discrete-time signal, and then develop some basic, yet important,
operations that may be performed on these signals.
Then, in Sect.1.3 we consider discrete-time systems.
Of special importance will be the notions of linearity, shift-invariance,
causality, stability, and invertibility.
It will be shown that for systems that are linear and shift-invariant, the
input and output are related by a convolution sum.
Properties of the convolution sum and methods for performing convolutions
are then discussed in Sect.1.4.
Finally, in Sect.1.5 we look at discrete-time systems that are
described in terms of a difference equation.
Chapter 2: Fourier Analysis
The Fourier representation of signals plays an extremely important role in
both continuous-time and discrete-time signal processing.
It provides a method for mapping signals into another ``domain''
in which to manipulate them.
What makes the Fourier representation particularly useful is the property
that the convolution operation is mapped to multiplication.
In addition, the Fourier transform provides a different way to interpret
signals and systems.
In this chapter we will develop the discrete-time Fourier transform, i.e.,
a Fourier transform for discrete-time signals.
We will show how complex exponentials are eigenfunctions of linear
shift-invariant (LSI) systems, and how this property leads to the notion of
a frequency response representation of LSI systems.
Finally, we will explore how the discrete-time Fourier transform may be
used to solve linear constant-coefficient difference equations and perform
convolutions.
Chapter 3: Sampling
Most discrete-time signals come from sampling a continuous-time
signal, such as speech and audio signals, radar and sonar data, and seismic and biological signals.
The process of converting these signals into digital form is called analog-to-digital (A-D) conversion.
The reverse process of reconstructing an analog signal from its samples
is known as digital-to-analog (D-A) conversion.
This chapter examines the issues related to A-D and D-A conversion.
Fundamental to this discussion is the sampling theorem, which
gives precise conditions under which an analog signal may be uniquely
represented in terms of its samples.
Chapter 4:The z-Transform
The z-transform is a useful tool in the analysis of discrete-time signals and systems, and is the discrete-time counterpart of the Laplace
transform for continuous-time signals and systems.
The z-transform may be used to solve constant coefficient difference
equations, evaluate the response of a linear time-invariant system to a
given input, and design linear filters.
In this chapter, we will look at the z-transform, and examine how it may
be used to solve a variety of different problems.
Chapter 5: Transform Analysis of Systems
Given a linear shift-invariant system with a unit sample response h(n),
the input x(n) and the output y(n) are related by a convolution sum,
y(n) = x(n) * h(n)
This relationship may also be expressed in the z-transform domain as
Y(z) = X(z) H(z)
where H(z), the z-transform of h(n), is the system function of the LSI system.
The system function is very useful in the description and analysis of
LSI systems.
In this chapter, we look at the characterization of a linear shift-invariant
system in terms of its system function, and discuss special types of LSI
systems such as linear phase systems, allpass systems, minimum phase
systems, and feedback networks.
Chapter 6: The DFT
In previous chapters, we have seen how to represent a sequence in
terms of a linear combination of complex exponentials using the
Discrete-Time Fourier Transform (DTFT), and how the sequence values
may be used as the coefficients in a power series expansion of a
complex-valued function of z.
For finite-length sequences there is another representation, called the
Discrete Fourier Transform (DFT).
Unlike the DTFT, which is a continuous function of a continuous frequency variable,
the DFT is a sequence that corresponds to samples of the DTFT.
Such a representation is very useful for digital computations, and for
digital hardware implementations.
In this chapter, we look at the DFT, explore its properties, and see how it
may be used to perform such tasks as digital filtering, and evaluating the
frequency response of a linear shift-invariant system.
Chapter 7: The Fast Fourier Transform
In Chapter 6 we saw that the discrete Fourier transform (DFT)
could be used to perform convolutions.
In this chapter we look at the computational requirements of the DFT,
and derive some fast algorithms for computing the DFT.
These algorithms are known, generically, as Fast Fourier Transforms
(FFT's).
We begin with the radix-2 decimation-in-time FFT, an algorithm published in
1965 by Cooley and Tukey.
We then look at mixed-radix FFT algorithms, and the prime factor FFT.
Chapter 8: Implementation of Discrete-Time Systems
Given a linear shift-invariant system with a rational system function H(z),
the input and output are related by a linear constant coefficient difference
equation.
For example, with a system function
H(z) = [b(0) + b(1)z -1} / [1 + a(1)z-1]
the input x(n) and output y(n) are related by the linear constant
coefficient difference equation
y(n) = -a(1)y(n-1) + b(0)x(n) + b(1)x(n-1)
This difference equation defines a sequence of operations that are
to be performed in order to implement this system.
However, note that this system may also be implemented with the following pair
of coupled difference equations,
w(n) = -a(1)w(n-1) + x(n)
y(n) = b(0)w(n) + b(1)w(n-1)
With this implementation, it is only necessary to provide one memory location to store w(n-1), whereas the previous equaation requires two memory locations, one to store y(n-1) and
one to store x(n-1).
This simple example illustrates that there is more than one way to implement
a system, and that the amount of computation and/or memory required will
depend on the implementation.
In addition, the implementation will also effect the sensitivity of the filter to coefficient quantization, and it will effect the roundoff noise that appears at the output of the filter.
In this chapter, we look at a number of different ways to implement a linear
shift-invariant discrete-time system, and look at the effect of
finite word-lengths on these implementations.
Chapter 9: Filter Design
This chapter considers the problem of designing a digital filter.
The design process begins with the filter specifications,
which may include constraints on the magnitude and/or phase of the frequency
response, constraints on the unit sample response or step response of the
filter, specification of the type of filter (e.g., FIR or IIR), and the
filter order.
Once the specifications have been defined, the next step is to find
a set of filter coefficients that produce an acceptable filter.
After the filter has been designed, the last step is to implement the system
in hardware or software, quantizing the filter coefficients if necessary,
and choosing an appropriate filter structure (Chapter 8).