|
1 Introduction: Analog Vs. Digital |
|
|
1 | (6) |
|
1.1 Differences Between Analog and Digital Systems |
|
|
1 | (1) |
|
1.2 Advantages of Digital Systems Over Analog Systems |
|
|
2 | (5) |
|
|
7 | (30) |
|
2.1 Positional Number Systems |
|
|
7 | (4) |
|
|
8 | (1) |
|
2.1.2 Decimal Number System (Base 10) |
|
|
9 | (1) |
|
2.1.3 Binary Number System (Base 2) |
|
|
9 | (1) |
|
2.1.4 Octal Number System (Base 8) |
|
|
10 | (1) |
|
2.1.5 Hexadecimal Number System (Base 16) |
|
|
10 | (1) |
|
|
11 | (10) |
|
2.2.1 Converting to Decimal |
|
|
11 | (3) |
|
2.2.2 Converting from Decimal |
|
|
14 | (3) |
|
2.2.3 Converting Between 2n Bases |
|
|
17 | (4) |
|
|
21 | (2) |
|
|
21 | (1) |
|
2.3.2 Subtraction (Borrows) |
|
|
22 | (1) |
|
2.4 Unsigned and Signed Numbers |
|
|
23 | (14) |
|
|
23 | (1) |
|
|
24 | (13) |
|
3 Digital Circuitry And Interfacing |
|
|
37 | (44) |
|
|
37 | (4) |
|
3.1.1 Describing the Operation of a Logic Circuit |
|
|
37 | (2) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
41 | (1) |
|
|
41 | (1) |
|
|
42 | (1) |
|
|
43 | (1) |
|
3.2 Digital Circuit Operation |
|
|
44 | (12) |
|
|
44 | (1) |
|
3.2.2 Output DC Specifications |
|
|
45 | (1) |
|
3.2.3 Input DC Specifications |
|
|
46 | (1) |
|
|
47 | (1) |
|
|
48 | (3) |
|
3.2.6 Switching Characteristics |
|
|
51 | (1) |
|
|
51 | (5) |
|
|
56 | (15) |
|
3.3.1 Complementary Metal Oxide Semiconductors |
|
|
56 | (9) |
|
3.3.2 Transistor-Transistor Logic |
|
|
65 | (2) |
|
3.3.3 The 7400 Series Logic Families |
|
|
67 | (4) |
|
|
71 | (10) |
|
3.4.1 Driving Other Gates |
|
|
71 | (2) |
|
3.4.2 Driving Resistive Loads |
|
|
73 | (2) |
|
|
75 | (6) |
|
4 Combinational Logic Design |
|
|
81 | (58) |
|
|
81 | (1) |
|
|
82 | (1) |
|
|
82 | (1) |
|
|
83 | (16) |
|
4.1.4 Functionally Complete Operation Sets |
|
|
98 | (1) |
|
4.2 Combinational Logic Analysis |
|
|
99 | (4) |
|
4.2.1 Finding the Logic Expression from a Logic Diagram |
|
|
99 | (1) |
|
4.2.2 Finding the Truth Table from a Logic Diagram |
|
|
100 | (1) |
|
4.2.3 Timing Analysis of a Combinational Logic Circuit |
|
|
101 | (2) |
|
4.3 Combinational Logic Synthesis |
|
|
103 | (9) |
|
4.3.1 Canonical Sum of Products |
|
|
103 | (1) |
|
4.3.2 The Minterm List (Σ) |
|
|
104 | (2) |
|
4.3.3 Canonical Product of Sums (POS) |
|
|
106 | (2) |
|
4.3.4 The Maxterm List (II) |
|
|
108 | (2) |
|
4.3.5 Minterm and Maxterm List Equivalence |
|
|
110 | (2) |
|
|
112 | (17) |
|
4.4.1 Algebraic Minimization |
|
|
112 | (1) |
|
4.4.2 Minimization Using Karnaugh Maps |
|
|
113 | (12) |
|
|
125 | (1) |
|
|
126 | (3) |
|
4.5 Timing Hazards and Glitches |
|
|
129 | (10) |
|
|
139 | (36) |
|
5.1 History of Hardware Description Languages |
|
|
139 | (4) |
|
|
143 | (3) |
|
5.3 The Modern Digital Design Flow |
|
|
146 | (3) |
|
|
149 | (6) |
|
|
150 | (2) |
|
5.4.2 Libraries and Packages |
|
|
152 | (1) |
|
|
152 | (1) |
|
|
153 | (2) |
|
5.5 Modeling Concurrent Functionality in VHDL |
|
|
155 | (10) |
|
|
155 | (3) |
|
5.5.2 Concurrent Signal Assignments |
|
|
158 | (1) |
|
5.5.3 Concurrent Signal Assignments with Logical Operators |
|
|
159 | (1) |
|
5.5.4 Conditional Signal Assignments |
|
|
160 | (1) |
|
5.5.5 Selected Signal Assignments |
|
|
161 | (3) |
|
5.5.6 Delayed Signal Assignments |
|
|
164 | (1) |
|
5.6 Structural Design Using Components |
|
|
165 | (3) |
|
5.6.1 Component Instantiation |
|
|
166 | (2) |
|
5.7 Overview of Simulation Test Benches |
|
|
168 | (7) |
|
|
175 | (20) |
|
|
175 | (8) |
|
6.1.1 Example: One-Hot Decoder |
|
|
175 | (4) |
|
6.1.2 Example: Seven-Segment Display Decoder |
|
|
179 | (4) |
|
|
183 | (2) |
|
6.2.1 Example: One-Hot Binary Encoder |
|
|
183 | (2) |
|
|
185 | (2) |
|
|
187 | (8) |
|
7 Sequential Logic Design |
|
|
195 | (70) |
|
7.1 Sequential Logic Storage Devices |
|
|
195 | (15) |
|
7.1.1 The Cross-Coupled In verier Pair |
|
|
195 | (1) |
|
|
196 | (2) |
|
|
198 | (3) |
|
|
201 | (3) |
|
7.1.5 SR Latch with Enable |
|
|
204 | (1) |
|
|
205 | (2) |
|
|
207 | (3) |
|
7.2 Sequential Logic Timing Considerations |
|
|
210 | (2) |
|
7.3 Common Circuits Based on Sequential Storage Devices |
|
|
212 | (7) |
|
7.3.1 Toggle Flop Clock Divider |
|
|
212 | (1) |
|
|
213 | (1) |
|
|
213 | (4) |
|
|
217 | (2) |
|
7.4 Finite-State Machines |
|
|
219 | (17) |
|
7.4.1 Describing the Functionality of an FSM |
|
|
219 | (2) |
|
7.4.2 Logic Synthesis for an FSM |
|
|
221 | (7) |
|
7.4.3 FSM Design Process Overview |
|
|
228 | (1) |
|
7.4.4 FSM Design Examples |
|
|
229 | (7) |
|
|
236 | (13) |
|
7.5.1 2-Bit Binary Up Counter |
|
|
236 | (1) |
|
7.5.2 2-Bit Binary Up/Down Counter |
|
|
237 | (3) |
|
7.5.3 2-Bit Gray Code Up Counter |
|
|
240 | (2) |
|
7.5.4 2-Bit Gray Code Up/Down Counter |
|
|
242 | (2) |
|
7.5.5 3-Bit One-Hot Up Counter |
|
|
244 | (1) |
|
7.5.6 3-Bit One-Hot Up/Down Counter |
|
|
245 | (4) |
|
7.6 Finite-State Machine's Reset Condition |
|
|
249 | (1) |
|
7.7 Sequential Logic Analysis |
|
|
250 | (15) |
|
7.7.1 Finding the State Equations and Output Logic Expressions of an FSM |
|
|
250 | (1) |
|
7.7.2 Finding the State Transition Table of an FSM |
|
|
251 | (1) |
|
7.7.3 Finding the State Diagram of an FSM |
|
|
252 | (1) |
|
7.7.4 Determining the Maximum Clock Frequency of an FSM |
|
|
253 | (12) |
|
|
265 | (44) |
|
|
265 | (5) |
|
|
265 | (1) |
|
|
266 | (1) |
|
8.1.3 Sequential Signal Assignments |
|
|
267 | (2) |
|
|
269 | (1) |
|
8.2 Conditional Programming Constructs |
|
|
270 | (6) |
|
|
270 | (2) |
|
|
272 | (1) |
|
|
273 | (2) |
|
|
275 | (1) |
|
|
275 | (1) |
|
|
276 | (2) |
|
|
278 | (3) |
|
|
279 | (1) |
|
|
280 | (1) |
|
|
281 | (28) |
|
|
282 | (4) |
|
|
286 | (2) |
|
8.5.3 NUMERIC_STD_UNSIGNED |
|
|
288 | (1) |
|
|
288 | (1) |
|
8.5.5 NUMERIC_BIT_UNSIGNED |
|
|
289 | (1) |
|
|
289 | (2) |
|
|
291 | (1) |
|
8.5.8 TEXTIO and STD_LOGIC_TEXTIO |
|
|
291 | (11) |
|
8.5.9 Legacy Packages (STD_LOGIC_ARITH/UNSIGNED/SIGNED) |
|
|
302 | (7) |
|
9 Behavioral Modeling Of Sequential Logic |
|
|
309 | (32) |
|
9.1 Modeling Sequential Storage Devices in VHDL |
|
|
309 | (4) |
|
|
309 | (1) |
|
|
310 | (1) |
|
9.1.3 D-Flip-Flop with Asynchronous Reset |
|
|
310 | (1) |
|
9.1.4 D-Flip-Flop with Asynchronous Reset and Preset |
|
|
311 | (1) |
|
9.1.5 D-Flip-Flop with Synchronous Enable |
|
|
312 | (1) |
|
9.2 Modeling Finite-State Machines in VHDL |
|
|
313 | (6) |
|
9.2.1 Modeling the States with User-Defined, Enumerated Data Types |
|
|
315 | (1) |
|
9.2.2 The State Memory Process |
|
|
315 | (1) |
|
9.2.3 The Next State Logic Process |
|
|
315 | (1) |
|
9.2.4 The Output Logic Process |
|
|
316 | (2) |
|
9.2.5 Explicitly Defining State Codes with Subtypes |
|
|
318 | (1) |
|
9.3 FSM Design Examples in VHDL |
|
|
319 | (6) |
|
9.3.1 Serial Bit Sequence Detector in VHDL |
|
|
319 | (2) |
|
9.3.2 Vending Machine Controller in VHDL |
|
|
321 | (2) |
|
9.3.3 2-Bit, Binary Up/Down Counter in VHDL |
|
|
323 | (2) |
|
9.4 Modeling Counters in VHDL |
|
|
325 | (7) |
|
9.4.1 Counters in VHDL Using the Type UNSIGNED |
|
|
325 | (1) |
|
9.4.2 Counters in VHDL Using the Type INTEGER |
|
|
326 | (1) |
|
9.4.3 Counters in VHDL Using the Type STD_LOGIC_VECTOR |
|
|
327 | (2) |
|
9.4.4 Counters with Enables in VHDL |
|
|
329 | (1) |
|
9.4.5 Counters with Loads |
|
|
330 | (2) |
|
|
332 | (9) |
|
9.5.1 Modeling Registers in VHDL |
|
|
332 | (1) |
|
9.5.2 Shift Registers in VHDL |
|
|
333 | (1) |
|
9.5.3 Registers as Agents on a Data Bus |
|
|
334 | (7) |
|
|
341 | (30) |
|
10.1 Memory Architecture and Terminology |
|
|
341 | (2) |
|
|
341 | (1) |
|
10.1.2 Volatile vs. Nonvolatile Memory |
|
|
342 | (1) |
|
10.1.3 Read-Only vs. Read/Write Memory |
|
|
342 | (1) |
|
10.1.4 Random Access vs. Sequential Access |
|
|
342 | (1) |
|
10.2 Nonvolatile Memory Technology |
|
|
343 | (9) |
|
|
343 | (3) |
|
10.2.2 Mask Read-Only Memory |
|
|
346 | (1) |
|
10.2.3 Programmable Read-Only Memory |
|
|
347 | (1) |
|
10.2.4 Erasable Programmable Read-Only Memory |
|
|
348 | (2) |
|
10.2.5 Electrically Erasable Programmable Read-Only Memory |
|
|
350 | (1) |
|
|
351 | (1) |
|
10.3 Volatile Memory Technology |
|
|
352 | (10) |
|
10.3.1 Static Random Access Memory |
|
|
352 | (3) |
|
10.3.2 Dynamic Random Access Memory |
|
|
355 | (7) |
|
10.4 Modeling Memory with VHDL |
|
|
362 | (9) |
|
10.4.1 Read-Only Memory in VHDL |
|
|
362 | (2) |
|
10.4.2 Read/Write Memory in VHDL |
|
|
364 | (7) |
|
|
371 | (14) |
|
|
371 | (4) |
|
11.1.1 Programmable Logic Array |
|
|
371 | (1) |
|
11.1.2 Programmable Array Logic |
|
|
372 | (1) |
|
11.1.3 Generic Array Logic |
|
|
373 | (1) |
|
|
374 | (1) |
|
11.1.5 Complex Programmable Logic Devices |
|
|
374 | (1) |
|
11.2 Field Programmable Gate Arrays |
|
|
375 | (10) |
|
11.2.1 Configurable Logic Block (or Logic Element) |
|
|
376 | (1) |
|
|
377 | (3) |
|
11.2.3 Programmable Interconnect Points (PIPs) |
|
|
380 | (1) |
|
11.2.4 Input/Output Block |
|
|
381 | (1) |
|
11.2.5 Configuration Memory |
|
|
382 | (3) |
|
|
385 | (32) |
|
|
385 | (14) |
|
|
385 | (1) |
|
|
386 | (2) |
|
12.1.3 Ripple Carry Adder (RCA) |
|
|
388 | (2) |
|
12.1.4 Carry Look Ahead Adder (CLA) |
|
|
390 | (3) |
|
|
393 | (6) |
|
|
399 | (3) |
|
|
402 | (6) |
|
12.3.1 Unsigned Multiplication |
|
|
402 | (3) |
|
12.3.2 A Simple Circuit to Multiply by Powers of Two |
|
|
405 | (1) |
|
12.3.3 Signed Multiplication |
|
|
405 | (3) |
|
|
408 | (9) |
|
|
408 | (3) |
|
12.4.2 A Simple Circuit to Divide by Powers of Two |
|
|
411 | (1) |
|
|
412 | (5) |
|
13 Computer System Design |
|
|
417 | (46) |
|
|
417 | (5) |
|
|
418 | (1) |
|
|
418 | (1) |
|
13.1.3 Input/Output Ports |
|
|
418 | (1) |
|
13.1.4 Central Processing Unit |
|
|
419 | (1) |
|
13.1.5 A Memory Mapped System |
|
|
420 | (2) |
|
|
422 | (9) |
|
13.2.1 Opcodes and Operands |
|
|
422 | (1) |
|
|
423 | (1) |
|
13.2.3 Classes of Instructions |
|
|
424 | (7) |
|
13.3 Computer Implementation: An 8-Bit Computer Example |
|
|
431 | (26) |
|
13.3.1 Top-Level Block Diagram |
|
|
431 | (1) |
|
13.3.2 Instruction Set Design |
|
|
432 | (1) |
|
13.3.3 Memory System Implementation |
|
|
433 | (5) |
|
13.3.4 CPU Implementation |
|
|
438 | (19) |
|
13.4 Architecture Considerations |
|
|
457 | (6) |
|
13.4.1 Von Neumann Architecture |
|
|
457 | (1) |
|
13.4.2 Harvard Architecture |
|
|
457 | (6) |
Appendix A List Of Worked Examples |
|
463 | (6) |
Suggested Readings |
|
469 | (2) |
Index |
|
471 | |