1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Digital design principles and practices

678 2,9K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Digital Design Principles And Practices
Tác giả John F. Wakerly
Trường học Not Available
Chuyên ngành Digital Design
Thể loại book
Năm xuất bản 1999
Thành phố Not Available
Định dạng
Số trang 678
Dung lượng 6,67 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Digital design principles and practices

Trang 1

DO 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 2

One 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 3

Besides 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 5

the 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 7

ing 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 8

One 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 9

1.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 11

In 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 12

1.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 13

In 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 14

larger-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 15

The 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 16

argu-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 17

internal 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 18

An 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 19

The 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 20

In 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 21

We 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 22

we 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 23

boards 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 24

1.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 25

c 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 26

2.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 27

In 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 28

Converting 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 29

example, 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 30

That 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 31

T 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 32

2.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 33

examples 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 XY 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 34

If 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 35

The 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 36

It 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 nD as ((r n−1)−D)+1 The number r n−1

has the form mm ⋅⋅ ⋅ mm, where m = r1 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 37

digits 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 38

sys-*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 39

Yes, 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

Ngày đăng: 09/01/2014, 15:50

TỪ KHÓA LIÊN QUAN