This book was previously published by Pearson Education, Inc. Copyright
(c) 1996--2009 by Prentice Hall, Inc. Previous ISBN 0-13-209172-0.
The book's copyrights were transferred from Prentice Hall to
Sophocles J. Orfanidis in 2009. A new version of the book, that includes
corrections of all the typos, is now freely available in PDF format, and in a 2-up form. A solutions manual is available. A
printed
version is also available as a size-6x9 paperback.
Copyright (c) 2010 by Sophocles J. Orfanidis, All Rights Reserved.
Links to the book's web page, http://www.ece.
rutgers.edu/~orfanidi/intro2sp/ , may be placed on any web site. Any
part of this book may be downloaded and printed for personal or
educational use only, as long as the printed or photocopied pages are
not altered in any way from the original PDF file posted on the book's
web page.
No part of this book may be reproduced, altered in any way, or transmitted in
any form for commercial, profit, sale, or marketing purposes.
This book provides an applications-oriented introduction to
digital signal processing
written primarily for electrical engineering undergraduates.
Practicing engineers and graduate students may also find it
useful as a first text on the subject.
Digital signal processing is everywhere. Today's college students hear
"DSP" all the time in their everyday life - from their CD players, to
their electronic music synthesizers, to the sound cards in their PCs.
They hear all about "DSP chips", "oversampling digital filters",
"1-bit A/D and D/A converters", "wavetable sound synthesis",
"audio effects processors", "all-digital audio studios".
By the time they reach their junior year,
they are already very eager to learn
more about DSP.
Approach
The learning of DSP can be made into a rewarding,
interesting, and fun experience for the student by weaving into the
material several applications, such as the above, that serve
as vehicles for teaching the basic DSP concepts, while generating
and maintaining
student interest. This has been the guiding philosophy and objective
in writing this text.
As a result, the book's emphasis is more on signal processing
than discrete-time system theory, although the basic principles
of the latter are adequately covered.
The book teaches by example and takes a hands-on
practical approach that emphasizes the algorithmic, computational, and
programming aspects of DSP. It contains a large number of worked examples,
computer simulations and applications, and
includes several C and MATLAB functions
for implementing various DSP operations. The practical slant of the book
makes the concepts more concrete.
Use
The book may be used at the junior or senior level. It is based on a
junior-level DSP course that I have taught at Rutgers since 1988. The assumed
background is only a first course on linear systems. Sections marked
with an asterisk
(*) are more appropriate for a second or senior elective course
on DSP. The rest can be covered at the junior level. The included computer
experiments can form the basis of an accompanying
DSP lab course, as is done at Rutgers.
A solutions manual, which also contains the results of the computer experiments,
is available from the publisher. The C and MATLAB functions may be obtained
via anonymous FTP from the Internet site ece.rutgers.edu
in the directory /pub/sjo or by pointing a Web browser to
the book's WWW home page on
ftp://ece.rutgers.edu/pub/sjo/intro2sp.html.
Contents and Highlights
Chapters 1 and 2 contain
a discussion of the two key DSP concepts of
sampling and quantization.
The first part of Chapter 1
covers the basic issues of sampling, aliasing, and analog
reconstruction at a level
appropriate for juniors. The second part is more advanced and
discusses the practical issues of choosing and defining
specifications for antialiasing prefilters and anti-image postfilters.
Chapter 2 discusses the quantization process and some practical
implementations of A/D and D/A converters, such as the conversion algorithm
for bipolar two's complement successive approximation converters. The standard
model of quantization noise is presented, as well as the techniques of
oversampling, noise shaping, and dithering. The tradeoff between
oversampling ratio and savings in bits is derived. This material is continued
in Section 12.7 where the implementation and operation of
delta-sigma noise shaping quantizers is considered.
Chapter 3 serves as a review of basic discrete-time systems
concepts, such as
linearity, time-invariance, impulse response, convolution, FIR and IIR
filters, causality, and stability. It can be covered quickly as most
of this material is assumed known from a prerequisite linear systems course.
Chapter 4 focuses on FIR filters and its purpose is to
introduce two basic signal processing methods:
block-by-block processing and sample-by-sample processing.
In the block processing part, we discuss convolution
and several ways of thinking about it,
transient and steady-state behavior, and real-time processing
on a block-by-block basis using the overlap-add method and its software
implementation. This is further discussed in Section 9.9 using the FFT.
In the sample processing part, we introduce the basic building blocks of
filters: adders, multipliers, and delays.
We discuss block diagrams for FIR filters
and their time-domain operation on a sample by sample basis.
We put a lot of emphasis on the concept of sample processing
algorithm, which is the repetitive series of computations that must be carried
out on each input sample.
We discuss the concept of circular buffers and their use in implementing
delays and FIR filters. We present a systematic treatment of the subject
and carry it on to the remainder of the book.
The use of circular delay-line
buffers is old, dating back at least 25 years with its application
to computer music. However, it has not been treated
systematically in DSP texts. It has acquired a new relevance because all
modern DSP chips use it to minimize the number of hardware instructions.
Chapter 5 covers the basics of
z-transforms. We emphasize the z-domain view of
causality, stability, and frequency spectrum.
Much of this material may be known from an
earlier linear system course.
Chapter 6 shows the equivalence of various ways of characterizing a
linear filter and illustrates their relevance by example. It discusses
also topics such as, sinusoidal and steady-state responses, time constants of
filters, simple pole/zero designs of first and second order filters as well
as comb and notch
filters. The issues of inverse filtering and causality are also considered.
Chapter 7 develops the standard filter realizations
of canonical, direct, and
cascade forms, and their implementation with circular buffers.
Quantization effects are briefly discussed.
Chapter 8 presents three DSP application areas. The first is on digital
waveform generation, with particular emphasis on wavetable generators.
The second is on digital audio effects, such as flanging, chorusing,
reverberation, multitap delays, and dynamics processors, such as compressors and
expanders.
These two areas were chosen because of their appeal
to undergraduates and because they provide concrete illustrations of the use
of delays, circular buffers, and filtering concepts in the context of audio
signal processing.
The third area is on noise reduction/signal enhancement, which
is one of the most important applications of DSP and is of interest to
practicing engineers and scientists who remove noise from data on a
routine basis. Here, we develop the basic principles for designing noise
reduction and signal enhancement filters both in the frequency and time
domains.
We discuss the design and circular buffer implementation
of notch and comb filters for removing periodic interference, enhancing
periodic signals, signal averaging, and for separating the luminance and
chrominance components in digital color TV systems.
We also discuss Savitzky-Golay filters for data smoothing
and differentiation.
Chapter 9 covers DFT/FFT algorithms.
The first part emphasizes the issues of spectral analysis,
frequency resolution, windowing, and leakage.
The second part discusses the
computational aspects of the DFT and some of its pitfalls, the difference
between physical and computational frequency resolution,
the FFT, and fast convolution.
Chapter 10 covers FIR filter design using the window method, with particular
emphasis on the Kaiser window. We also discuss the use of the Kaiser window
in spectral analysis.
Chapter 11 discusses IIR filter design using the
bilinear transformation
based on Butterworth and Chebyshev filters.
By way of introducing the bilinear
transformation, we show how to design practical 2nd order
digital audio parametric equalizer filters having
prescribed widths, center frequencies, and gains. We also discuss
the design of periodic notch and comb filters with prescribed widths.
In these two filter design chapters, we have chosen to present only a few
design methods that are simple enough for our intended level of presentation
and effective enough to be of practical use.
Chapter 12 discusses interpolation, decimation, oversampling DSP systems,
sample rate converters, and delta-sigma quantizers. We discuss the use
of oversampling for alleviating the need for high quality analog prefilters and
postfilters. We present several practical
design examples of interpolation filters, including polyphase and
multistage designs. We consider the design of sample rate converters and
study the operation of oversampled
delta-sigma quantizers by simulation. This material is too advanced for
juniors but not for seniors. All undergraduates, however, have a strong interest in
it because of its use in digital audio systems such as CD and DAT
players.
The Appendix has four parts: (a) a review section on
random signals; (b) a discussion of
random number generators, including uniform, gaussian, low frequency,
and 1/f noise generators used in the simulations;
(c) C functions for performing the complex arithmetic in the
DFT routines; (d) listings of MATLAB functions.
Paths
Several course paths are possible through the text depending on the
desired level of presentation.
For example, in the 14-week
junior course at Rutgers we cover sections 1.1-1.4, 2.1-2.4, chapters 3-7,
section 8.1-8.2, chapter 9, and sections 10.1-10.2 and 11.1-11.4.
One may omit certain of these sections and/or add others depending on the
available time and student interest and background.
In a second DSP course at the senior year, one may add sections 1.5-1.7, 2.5,
8.1, 8.3, 11.5, 11.6,
and chapter 12. In a graduate course, the entire text can be covered comfortably
in one semester.
Acknowledgments
I am indebted to the many generations of students who tried earlier versions of
the book and helped me refine it. In particular, I would like to thank Mr. Cem
Saraydar for his thorough proofreading of the manuscript.
I would like to thank my colleagues
Drs. Zoran Gajic, Mark Kahrs, James Kaiser, Dino Lelic, Tom Marshall,
Peter Meer, and Nader Moayeri for their feedback and encouragement.
I am especially indebted to Dr. James Kaiser for enriching
my classes over the past eight years
with his inspiring yearly lectures on the Kaiser window.
I would like to thank the book reviewers Drs. A. V. Oppenheim,
J. A. Fleming, Y-C Jenq, W. B. Mikhael, S. J. Reeves,
A. Sekey, and J. Weitzen,
whose comments helped improve the book. And I would like to thank
Rutgers for providing me with a sabbatical leave to finish up the project.
I welcome any feedback from readers - it may be sent to
orfanidi@ece.rutgers.edu.
Finally, I would like to thank my wife Monica and son John for their
love, patience, encouragement, and support.
All the C functions are contained in the compressed zip file
c.zip,
and the MATLAB functions in
m.zip.
The files
c.tar.Z,
m.tar.Z
are in tar-compressed format.
Individual listings can be obtained as follows:
If you download and use the programs, please acknowledge their source.
The legal disclaimers contained in the book regarding the use of the
programs apply also to these on-line versions.
To improve the readability of the C functions, we use the old K&R way of
declaring function arguments.
The functions may be easily edited to conform with ANSI C. For example,
the K&R declaration:
double fir(M, h, w, x)
int M;
double *h, *w, x;
{
/* body of function */
}
may be replaced by the ANSI version:
double fir(int M, double *h, double *w, double x)
{
/* body of function */
}
Any feedback from readers is welcome - such as reporting errors,
suggestions for improvement, omitted references - and may be sent
to the author at orfanidi@ece.rutgers.edu.
The LaTeX file
errata.tex
contains an updated list of known errata; the file
errsol.tex
contains the errata in the Solutions Manual (ISBN 0-13-230293-4). PDF versions of the errata files
are also available: errata.pdf,
errsol.pdf.
The book was typeset by the author using
emtex386, LaTeX2.09, nfss2, psnfss, and Y&Y's Lucida Bright
postscript font family, including Lucida New Math,
Euler, and some CM math fonts. The dvi file was
converted to postscript by Y&Y's dvipsone and printed by Prentice Hall
at 1200 dpi.
The dvi previewers were Y&Y's dviwindo and emtex's
dvidrv. Several
LaTeX style files from the CTAN collection
were used: equation.sty, jeep.sty, aip.sty, psfig.sty, alltt.sty,
amslatex.sty. The table.tex macros from PCTeX and the ps2pk conversion
utility were also used.
The data graphs were plotted by the Scientific Endeavors GraphiC package,
exported to EPS postscript format, and inserted into the dvi file
by psfig.sty. The illustrations were prepared by the author
using CorelDraw and exported to EPS; they
were also inserted with psfig.
The book cover was initially designed by the author using CorelDraw and
finally redesigned by Prentice-Hall.
The block diagram on the cover represents Schroeder's digital
reverberator; see Section 8.2.3.
Sophocles J. Orfanidis is an Associate Professor of Electrical and
Computer Engineering at Rutgers University. He has been teaching
undergraduate and graduate DSP courses at Rutgers since 1978. He received the
Rutgers College Parents Association Outstanding Teacher of the
Year Award in 1990 and 1996. He is also the author of the graduate DSP
text Optimum Signal Processing, 2nd edition, McGraw Hill, New York,
1988. He may be contacted at: