Digital design principles and practices
Trang 1DO NOT COPY
DO NOT COPY
DO NOT COPY
DO NOT COPY
com-an electrical engineering student who already knows thing about analog electronics and circuit design, but you wouldn’t know abit if it bit you No matter Starting from a fairly basic level, this book willshow you how to design digital circuits and subsystems
some-We’ll give you the basic principles that you need to figure things out,and we’ll give you lots of examples Along with principles, we’ll try toconvey the flavor of real-world digital design by discussing current,practical considerations whenever possible And I, the author, will oftenrefer to myself as “we” in the hope that you’ll be drawn in and feel that we’rewalking through the learning process together
1.1 About Digital Design
Some people call it “logic design.” That’s OK, but ultimately the goal ofdesign is to build systems To that end, we’ll cover a whole lot more in thistext than just logic equations and theorems
This book claims to be about principles and practices Most of the ciples that we present will continue to be important years from now; someW
prin-Hi, I'm John
Trang 2One of the book's goals is to present enough about basic principles for you
to know what's happening when you use software tools to turn the crank for you.The same basic principles can help you get to the root of problems when thetools happen to get in your way
Listed in the box on this page, there are several key points that you shouldlearn through your studies with this text Most of these items probably make nosense to you right now, but you should come back and review them later.Digital design is engineering, and engineering means “problem solving.”
My experience is that only 5%–10% of digital design is “the fun stuff”—thecreative part of design, the flash of insight, the invention of a new approach.Much of the rest is just “turning the crank.” To be sure, turning the crank is mucheasier now than it was 20 or even 10 years ago, but you still can’t spend 100% oreven 50% of your time on the fun stuff
IMPORTANT
THEMES IN
DIGITAL DESIGN
• Good tools do not guarantee good design, but they help a lot by taking the pain out
of doing things right.
• Digital circuits have analog characteristics.
• Know when to worry and when not to worry about the analog aspects of digital design.
• Always document your designs to make them understandable by yourself and others.
• Associate active levels with signal names and practice bubble-to-bubble logic design.
• Understand and use standard functional building blocks.
• Design for minimum cost at the system level, including your own engineering effort
as part of the cost.
• State-machine design is like programming; approach it that way
• Use programmable logic to simplify designs, reduce cost, and accommodate minute modifications.
last-• Avoid asynchronous design Practice synchronous design until a better methodology comes along.
• Pinpoint the unavoidable asynchronous interfaces between different subsystems and the outside world, and provide reliable synchronizers.
• Catching a glitch in time saves nine.
Trang 3Besides the fun stuff and turning the crank, there are many other areas in
which a successful digital designer must be competent, including the following:
• Debugging It’s next to impossible to be a good designer without being a
good troubleshooter Successful debugging takes planning, a systematic
approach, patience, and logic: if you can’t discover where a problem is,
find out where it is not!
• Business requirements and practices A digital designer’s work is affected
by a lot of non-engineering factors, including documentation standards,
component availability, feature definitions, target specifications, task
scheduling, office politics, and going to lunch with vendors
• Risk-taking When you begin a design project you must carefully balance
risks against potential rewards and consequences, in areas ranging from
new-component selection (will it be available when I’m ready to build the
first prototype?) to schedule commitments (will I still have a job if I’m
late?)
• Communication Eventually, you’ll hand off your successful designs to
other engineers, other departments, and customers Without good
commu-nication skills, you’ll never complete this step successfully Keep in mind
that communication includes not just transmitting but also receiving; learn
to be a good listener!
In the rest of this chapter, and throughout the text, I’ll continue to state
some opinions about what’s important and what is not I think I’m entitled to do
so as a moderately successful practitioner of digital design Of course, you are
always welcome to share your own opinions and experience (send email to
john@wakerly.com)
1.2 Analog versus Digital
Analog devices and systems process time-varying signals that can take on any
value across a continuous range of voltage, current, or other metric So do digital
circuits and systems; the difference is that we can pretend that they don’t! A
digital signal is modeled as taking on, at any time, only one of two discrete
values, which we call 0 and 1 (or LOW and HIGH, FALSE and TRUE, negated
and asserted, Sam and Fred, or whatever)
Digital computers have been around since the 1940s, and have been in
widespread commercial use since the 1960s Yet only in the past 10 to 20 years
has the “digital revolution” spread to many other aspects of life Examples of
once-analog systems that have now “gone digital” include the following:
• Still pictures The majority of cameras still use silver-halide film to record
images However, the increasing density of digital memory chips has
allowed the development of digital cameras which record a picture as a
analog digital
0 1
Trang 4• Video recordings A digital versatile disc (DVD) stores video in a highly
compressed digital format called MPEG-2 This standard encodes a smallfraction of the individual video frames in a compressed format similar toJPEG, and encodes each other frame as the difference between it and theprevious one The capacity of a single-layer, single-sided DVD is about 35billion bits, sufficient for about 2 hours of high-quality video, and a two-layer, double-sided disc has four times that capacity
• Audio recordings Once made exclusively by impressing analog
wave-forms onto vinyl or magnetic tape, audio recordings now commonly usedigital compact discs (CDs) A CD stores music as a sequence of 16-bitnumbers corresponding to samples of the original analog waveform, onesample per stereo channel every 22.7 microseconds A full-length CDrecording (73 minutes) contains over six billion bits of information
• Automobile carburetors Once controlled strictly by mechanical linkages
(including clever “analog” mechanical devices that sensed temperature,pressure, etc.), automobile engines are now controlled by embeddedmicroprocessors Various electronic and electromechanical sensors con-vert engine conditions into numbers that the microprocessor can examine
to determine how to control the flow of fuel and oxygen to the engine Themicroprocessor’s output is a time-varying sequence of numbers thatoperate electromechanical actuators which, in turn, control the engine
• The telephone system It started out a hundred years ago with analog
microphones and receivers connected to the ends of a pair of copper wires(or was it string?) Even today, most homes still use analog telephones,which transmit analog signals to the phone company’s central office (CO).However, in the majority of COs, these analog signals are converted into adigital format before they are routed to their destinations, be they in thesame CO or across the world For many years the private branch exchanges(PBXs) used by businesses have carried the digital format all the way to thedesktop Now many businesses, COs, and traditional telephony serviceproviders are converting to integrated systems that combine digital voicewith data traffic over a single IP (Internet Protocol) network
• Traffic lights Stop lights used to be controlled by electromechanical timers
that would give the green light to each direction for a predeterminedamount of time Later, relays were used in controllers that could activate
Trang 5the lights according to the pattern of traffic detected by sensors embedded
in the pavement Today’s controllers use microprocessors, and can control
the lights in ways that maximize vehicle throughput or, in some California
cities, frustrate drivers in all kinds of creative ways
• Movie effects Special effects used to be made exclusively with miniature
clay models, stop action, trick photography, and numerous overlays of film
on a frame-by-frame basis Today, spaceships, bugs, other-worldly scenes,
and even babies from hell (in Pixar’s animated feature Tin Toy) are
synthe-sized entirely using digital computers Might the stunt man or woman
someday no longer be needed, either?
The electronics revolution has been going on for quite some time now, and
the “solid-state” revolution began with analog devices and applications like
transistors and transistor radios So why has there now been a digital revolution?
There are in fact many reasons to favor digital circuits over analog ones:
• Reproducibility of results Given the same set of inputs (in both value and
time sequence), a properly designed digital circuit always produces exactly
the same results The outputs of an analog circuit vary with temperature,
power-supply voltage, component aging, and other factors
• Ease of design Digital design, often called “logic design,” is logical No
special math skills are needed, and the behavior of small logic circuits can
be visualized mentally without any special insights about the operation of
capacitors, transistors, or other devices that require calculus to model
• Flexibility and functionality Once a problem has been reduced to digital
form, it can be solved using a set of logical steps in space and time For
example, you can design a digital circuit that scrambles your recorded
voice so that it is absolutely indecipherable by anyone who does not have
your “key” (password), but can be heard virtually undistorted by anyone
who does Try doing that with an analog circuit
• Programmability You’re probably already quite familiar with digital
com-puters and the ease with which you can design, write, and debug programs
for them Well, guess what? Much of digital design is carried out today by
writing programs, too, in hardware description languages (HDLs) These
languages allow both structure and function of a digital circuit to be
specified or modeled Besides a compiler, a typical HDL also comes with
simulation and synthesis programs These software tools are used to test
the hardware model’s behavior before any real hardware is built, and then
synthesize the model into a circuit in a particular component technology
• Speed Today’s digital devices are very fast Individual transistors in the
fastest integrated circuits can switch in less than 10 picoseconds, and a
complete, complex device built from these transistors can examine its
hardware description language (HDL) hardware model
Trang 6• Economy Digital circuits can provide a lot of functionality in a small
space Circuits that are used repetitively can be “integrated” into a single
“chip” and mass-produced at very low cost, making possible throw-awayitems like calculators, digital watches, and singing birthday cards (Youmay ask, “Is this such a good thing?” Never mind!)
• Steadily advancing technology When you design a digital system, you
almost always know that there will be a faster, cheaper, or otherwise bettertechnology for it in a few years Clever designers can accommodate theseexpected advances during the initial design of a system, to forestall systemobsolescence and to add value for customers For example, desktop com-puters often have “expansion sockets” to accommodate faster processors
or larger memories than are available at the time of the computer’sintroduction
So, that’s enough of a sales pitch on digital design The rest of this chapter willgive you a bit more technical background to prepare you for the rest of the book
1.3 Digital Devices
The most basic digital devices are called gates and no, they were not named after
the founder of a large software company Gates originally got their name fromtheir function of allowing or retarding (“gating”) the flow of digital information
In general, a gate has one or more inputs and produces an output that is a tion of the current input value(s) While the inputs and outputs may be analogconditions such as voltage, current, even hydraulic pressure, they are modeled
func-as taking on just two discrete values, 0 and 1
Figure 1-1 shows symbols for the three most important kinds of gates A2-input AND gate, shown in (a), produces a 1 output if both of its inputs are 1;
otherwise it produces a 0 output The figure shows the same gate four times, withthe four possible combinations of inputs that may be applied to it and the result-
SHORT TIMES A microsecond (µsec) is 10− 6 second A nanosecond (ns) is just 10− 9 second, and a
picosecond (ps) is 10− 12 second In a vacuum, light travels about a foot in a ond, and an inch in 85 picoseconds With individual transistors in the fastest integrated circuits now switching in less than 10 picoseconds, the speed-of-light delay between these transistors across a half-inch-square silicon chip has become a limiting factor in circuit design.
nanosec-gate
AND gate
Trang 7ing outputs A gate is called a combinational circuit because its output depends
only on the current input combination
A 2-input OR gate, shown in (b), produces a 1 output if one or both of its
inputs are 1; it produces a 0 output only if both inputs are 0 Once again, there are
four possible input combinations, resulting in the outputs shown in the figure
A NOT gate, more commonly called an inverter, produces an output value
that is the opposite of the input value, as shown in (c)
We called these three gates the most important for good reason Any digital
function can be realized using just these three kinds of gates In Chapter 3 we’ll
show how gates are realized using transistor circuits You should know, however,
that gates have been built or proposed using other technologies, such as relays,
vacuum tubes, hydraulics, and molecular structures
A flip-flop is a device that stores either a 0 or 1 The state of a flip-flop is
the value that it currently stores The stored value can be changed only at certain
times determined by a “clock” input, and the new value may further depend on
the flip-flop’s current state and its “control” inputs A flip-flop can be built from
a collection of gates hooked up in a clever way, as we’ll show in Section 7.2
A digital circuit that contains flip-flops is called a sequential circuit
because its output at any time depends not only on its current input, but also on
the past sequence of inputs that have been applied to it In other words, a
sequen-tial circuit has memory of past events.
1.4 Electronic Aspects of Digital Design
Digital circuits are not exactly a binary version of alphabet soup—with all due
respect to Figure 1-1, they don’t have little 0s and 1s floating around in them As
we’ll see in Chapter 3, digital circuits deal with analog voltages and currents,
and are built with analog components The “digital abstraction” allows analog
behavior to be ignored in most cases, so circuits can be modeled as if they really
did process 0s and 1s
1
1 0
1 1
0 1
0
1 1
0
1 1
1
1 1
flip-flop state
sequential circuit
memory
Trang 8One important aspect of the digital abstraction is to associate a range of
analog values with each logic value (0 or 1) As shown in Figure 1-2, a typicalgate is not guaranteed to have a precise voltage level for a logic 0 output Rather,
it may produce a voltage somewhere in a range that is a subset of the range
guaranteed to be recognized as a 0 by other gate inputs The difference between
the range boundaries is called noise margin—in a real circuit, a gate’s output can
be corrupted by this much noise and still be correctly interpreted at the inputs ofother gates
Behavior for logic 1 outputs is similar Note in the figure that there is an
“invalid” region between the input ranges for logic 0 and logic 1 Although anygiven digital device operating at a particular voltage and temperature will have afairly well defined boundary (or threshold) between the two ranges, differentdevices may have different boundaries Still, all properly operating devices have
their boundary somewhere in the “invalid” range Therefore, any signal that is
within the defined ranges for 0 and 1 will be interpreted identically by differentdevices This characteristic is essential for reproducibility of results
It is the job of an electronic circuit designer to ensure that logic gates
produce and recognize logic signals that are within the appropriate ranges This
is an analog circuit-design problem; we touch upon some aspects of this inChapter 3 It is not possible to design a circuit that has the desired behaviorunder every possible condition of power-supply voltage, temperature, loading,and other factors Instead, the electronic circuit designer or device manufacturer
provides specifications that define the conditions under which correct behavior
is guaranteed
As a digital designer, then, you need not delve into the detailed analog
behavior of a digital device to ensure its correct operation Rather, you need onlyexamine enough about the device’s operating environment to determine that it isoperating within its published specifications Granted, some analog knowledge
is needed to perform this examination, but not nearly what you’d need to design
a digital device starting from scratch In Chapter 3, we’ll give you just what youneed
logic 0
Outputs Inputs
Noise Margin Voltage
Trang 91.5 Software Aspects of Digital Design
Digital design need not involve any software tools For example, Figure 1-3
shows the primary tool of the “old school” of digital design—a plastic template
for drawing logic symbols in schematic diagrams by hand (the designer’s name
was engraved into the plastic with a soldering iron)
Today, however, software tools are an essential part of digital design
Indeed, the availability and practicality of hardware description languages
(HDLs) and accompanying circuit simulation and synthesis tools have changed
the entire landscape of digital design over the past several years We’ll make
extensive use of HDLs throughout this book
In computer-aided design (CAD) various software tools improve the
designer’s productivity and help to improve the correctness and quality of
designs In a competitive world, the use of software tools is mandatory to obtain
high-quality results on aggressive schedules Important examples of software
tools for digital design are listed below:
• Schematic entry This is the digital designer’s equivalent of a word
proces-sor It allows schematic diagrams to be drawn “on-line,” instead of with
paper and pencil The more advanced schematic-entry programs also
check for common, easy-to-spot errors, such as shorted outputs, signals
that don’t go anywhere, and so on Such programs are discussed in greater
detail in Section 12.1
• HDLs Hardware description languages, originally developed for circuit
modeling, are now being used more and more for hardware design They
can be used to design anything from individual function modules to large,
multi-chip digital systems We’ll introduce two HDLs, ABEL and VHDL,
at the end of Chapter 4, and we’ll provide examples in both languages in
the chapters that follow
• HDL compilers, simulators, and synthesis tools A typical HDL software
package contains several components In a typical environment, the
designer writes a text-based “program,” and the HDL compiler analyzes
F i g u r e 1 - 3
A logic-design template.
Quarter-size logic symbols, copyright 1976 by Micro Systems Engineering
computer-aided design (CAD)
Trang 10“simulator” to verify the behavior of the design.
• Simulators The design cycle for a customized, single-chip digital
integrat-ed circuit is long and expensive Once the first chip is built, it’s verydifficult, often impossible, to debug it by probing internal connections(they are really tiny), or to change the gates and interconnections Usually,changes must be made in the original design database and a new chip must
be manufactured to incorporate the required changes Since this processcan take months to complete, chip designers are highly motivated to “get
it right” (or almost right) on the first try Simulators help designers predictthe electrical and functional behavior of a chip without actually building it,allowing most if not all bugs to be found before the chip is fabricated
• Simulators are also used in the design of “programmable logic devices,”introduced later, and in the overall design of systems that incorporate manyindividual components They are somewhat less critical in this casebecause it’s easier for the designer to make changes in components andinterconnections on a printed-circuit board However, even a little bit ofsimulation can save time by catching simple but stupid mistakes
• Test benches Digital designers have learned how to formalize circuit
sim-ulation and testing into software environments called “test benches.” Theidea is to build a set of programs around a design to automatically exerciseits functions and check both its functional and its timing behavior This isespecially useful when small design changes are made—the test bench can
be run to ensure that bug fixes or “improvements” in one area do not breaksomething else Test-bench programs may be written in the same HDL asthe design itself, in C or C++, or in combination of languages includingscripting languages like PERL
• Timing analyzers and verifiers The time dimension is very important in
digital design All digital circuits take time to produce a new output value
in response to an input change, and much of a designer’s effort is spentensuring that such output changes occur quickly enough (or, in some cases,not too quickly) Specialized programs can automate the tedious task ofdrawing timing diagrams and specifying and verifying the timing relation-ships between different signals in a complex system
• Word processors Let’s not forget the lowly text editor and word processor.
These tools are obviously useful for creating the source code for based designs, but they have an important use in every design—to createdocumentation!
Trang 11In addition to using the tools above, designers may sometimes write
spe-cialized programs in high-level languages like C or C++, or scripts in languages
like PERL, to solve particular design problems For example, Section 11.1 gives
a few examples of C programs that generate the “truth tables” for complex
combinational logic functions
Although CAD tools are important, they don’t make or break a digital
designer To take an analogy from another field, you couldn’t consider yourself
to be a great writer just because you’re a fast typist or very handy with a word
processor During your study of digital design, be sure to learn and use all the
field-The most widely held view in industry trends says that as chip technology advances, more and more design will be done at the chip level, rather than the board level Therefore, the ability to perform complete and accurate simulation will become increasingly important to the typical digital designer.
However, another view is possible If we extrapolate trends in PLD and FPGA capabilities, in the next decade we will witness the emergence of devices that include not only gates and flip-flops as building blocks, but also higher-level functions such
as processors, memories, and input/output controllers At this point, most digital designers will use complex on-chip components and interconnections whose basic functions have already been tested by the device manufacturer.
In this future view, it is still possible to misapply high-level programmable functions, but it is also possible to fix mistakes simply by changing a program; detailed simulation of a design before simply “trying it out” could be a waste of time Another, compatible view is that the PLD or FPGA is merely a full-speed simulator for the program, and this full-speed simulator is what gets shipped in the product! Does this extreme view have any validity? To guess the answer, ask yourself the following question How many software programmers do you know who debug
a new program by “simulating” its operation rather than just trying it out?
In any case, modern digital systems are much too complex for a designer to have any chance of testing every possible input condition, with or without simula- tion As in software, correct operation of digital systems is best accomplished through practices that ensure that the systems are “correct by design.” It is a goal of this text to encourage such practices.
Trang 121.6 Integrated Circuits
A collection of one or more gates fabricated on a single silicon chip is called an
integrated circuit (IC) Large ICs with tens of millions of transistors may be half
an inch or more on a side, while small ICs may be less than one-tenth of an inch
on a side
Regardless of its size, an IC is initially part of a much larger, circular wafer,
up to ten inches in diameter, containing dozens to hundreds of replicas of thesame IC All of the IC chips on the wafer are fabricated at the same time, likepizzas that are eventually sold by the slice, except in this case, each piece (IC
chip) is called a die After the wafer is fabricated, the dice are tested in place on
the wafer and defective ones are marked Then the wafer is sliced up to producethe individual dice, and the marked ones are discarded (Compare with the pizza-maker who sells all the pieces, even the ones without enough pepperoni!) Eachunmarked die is mounted in a package, its pads are connected to the packagepins, and the packaged IC is subjected to a final test and is shipped to a customer.Some people use the term “IC” to refer to a silicon die Some use “chip” torefer to the same thing Still others use “IC” or “chip” to refer to the combination
of a silicon die and its package Digital designers tend to use the two terms changeably, and they really don’t care what they’re talking about They don’trequire a precise definition, since they’re only looking at the functional and elec-
inter-trical behavior of these things In the balance of this text, we’ll use the term IC to
refer to a packaged die
integrated circuit (IC)
wafer
die
A DICEY
DECISION
A reader of the second edition wrote to me to collect a $5 reward for pointing out my
“glaring” misuse of “dice” as the plural of “die.” According to the dictionary, she
said, the plural form of “die” is “dice” only when describing those little cubes with
dots on each side; otherwise it’s “dies,” and she produced the references to prove it
Being stubborn, I asked my friends at the Microprocessor Report about this
issue According to the editor, There is, indeed, much dispute over this term We actually stopped using
the term “dice” in Microprocessor Report more than four years ago I
actually prefer the plural “die,” … but perhaps it is best to avoid using the plural whenever possible.
So there you have it, even the experts don’t agree with the dictionary! Rather than cop out, I boldly chose to use “dice” anyway, by rolling the dice.
IC
Trang 13In the early days of integrated circuits, ICs were classified by size—small,
medium, or large—according to how many gates they contained The simplest
type of commercially available ICs are still called small-scale integration (SSI),
and contain the equivalent of 1 to 20 gates SSI ICs typically contain a handful of
gates or flip-flops, the basic building blocks of digital design
The SSI ICs that you’re likely to encounter in an educational lab come in a
14-pin dual in-line-pin (DIP) package As shown in Figure 1-4(a), the spacing
between pins in a column is 0.1 inch and the spacing between columns is 0.3
inch Larger DIP packages accommodate functions with more pins, as shown in
(b) and (c) A pin diagram shows the assignment of device signals to package
pins, or pinout Figure 1-5 shows the pin diagrams for a few common SSI ICs.
Such diagrams are used only for mechanical reference, when a designer needs to
determine the pin numbers for a particular IC In the schematic diagram for a
small-scale integration (SSI)
dual in-line-pin (DIP) package
pin diagram pinout
VCC
7400
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7402
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7404
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7411
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7420
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7421
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7430
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7432
1 2 3 4 5 6 7
14 13 12 11 10 9 8 GND
VCC
7408
F i g u r e 1 - 5 Pin diagrams for a few 7400-series SSI ICs.
Trang 14larger-The next larger commercially available ICs are called medium-scale
integration (MSI), and contain the equivalent of about 20 to 200 gates An MSI
IC typically contains a functional building block, such as a decoder, register, orcounter In Chapters 5 and 8, we’ll place a strong emphasis on these buildingblocks Even though the use of discrete MSI ICs is declining, the equivalentbuilding blocks are used extensively in the design of larger ICs
Large-scale integration (LSI) ICs are bigger still, containing the equivalent
of 200 to 200,000 gates or more LSI parts include small memories, processors, programmable logic devices, and customized devices
micro-TINY-SCALE
INTEGRATION
In the coming years, perhaps the most popular remaining use of SSI and MSI, especially in DIP packages, will be in educational labs These devices will afford students the opportunity to “get their hands” dirty by “breadboarding” and wiring up simple circuits in the same way that their professors did years ago.
However, much to my surprise and delight, a segment of the IC industry has
actually gone downscale from SSI in the past few years The idea has been to sell
individual logic gates in very small packages These devices handle simple functions that are sometimes needed to match larger-scale components to a particular design,
or in some cases they are used to work around bugs in the larger-scale components
or their interfaces.
An example of such an IC is Motorola’s 74VHC1G00 This chip is a single 2-input NAND gate housed in a 5-pin package (power, ground, two inputs, and one output) The entire package, including pins, measures only 0.08 inches on a side, and
is only 0.04 inches high! Now that’s what I would call “tiny-scale integration”!
STANDARD
LOGIC
FUNCTIONS
Many standard “high-level” functions appear over and over as building blocks
in digital design Historically, these functions were first integrated in MSI cuits Subsequently, they have appeared as components in the “macro” librariesfor ASIC design, as “standard cells” in VLSI design, as “canned” functions inPLD programming languages, and as library functions in hardware-descriptionlanguages such as VHDL
cir-Standard logic functions are introduced in Chapters 5 and 8 as 74-seriesMSI parts, as well as in HDL form The discussion and examples in these chap-ters provide a basis for understanding and using these functions in any form
medium-scale
integration (MSI)
large-scale integration
(LSI)
Trang 15The dividing line between LSI and very large-scale integration (VLSI) is
fuzzy, and tends to be stated in terms of transistor count rather than gate count
Any IC with over 1,000,000 transistors is definitely VLSI, and that includes
most microprocessors and memories nowadays, as well as larger programmable
logic devices and customized devices In 1999, the VLSI ICs as large as 50
million transistors were being designed
1.7 Programmable Logic Devices
There are a wide variety of ICs that can have their logic function “programmed”
into them after they are manufactured Most of these devices use technology that
also allows the function to be reprogrammed, which means that if you find a bug
in your design, you may be able to fix it without physically replacing or rewiring
the device In this book, we’ll frequently refer to the design opportunities and
methods for such devices
Historically, programmable logic arrays (PLAs) were the first
program-mable logic devices PLAs contained a two-level structure of AND and OR gates
with user-programmable connections Using this structure, a designer could
accommodate any logic function up to a certain level of complexity using the
well-known theory of logic synthesis and minimization that we’ll present in
Chapter 4
PLA structure was enhanced and PLA costs were reduced with the
intro-duction of programmable array logic (PAL) devices Today, such devices are
generically called programmable logic devices (PLDs), and are the “MSI” of the
programmable logic industry We’ll have a lot to say about PLD architecture and
technology in Sections 5.3 and 8.3
The ever-increasing capacity of integrated circuits created an opportunity
for IC manufacturers to design larger PLDs for larger digital-design
applica-tions However, for technical reasons that we’ll discuss in \secref{CPLDs}, the
basic two-level AND-OR structure of PLDs could not be scaled to larger sizes
Instead, IC manufacturers devised complex PLD (CPLD) architectures to
achieve the required scale A typical CPLD is merely a collection of multiple
PLDs and an interconnection structure, all on the same chip In addition to the
individual PLDs, the on-chip interconnection structure is also programmable,
providing a rich variety of design possibilities CPLDs can be scaled to larger
sizes by increasing the number of individual PLDs and the richness of the
inter-connection structure on the CPLD chip
At about the same time that CPLDs were being invented, other IC
manu-facturers took a different approach to scaling the size of programmable logic
chips Compared to a CPLD, a field-programmable gate arrays (FPGA) contains
a much larger number of smaller individual logic blocks, and provides a large,
distributed interconnection structure that dominates the entire chip Figure 1-6
illustrates the difference between the two chip-design approaches
very large-scale integration (VLSI)
programmable logic array (PLA)
programmable array logic (PAL) device programmable logic device (PLD)
complex PLD (CPLD)
field-programmable gate array (FPGA)
Trang 16argu-in which products can be moved from design concept to prototype and tion in a very period of time short time.
produc-Also important in achieving short “time-to-market” for all kinds of based products is the use of HDLs in their design Languages like ABEL andVHDL, and their accompanying software tools, allow a design to be compiled,synthesized, and downloaded into a PLD, CPLD, or FPGA literally in minutes.The power of highly structured, hierarchical languages like VHDL is especiallyimportant in helping designers utilize the hundreds of thousands or millions ofgates that are provided in the largest CPLDs and FPGAs
PLD-1.8 Application-Specific ICs
Perhaps the most interesting developments in IC technology for the averagedigital designer are not the ever-increasing chip sizes, but the ever-increasingopportunities to “design your own chip.” Chips designed for a particular, limited
product or application are called semicustom ICs or application-specific ICs
(ASICs) ASICs generally reduce the total component and manufacturing cost of
a product by reducing chip count, physical size, and power consumption, andthey often provide higher performance
The nonrecurring engineering (NRE) cost for designing an ASIC can
exceed the cost of a discrete design by $5,000 to $250,000 or more NRE chargesare paid to the IC manufacturer and others who are responsible for designing the
Programmable Interconnect
F i g u r e 1 - 6 Large programmable-logic-device scaling approaches: (a) CPLD; (b) FPGA.
Trang 17internal structure of the chip, creating tooling such as the metal masks for
manu-facturing the chips, developing tests for the manufactured chips, and actually
making the first few sample chips
The NRE cost for a typical, medium-complexity ASIC with about 100,000
gates is $30–$50,000 An ASIC design normally makes sense only when the
NRE cost can be offset by the per-unit savings over the expected sales volume of
the product
The NRE cost to design a custom LSI chip—a chip whose functions,
inter-nal architecture, and detailed transistor-level design is tailored for a specific
customer—is very high, $250,000 or more Thus, full custom LSI design is done
only for chips that have general commercial application or that will enjoy very
high sales volume in a specific application (e.g., a digital watch chip, a network
interface, or a bus-interface circuit for a PC)
To reduce NRE charges, IC manufacturers have developed libraries of
standard cells including commonly used MSI functions such as decoders,
registers, and counters, and commonly used LSI functions such as memories,
programmable logic arrays, and microprocessors In a standard-cell design, the
logic designer interconnects functions in much the same way as in a multichip
MSI/LSI design Custom cells are created (at added cost, of course) only if
abso-lutely necessary All of the cells are then laid out on the chip, optimizing the
layout to reduce propagation delays and minimize the size of the chip
Minimiz-ing the chip size reduces the per-unit cost of the chip, since it increases the
number of chips that can be fabricated on a single wafer The NRE cost for a
standard-cell design is typically on the order of $150,000
Well, $150,000 is still a lot of money for most folks, so IC manufacturers
have gone one step further to bring ASIC design capability to the masses A gate
array is an IC whose internal structure is an array of gates whose
interconnec-tions are initially unspecified The logic designer specifies the gate types and
interconnections Even though the chip design is ultimately specified at this very
low level, the designer typically works with “macrocells,” the same high-level
functions used in multichip MSI/LSI and standard-cell designs; software
expands the high-level design into a low-level one
The main difference between standard-cell and gate-array design is that the
macrocells and the chip layout of a gate array are not as highly optimized as
those in a standard-cell design, so the chip may be 25% or more larger, and
therefore may cost more Also, there is no opportunity to create custom cells in
the gate-array approach On the other hand, a gate-array design can be
complet-ed faster and at lower NRE cost, ranging from about $5000 (what you’re told
initially) to $75,000 (what you find you’ve spent when you’re all done)
The basic digital design methods that you’ll study throughout this book
apply very well to the functional design of ASICs However, there are additional
opportunities, constraints, and steps in ASIC design, which usually depend on
the particular ASIC vendor and design environment
custom LSI
standard cells standard-cell design
gate array
Trang 18An IC is normally mounted on a printed-circuit board (PCB) [or printed-wiring
board (PWB)] that connects it to other ICs in a system The multilayer PCBs
used in typical digital systems have copper wiring etched on multiple, thin layers
of fiberglass that are laminated into a single board about 1/16 inch thick
Individual wire connections, or PCB traces are usually quite narrow, 10 to
25 mils in typical PCBs (A mil is one-thousandth of an inch.) In fine-line PCB
technology, the traces are extremely narrow, as little as 4 mils wide with 4-milspacing between adjacent traces Thus, up to 125 connections may be routed in aone-inch-wide band on a single layer of the PCB If higher connection density isneeded, then more layers are used
Most of the components in modern PCBs use surface-mount technology
(SMT) Instead of having the long pins of DIP packages that poke through the
board and are soldered to the underside, the leads of SMT IC packages are bent
to make flat contact with the top surface of the PCB Before such componentsare mounted on the PCB, a special “solder paste” is applied to contact pads onthe PCB using a stencil whose hole pattern matches the contact pads to besoldered Then the SMT components are placed (by hand or by machine) on thepads, where they are held in place by the solder paste (or in some cases, by glue).Finally, the entire assembly is passed through an oven to melt the solder paste,which then solidifies when cooled
Surface-mount component technology, coupled with fine-line PCB nology, allows extremely dense packing of integrated circuits and othercomponents on a PCB This dense packing does more than save space For veryhigh-speed circuits, dense packing goes a long way toward minimizing adverseanalog phenomena, including transmission-line effects and speed-of-lightlimitations
tech-To satisfy the most stringent requirements for speed and density, multichip
modules (MCMs) have been developed In this technology, IC dice are not
mounted in individual plastic or ceramic packages Instead, the IC dice for ahigh-speed subsystem (say, a processor and its cache memory) are bondeddirectly to a substrate that contains the required interconnections on multiplelayers The MCM is hermetically sealed and has its own external pins for power,ground, and just those signals that are required by the system that contains it
1.10 Digital-Design Levels
Digital design can be carried out at several different levels of representation andabstraction Although you may learn and practice design at a particular level,from time to time you’ll need to go up or down a level or two to get the job done.Also, the industry itself and most designers have been steadily moving to higherlevels of abstraction as circuit density and functionality have increased
Trang 19The lowest level of digital design is device physics and IC manufacturing
processes This is the level that is primarily responsible for the breathtaking
advances in IC speed and density that have occurred over the past decades The
effects of these advances are summarized in Moore’s Law, first stated by Intel
founder Gordon Moore in 1965: that the number of transistors per square inch in
an IC doubles every year In recent years, the rate of advance has slowed down to
doubling about every 18 months, but it is important to note that with each
dou-bling of density has also come a doudou-bling of speed
This book does not reach down to the level of device physics and IC
processes, but you need to recognize the importance of that level Being aware of
likely technology advances and other changes is important in system and
product planning For example, decreases in chip geometries have recently
forced a move to lower logic-power-supply voltages, causing major changes in
the way designers plan and specify modular systems and upgrades
In this book, we jump into digital design at the transistor level and go all
the way up to the level of logic design using HDLs We stop short of the next
level, which includes computer design and overall system design The “center”
of our discussion is at the level of functional building blocks
To get a preview of the levels of design that we’ll cover, consider a simple
design example Suppose you are to build a “multiplexer” with two data input
bits, A and B, a control input bit S, and an output bit Z Depending on the value
of S, 0 or 1, the circuit is to transfer the value of either A or B to the output Z This
idea is illustrated in the “switch model” of Figure 1-7 Let us consider the design
of this function at several different levels
Although logic design is usually carried out at higher level, for some
func-tions it is advantageous to optimize them by designing at the transistor level The
multiplexer is such a function Figure 1-8 shows how the multiplexer can be
designed in “CMOS” technology using specialized transistor circuit structures
Trang 20In the traditional study of logic design, we would use a “truth table” todescribe the multiplexer’s logic function A truth table list all possible combina-tions of input values and the corresponding output values for the function Sincethe multiplexer has three inputs, it has 23 or 8 possible input combinations, asshown in the truth table in Table 1-1.
Once we have a truth table, traditional logic design methods, described inSection 4.3, use Boolean algebra and well understood minimization algorithms
to derive an “optimal” two-level AND-OR equation from the truth table For themultiplexer truth table, we would derive the following equation:
This equation is read “Z equals not S and A or S and B.” Going one step further,
we can convert the equation into a corresponding set of logic gates that performthe specified logic function, as shown in Figure 1-9 This circuit requires 14transistors if we use standard CMOS technology for the four gates shown
A multiplexer is a very commonly used function, and most digital logictechnologies provide predefined multiplexer building blocks For example, the74x157 is an MSI chip that performs multiplexing on two 4-bit inputs simulta-neously Figure 1-10 is a logic diagram that shows how we can hook up just onebit of this 4-bit building block to solve the problem at hand The numbers incolor are pin numbers of a 16-pin DIP package containing the device
Trang 21We can also realize the multiplexer function as part of a programmable
logic device Languages like ABEL allow us to specify outputs using Boolean
equations similar to the one on the previous page, but it’s usually more
conve-nient to use “higher-level” language elements For example, Table 1-2 is an
ABEL program for the multiplexer function The first three lines define the
name of the program module and specify the type of PLD in which the function
will be realized The next two lines specify the device pin numbers for inputs and
output The “WHEN” statement specifies the actual logic function in a way that’s
very easy to understand, even though we haven’t covered ABEL yet
An even higher level language, VHDL, can be used to specify the
multi-plexer function in a way that is very flexible and hierarchical Table 1-3 is an
example VHDL program for the multiplexer The first two lines specify a
standard library and set of definitions to use in the design The next four lines
specify only the inputs and outputs of the function, and purposely hide any
details about the way the function is realized internally The “architecture”
section of the program specifies the function’s behavior VHDL syntax takes a
little getting used to, but the single “when” statement says basically the same
thing that the ABEL version did A VHDL “synthesis tool” can start with this
G
2
4 1Y
7 2Y
9 3Y
12 4Y
3 5 6 11 10 14 13
S 1 15
Trang 22we won’t explore such capabilities in this book) Thus, we could come full circle
by writing a VHDL program that specifies a transistor-level realization of themultiplexer equivalent to Figure 1-8
1.11 The Name of the Game
Given the functional and performance requirements for a digital system, the
name of the game in practical digital design is to minimize cost For board-level
designs—systems that are packaged on a single PCB—this usually means
min-imizing the number of IC packages If too many ICs are required, they won’t allfit on the PCB “Well, just use a bigger PCB,” you say Unfortunately, PCB sizesare usually constrained by factors such as pre-existing standards (e.g., add-in
T a b l e 1 - 3
VHDL program for the multiplexer.
library IEEE;
use IEEE.std_logic_1164.all;
entity Vchap1mux is port ( A, B, S: in STD_LOGIC;
architecture Vchap1mux_gate_arch of Vchap1mux is signal SN, ASN, SB: STD_LOGIC;
begin U1: INV (S, SN);
U2: AND2 (A, SN, ASN);
U3: AND2 (S, B, SB);
U4: OR2 (ASN, SB, Z);
end Vchap1mux_gate_arch;
board-level design
Trang 23boards for PCs), packaging constraints (e.g., it has to fit in a toaster), or edicts
from above (e.g., in order to get the project approved three months ago, you
fool-ishly told your manager that it would all fit on a 3 × 5 inch PCB, and now you’ve
got to deliver!) In each of these cases, the cost of using a larger PCB or multiple
PCBs may be unacceptable
Minimizing the number of ICs is usually the rule even though individual IC
costs vary For example, a typical SSI or MSI IC may cost 25 cents, while an
small PLD may cost a dollar It may be possible to perform a particular function
with three SSI and MSI ICs (75 cents) or one PLD (a dollar) In most situations,
the more expensive PLD solution is used, not because the designer owns stock in
the IC company, but because the PLD solution uses less PCB area and is also a
lot easier to change if it’s not right the first time
In ASIC design, the name of the game is a little different, but the
impor-tance of structured, functional design techniques is the same Although it’s easy
to burn hours and weeks creating custom macrocells and minimizing the total
gate count of an ASIC, only rarely is this advisable The per-unit cost reduction
achieved by having a 10% smaller chip is negligible except in high-volume
applications In applications with low to medium volume (the majority), two
other factors are more important: design time and NRE cost
A shorter design time allows a product to reach the market sooner,
increas-ing revenues over the lifetime of the product A lower NRE cost also flows right
to the “bottom line,” and in small companies may be the only way the project can
be completed before the company runs out of money (believe me, I’ve been
there!) If the product is successful, it’s always possible and profitable to
“tweak” the design later to reduce per-unit costs The need to minimize design
time and NRE cost argues in favor of a structured, as opposed to highly
opti-mized, approach to ASIC design, using standard building blocks provided in the
ASIC manufacturer’s library
The considerations in PLD, CPLD, and FPGA design are a combination of
the above The choice of a particular PLD technology and device size is usually
made fairly early in the design cycle Later, as long as the design “fits” in the
selected device, there’s no point in trying to optimize gate count or board area—
the device has already been committed However, if new functions or bug fixes
push the design beyond the capacity of the selected device, that’s when you must
work very hard to modify the design to make it fit
1.12 Going Forward
This concludes the introductory chapter As you continue reading this book,
keep in mind two things First, the ultimate goal of digital design is to build
systems that solve problems for people While this book will give you the basic
tools for design, it’s still your job to keep “the big picture” in the back of your
mind Second, cost is an important factor in every design decision; and you must
ASIC design
Trang 241.4 Research the definitions of the following acronyms: ABEL, CMOS, JPEG, MPEG, OK, PERL, VHDL (Is OK really an acronym?)
1.5 Excluding the topics in Section 1.2, list three once-analog systems that have
“gone digital” since you were born.
1.6 Draw a digital circuit consisting of a 2-input AND gate and three inverters, where
an inverter is connected to each of the AND gate’s inputs and its output For each
of the four possible combinations of inputs applied to the two primary inputs of this circuit, determine the value produced at the primary output Is there a simpler circuit that gives the same input/output behavior?
1.7 When should you use the pin diagrams of Figure 1-5 in the schematic diagram of
a circuit?
1.8 What is the relationship between “die” and “dice”?
Trang 25c h a p t e r
2
Number Systems and Codes
igital systems are built from circuits that process binary digits—0s and 1s—yet very few real-life problems are based on binarynumbers or any numbers at all Therefore, a digital systemdesigner must establish some correspondence between the bina-
ry digits processed by digital circuits and real-life numbers,events, and conditions The purpose of this chapter is to show you howfamiliar numeric quantities can be represented and manipulated in a digitalsystem, and how nonnumeric data, events, and conditions also can berepresented
The first nine sections describe binary number systems and show howaddition, subtraction, multiplication, and division are performed in thesesystems Sections 2.10–2.13 show how other things, such as decimal num-bers, text characters, mechanical positions, and arbitrary conditions, can beencoded using strings of binary digits
Section 2.14 introduces “n-cubes,” which provide a way to visualize the relationship between different bit strings The n-cubes are especially
useful in the study of error-detecting codes in Section 2.15 We conclude thechapter with an introduction to codes for transmitting and storing data onebit at a time
D
Trang 262.1 Positional Number Systems
The traditional number system that we learned in school and use every day in
business is called a positional number system In such a system, a number is resented by a string of digits where each digit position has an associated weight.
rep-The value of a number is a weighted sum of the digits, for example:
1734 = 1·1000 + 7· 100 + 3 ·10 + 4 ·1Each weight is a power of 10 corresponding to the digit’s position A decimalpoint allows negative as well as positive powers of 10 to be used:
d p–1 d p–2 · · · d1d0 d–1d–2· · ·d –n where there are p digits to the left of the point and n digits to the right of the point, called the radix point If the radix point is missing, it is assumed to be to
the right of the rightmost digit The value of the number is the sum of each digitmultiplied by the corresponding power of the radix:
Except for possible leading and trailing zeroes, the representation of anumber in a positional number system is unique (Obviously, 0185.6300 equals
185.63, and so on.) The leftmost digit in such a number is called the high-order
or most significant digit; the rightmost is the low-order or least significant digit.
As we’ll learn in Chapter 3, digital circuits have signals that are normally
in one of only two conditions—low or high, charged or discharged, off or on
The signals in these circuits are interpreted to represent binary digits (or bits) that have one of two values, 0 and 1 Thus, the binary radix is normally used to
represent numbers in a digital system The general form of a binary number is
Trang 27In a binary number, the radix point is called the binary point When dealing with
binary and other nondecimal numbers, we use a subscript to indicate the radix
of each number, unless the radix is clear from the context Examples of binary
numbers and their decimal equivalents are given below
The leftmost bit of a binary number is called the high-order or most significant
bit (MSB); the rightmost is the low-order or least significant bit (LSB).
2.2 Octal and Hexadecimal Numbers
Radix 10 is important because we use it in everyday business, and radix 2 is
important because binary numbers can be processed directly by digital circuits
Numbers in other radices are not often processed directly, but may be important
for documentation or other purposes In particular, the radices 8 and 16 provide
convenient shorthand representations for multibit numbers in a digital system
The octal number system uses radix 8, while the hexadecimal number
sys-tem uses radix 16 Table 2-1 shows the binary integers from 0 to 1111 and their
octal, decimal, and hexadecimal equivalents The octal system needs 8 digits, so
it uses digits 0–7 of the decimal system The hexadecimal system needs 16
dig-its, so it supplements decimal digits 0–9 with the letters A–F.
The octal and hexadecimal number systems are useful for representing
multibit numbers because their radices are powers of 2 Since a string of three
bits can take on eight different combinations, it follows that each 3-bit string can
be uniquely represented by one octal digit, according to the third and fourth
col-umns of Table 2-1 Likewise, a 4-bit string can be represented by one
hexadecimal digit according to the fifth and sixth columns of the table
Thus, it is very easy to convert a binary number to octal Starting at the
binary point and working left, we simply separate the bits into groups of three
and replace each group with the corresponding octal digit:
The procedure for binary to hexadecimal conversion is similar, except we use
groups of four bits:
In these examples we have freely added zeroes on the left to make the total
num-ber of bits a multiple of 3 or 4 as required
octal number system hexadecimal number system
hexadecimal digits A–F
binary to octal conversion
binary to hexadecimal conversion
Trang 28Converting in the reverse direction, from octal or hexadecimal to binary, isvery easy We simply replace each octal or hexadecimal digit with the corre-sponding 3- or 4-bit string, as shown below:
The octal number system was quite popular 25 years ago because of certainminicomputers that had their front-panel lights and switches arranged in groups
of three However, the octal number system is not used much today, because of
the preponderance of machines that process 8-bit bytes It is difficult to extract
individual byte values in multibyte quantities in the octal representation; for
octal or hexadecimal to
binary conversion
byte
Trang 29example, what are the octal values of the four 8-bit bytes in the 32-bit number
with octal representation 123456701238?
In the hexadecimal system, two digits represent an 8-bit byte, and 2n digits
represent an n-byte word; each pair of digits constitutes exactly one byte For
example, the 32-bit hexadecimal number 5678ABCD16 consists of four bytes
with values 5616, 7816, AB16, and CD16 In this context, a 4-bit hexadecimal digit
is sometimes called a nibble; a 32-bit (4-byte) number has eight nibbles
Hexa-decimal numbers are often used to describe a computer’s memory address space
For example, a computer with 16-bit addresses might be described as having
read/write memory installed at addresses 0–EFFF16, and read-only memory at
addresses F000–FFFF16 Many computer programming languages use the prefix
“0x” to denote a hexadecimal number, for example, 0xBFC0000
2.3 General Positional Number System Conversions
In general, conversion between two radices cannot be done by simple
substitu-tions; arithmetic operations are required In this section, we show how to convert
a number in any radix to radix 10 and vice versa, using radix-10 arithmetic
In Section 2.1, we indicated that the value of a number in any radix is given
by the formula
where r is the radix of the number and there are p digits to the left of the radix
point and n to the right Thus, the value of the number can be found by
convert-ing each digit of the number to its radix-10 equivalent and expandconvert-ing the
formula using radix-10 arithmetic Some examples are given below:
1CE816 = 1·163 + 12· 162 + 14 ·161 + 8· 160 = 740010
F1A316 = 15·163 + 1· 162 + 10 ·161 + 3· 160 = 6185910
436.58 = 4·82 + 3· 81 + 6 ·80 + 5 ·8–1 = 286.62510
132.34 = 1·42 + 3· 41 + 2 ·40 + 3 ·4–1 = 30.7510
WHEN I’M 64 As you grow older, you’ll find that the hexadecimal number system is useful for
more than just computers When I turned 40, I told friends that I had just turned 2816 The “16” was whispered under my breath, of course At age 50, I’ll be only 3216 People get all excited about decennial birthdays like 20, 30, 40, 50, …, but you should be able to convince your friends that the decimal system is of no fundamental significance More significant life changes occur around birthdays 2, 4, 8, 16, 32, and
64, when you add a most significant bit to your age Why do you think the Beatles
sang “When I’m sixty-four”?
nibble
0x prefix
radix-r to decimal conversion
Trang 30That is, we start with a sum of 0; beginning with the leftmost digit, we multiply
the sum by r and add the next digit to the sum, repeating until all digits have been
processed For example, we can write
F1AC16 = (((15)· 16 + 1 ·16 + 10)· 16 + 12Although this formula is not too exciting in itself, it forms the basis for a
very convenient method of converting a decimal number D to a radix r Consider what happens if we divide the formula by r Since the parenthesized part of the formula is evenly divisible by r, the quotient will be
Q = (· · ·((d p–1 )· r + d p–2 )·r + · · ·)· r + d1and the remainder will be d0 Thus, d0 can be computed as the remainder of the
long division of D by r Furthermore, the quotient Q has the same form as the original formula Therefore, successive divisions by r will yield successive dig- its of D from right to left, until all the digits of D have been derived Examples
are given below:
decimal to radix-r
conversion
Trang 31T a b l e 2 - 2 Conversion methods for common radices.
Binary Substitution 12348 = 001 010 011 1002
Hexadecimal Substitution 12348 = 001 010 011 1002 = 0010 1001 11002 = 29C16
Decimal Summation 12348 = 1 ⋅ 512 + 2 ⋅ 64 + 3 ⋅ 8 + 4 ⋅ 1 = 66810
Hexadecimal to
Binary Substitution C0DE16 = 1100 0000 1101 11102
Octal Substitution C0DE16 = 1100 0000 1101 11102 = 1 100 000 011 011 1102 = 1403368Decimal Summation C0DE16 = 12 ⋅ 4096 + 0 ⋅ 256 + 13 ⋅ 16 + 14 ⋅ 1 = 4937410
Decimal to
Binary Division 10810÷ 2 = 54 remainder 0 (LSB)
÷ 2 = 27 remainder 0 ÷ 2 = 13 remainder 1 ÷ 2 = 6 remainder 1
10810 = 11011002Octal Division 10810÷ 8 = 13 remainder 4 (least significant digit)
÷ 8 = 1 remainder 5
÷ 8 = 0 remainder 1 (most significant digit)
10810 = 1548Hexadecimal Division 10810÷ 16 = 6 remainder 12 (least significant digit)
÷ 16 = 0 remainder 6 (most significant digit)
10810 = 6C16
Trang 322.4 Addition and Subtraction of Nondecimal Numbers
Addition and subtraction of nondecimal numbers by hand uses the same nique that we learned in grammar school for decimal numbers; the only catch isthat the addition and subtraction tables are different
tech-Table 2-3 is the addition and subtraction table for binary digits To add two
binary numbers X and Y, we add together the least significant bits with an initial carry (cin) of 0, producing carry (cout) and sum (s) bits according to the table We
continue processing bits from right to left, adding the carry out of each columninto the next column’s sum
Two examples of decimal additions and the corresponding binary additionsare shown in Figure 2-1, using a colored arrow to indicate a carry of 1 The sameexamples are repeated below along with two more, with the carries shown as a
bit string C:
Binary subtraction is performed similarly, using borrows (bin and bout)
instead of carries between steps, and producing a difference bit d Two examples
of decimal subtractions and the corresponding binary subtractions are shown inFigure 2-2 As in decimal subtraction, the binary minuend values in the columnsare modified when borrows occur, as shown by the colored arrows and bits The
Y
190
+141
10111100010111110
+ 10001101
C X Y
173
+ 44
00101100010101101
+ 00101100
X + Y 331 101001011 X + Y 217 11011001
C X Y
127
+ 63
01111111001111111
+ 00111111
C X Y
170
+ 85
00000000010101010
Trang 33examples from the figure are repeated below along with two more, this time
showing the borrows as a bit string B:
A very common use of subtraction in computers is to compare two numbers For
example, if the operation X−Y produces a borrow out of the most significant bit
position, then X is less than Y; otherwise, X is greater than or equal to Y The
rela-tionship between carries and borrow in adders and subtractors will be explored
in Section 5.10
Addition and subtraction tables can be developed for octal and
hexadeci-mal digits, or any other desired radix However, few computer engineers bother
to memorize these tables If you rarely need to manipulate nondecimal numbers,
− 00101110
B X Y
210
−109
01101101011010010
− 01010101
B X Y
221
− 76
00000000011011101
+ 1
0 0 1
1 0 0
1 0 0
1 1 1
1 1 0
1 0 1
0 1 1
X
Y
X + Y
X Y
X + Y
173 + 44 217
1 0 1 +
0 0 1
1 1 0
0 0 1
1 1 1
1 1 0
0 0 0
1 0 1
229 – 46 183
–
1 0 1
0 0
1 1
0 1
1 0
0 10 1 1 10 10 0 10 10 0 1 10 0 10
1 0 1
X Y
X – Y
X Y
– 0 0
1 1
0 1 1
0 0
1 0
0 1 1
0 0
0 1 1
The borrow ripples through three columns
to reach a borrowable 1, i.e.,
100 = 011 (the modified bits) + 1 (the borrow)
After the first borrow, the new subtraction for this column is 0–1, so we must borrow again.
Must borrow 1, yielding the new subtraction 10–1 = 1
1 1
0 1 1
1
Figure 2-2
Examples of decimal and corresponding binary subtractions.
comparing numbers
Trang 34If the calculator’s battery wears out, some mental shortcuts can be used tofacilitate nondecimal arithmetic In general, each column addition (or subtrac-tion) can be done by converting the column digits to decimal, adding in decimal,and converting the result to corresponding sum and carry digits in the nondeci-mal radix (A carry is produced whenever the column sum equals or exceeds theradix.) Since the addition is done in decimal, we rely on our knowledge of thedecimal addition table; the only new thing that we need to learn is the conversionfrom decimal to nondecimal digits and vice versa The sequence of steps formentally adding two hexadecimal numbers is shown below:
2.5 Representation of Negative Numbers
So far, we have dealt only with positive numbers, but there are many ways to resent negative numbers In everyday business, we use the signed-magnitudesystem, discussed next However, most computers use one of the complementnumber systems that we introduce later
rep-2.5.1 Signed-Magnitude Representation
In the signed-magnitude system, a number consists of a magnitude and a symbol
indicating whether the magnitude is positive or negative Thus, we interpret imal numbers +98, −57, +123.5, and −13 in the usual way, and we also assumethat the sign is “+” if no sign symbol is written There are two possible represen-tations of zero, “+0” and “−0”, but both have the same value
dec-The signed-magnitude system is applied to binary numbers by using an
extra bit position to represent the sign (the sign bit) Traditionally, the most
sig-nificant bit (MSB) of a bit string is used as the sign bit (0 = plus, 1 = minus), andthe lower-order bits contain the magnitude Thus, we can write several 8-bitsigned-magnitude integers and their decimal equivalents:
C X
11C
197
0BE
096
16
1112
197
01114
096
X + Y E 1 9 F 16 14
14E
17
16+11
25
16+99
1515F
Trang 35The signed-magnitude system has an equal number of positive and
nega-tive integers An n-bit signed-magnitude integer lies within the range −(2n−1−1)
through +(2n−1−1), and there are two possible representations of zero
Now suppose that we wanted to build a digital logic circuit that adds
signed-magnitude numbers The circuit must examine the signs of the addends
to determine what to do with the magnitudes If the signs are the same, it must
add the magnitudes and give the result the same sign If the signs are different, it
must compare the magnitudes, subtract the smaller from the larger, and give the
result the sign of the larger All of these “ifs,” “adds,” “subtracts,” and
“com-pares” translate into a lot of logic-circuit complexity Adders for complement
number systems are much simpler, as we’ll show next Perhaps the one
redeem-ing feature of a signed-magnitude system is that, once we know how to build a
signed-magnitude adder, a signed-magnitude subtractor is almost trivial to
build—it need only change the sign of the subtrahend and pass it along with the
minuend to an adder
2.5.2 Complement Number Systems
While the signed-magnitude system negates a number by changing its sign, a
complement number system negates a number by taking its complement as
defined by the system Taking the complement is more difficult than changing
the sign, but two numbers in a complement number system can be added or
sub-tracted directly without the sign and magnitude checks required by the
signed-magnitude system We shall describe two complement number systems, called
the “radix complement” and the “diminished radix-complement.”
In any complement number system, we normally deal with a fixed number
of digits, say n (However, we can increase the number of digits by “sign
exten-sion” as shown in Exercise 2.23, and decrease the number by truncating
high-order digits as shown in Exercise 2.24.) We further assume that the radix is r, and
that numbers have the form
D = d n–1 d n–2 · · · d1d0
The radix point is on the right and so the number is an integer If an operation
produces a result that requires more than n digits, we throw away the extra
high-order digit(s) If a number D is complemented twice, the result is D.
2.5.3 Radix-Complement Representation
In a radix-complement system, the complement of an n-digit number is obtained
by subtracting it from r n In the decimal number system, the radix complement
is called the 10’s complement Some examples using 4-digit decimal numbers
(and subtraction from 10,000) are shown in Table 2-4
By definition, the radix complement of an n-digit number D is obtained by
subtracting it from r n If D is between 1 and r n−1, this subtraction produces
signed-magnitude adder
signed-magnitude subtractor
complement number system
radix-complement system
10’s complement
Trang 36It seems from the definition that a subtraction operation is needed to
com-pute the radix complement of D However, this subtraction can be avoided by rewriting r n as (r n−1)+1 and r n−D as ((r n−1)−D)+1 The number r n−1
has the form mm ⋅⋅ ⋅ mm, where m = r−1 and there are n m’s For example,
10,000 equals 9,999 + 1 If we define the complement of a digit d to be r−1−d,
then (r n−1)−D is obtained by complementing the digits of D Therefore, the
radix complement of a number D is obtained by complementing the individual
T a b l e 2 - 4
Examples of 10’s and 9s’ complements. Number
10’s complement
Trang 37digits of D and adding 1 For example, the 10’s complement of 1849 is 8150+1,
or 8151 You should confirm that this trick also works for the other
10’s-comple-ment examples above Table 2-5 lists the digit comple10’s-comple-ments for binary, octal,
decimal, and hexadecimal numbers
2.5.4 Two’s-Complement Representation
For binary numbers, the radix complement is called the two’s complement The
MSB of a number in this system serves as the sign bit; a number is negative if
and only if its MSB is 1 The decimal equivalent for a two’s-complement binary
number is computed the same way as for an unsigned number, except that the
weight of the MSB is −2n− 1 instead of +2n− 1 The range of representable
num-bers is −(2n− 1) through +(2n− 1−1) Some 8-bit examples are shown below:
A carry out of the MSB position occurs in one case, as shown in color above As
in all two’s-complement operations, this bit is ignored and only the low-order n
bits of the result are used
In the two’s-complement number system, zero is considered positive
because its sign bit is 0 Since two’s complement has only one representation of
zero, we end up with one extra negative number, −(2n− 1), that doesn’t have a
pos-itive counterpart
We can convert an n-bit two’s-complement number X into an m-bit one, but
some care is needed If m > n, we must append m − n copies of X’s sign bit to the
left of X (see Exercise 2.23) That is, we pad a positive number with 0s and a
negative one with 1s; this is called sign extension If m < n, we discard X’s n − m
−12710 = 10000001
01111110
+1complement bits
Trang 38sys-*2.5.5 Diminished Radix-Complement Representation
In a diminished radix-complement system, the complement of an n-digit number
D is obtained by subtracting it from r n−1 This can be accomplished by
comple-menting the individual digits of D, without adding 1 as in the radix-complement system In decimal, this is called the 9s’ complement; some examples are given
in the last column of Table 2-4 on page 32
*2.5.6 Ones’-Complement Representation
The diminished radix-complement system for binary numbers is called the ones’
complement As in two’s complement, the most significant bit is the sign, 0 if
positive and 1 if negative Thus there are two representations of zero, positivezero (00⋅ ⋅ ⋅00) and negative zero (11⋅ ⋅ ⋅11) Positive number representationsare the same for both ones’ and two’s complements However, negative numberrepresentations differ by 1 A weight of −(2n− 1− 1), rather than −2n− 1, is given
to the most significant bit when computing the decimal equivalent of a complement number The range of representable numbers is −(2n− 1− 1) through
ones’-+(2n− 1− 1) Some 8-bit numbers and their ones’ complements are shown below:
The main advantages of the ones’-complement system are its symmetryand the ease of complementation However, the adder design for ones’-complement numbers is somewhat trickier than a two’s-complement adder (seeExercise 7.67) Also, zero-detecting circuits in a ones’-complement system
* Throughout this book, optional sections are marked with an asterisk.
Trang 39Yes, the number of different systems for representing negative numbers is
exces-sive, but there’s just one more for us to cover In excess-B representation, an
m-bit string whose unsigned integer value is M (0 ≤ M < 2m) represents the
signed integer M − B, where B is called the bias of the number system.
For example, an excess−2m− 1 system represents any number X in the range
−2m− 1 through +2m− 1− 1 by the m-bit binary representation of X+2m− 1 (which
is always nonnegative and less than 2m) The range of this representation is
exactly the same as that of m-bit two’s-complement numbers In fact, the
repre-sentations of any number in the two systems are identical except for the sign bits,
which are always opposite (Note that this is true only when the bias is 2m− 1.)
The most common use of excess representations is in floating-point
num-ber systems (see References)
2.6 Two’s-Complement Addition and Subtraction
2.6.1 Addition Rules
A table of decimal numbers and their equivalents in different number systems,
Table 2-6, reveals why the two’s complement is preferred for arithmetic
opera-tions If we start with 10002 (−810) and count up, we see that each successive
two’s-complement number all the way to 01112 (+710) can be obtained by
add-ing 1 to the previous one, ignoradd-ing any carries beyond the fourth bit position
The same cannot be said of signed-magnitude and ones’-complement numbers
Because ordinary addition is just an extension of counting, two’s-complement
numbers can thus be added by ordinary binary addition, ignoring any carries
beyond the MSB The result will always be the correct sum as long as the range
of the number system is not exceeded Some examples of decimal addition and
the corresponding 4-bit two’s-complement additions confirm this:
two’s-complement addition
Trang 40“modular” representation The operation of this counter very closely mimics that
of a real up/down counter circuit, which we’ll study in Section 8.4 Starting
T a b l e 2 - 6 Decimal and 4-bit numbers.
Decimal
Two’s Complement
Ones’
Complement
Signed Magnitude
0101 1011
1100 1101 1110 1111
0110 1010
0111 1001
0100 +0
–8
+1 –1
+7 –7
+2 –2
+3 –3
+4 –4
+5 –5
+6 –6
Subtraction of positive numbers
Addition of positive numbers