This preview shows pages 1–3. Sign up to view the full content.
67
CHAPTER
4
DSP Software
DSP applications are usually programmed in the same languages as other science and engineering
tasks, such as: C, BASIC and assembly.
The power and versatility of C makes it the language
of choice for computer scientists and other professional programmers.
On the other hand, the
simplicity of BASIC makes it ideal for scientists and engineers who only occasionally visit the
programming world.
Regardless of the language you use, most of the important DSP software
issues are buried far below in the realm of whirling ones and zeros.
This includes such topics as:
how numbers are represented by bit patterns, roundoff error in computer arithmetic, the
computational speed of different types of processors, etc.
This chapter is about the things you
can do at the
high level
to avoid being trampled by the
low level
internal workings of your
computer.
Computer Numbers
Digital computers are very proficient at storing and recalling numbers;
unfortunately, this process isn't without error.
For example, you instruct your
computer to store the number: 1.41421356.
The computer does its best, storing
the closest number it
can
represent: 1.41421354.
In some cases this error is
quite insignificant, while in other cases it is disastrous.
As another illustration,
a classic computational error results from the addition of two numbers with
very different values, for example, 1 and
0.00000001.
We would like the
answer to be 1.00000001, but the computer replies with 1.
An understanding
of how computers store and manipulate numbers allows you to anticipate and
correct these problems
before
your program spits out meaningless data.
These problems arise because a fixed number of bits are allocated to store each
number, usually 8, 16, 32 or 64.
For example, consider the case where eight
bits are used to store the value of a variable.
Since there are 2
8
= 256
possible bit patterns, the variable can only take on 256 different values.
This
is a fundamental limitation of the situation, and there is nothing we can do
about it.
The part we
can
control is what value we declare each bit pattern
This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThe Scientist and Engineer's Guide to Digital Signal Processing
68
to represent.
In the simplest cases, the 256 bit patterns might represent the
integers from 0 to 255, 1 to 256, 127 to 128, etc.
In a more unusual scheme,
the 256 bit patterns might represent 256 exponentially related numbers:
Everyone accessing the data must understand
1, 10, 100, 1000,
, 10
254
, 10
255
.
what value each bit pattern represents.
This is usually provided by an
algorithm or formula for converting between the represented value and the
corresponding bit pattern, and back again.
While many encoding schemes are possible, only two general formats have
become common,
fixed point
(also called integer numbers) and
floating point
(also called real numbers).
In this book's BASIC programs, fixed point
variables are indicated by the % symbol as the last character in the name, such
as: I%, N%, SUM%, etc.
All other variables are floating point, for example:
X, Y, MEAN, etc.
When you evaluate the formats presented in the next few
pages, try to understand them in terms of their
This is the end of the preview. Sign up
to
access the rest of the document.
 Summer '09

Click to edit the document details