|
|
1 | (20) |
|
|
2 | (4) |
|
|
4 | (1) |
|
1.1.2 Programmable Logic Devices |
|
|
5 | (1) |
|
1.1.3 Custom-Designed Chips |
|
|
5 | (1) |
|
|
6 | (2) |
|
1.3 Structure of a Computer |
|
|
8 | (1) |
|
1.4 Logic Circuit Design in This Book |
|
|
8 | (3) |
|
1.5 Digital Representation of Information |
|
|
11 | (5) |
|
|
12 | (1) |
|
1.5.2 Conversion between Decimal and Binary Systems |
|
|
13 | (1) |
|
1.5.3 ASCII Character Code |
|
|
14 | (2) |
|
1.5.4 Digital and Analog Information |
|
|
16 | (1) |
|
|
16 | (5) |
|
|
18 | (1) |
|
|
19 | (2) |
|
Chapter 2 Introduction to Logic Circuits |
|
|
21 | (100) |
|
2.1 Variables and Functions |
|
|
22 | (3) |
|
|
25 | (1) |
|
|
26 | (1) |
|
2.4 Logic Gates and Networks |
|
|
27 | (6) |
|
2.4.1 Analysis of a Logic Network |
|
|
29 | (4) |
|
|
33 | (10) |
|
|
37 | (5) |
|
2.5.2 Notation and Terminology |
|
|
42 | (1) |
|
2.5.3 Precedence of Operations |
|
|
43 | (1) |
|
2.6 Synthesis Using AND, OR, and NOT Gates |
|
|
43 | (11) |
|
2.6.1 Sum-of-Products and Product-of-Sums Forms |
|
|
48 | (6) |
|
2.7 NAND and NOR Logic Networks |
|
|
54 | (5) |
|
|
59 | (5) |
|
2.8.1 Three-Way Light Control |
|
|
59 | (1) |
|
2.8.2 Multiplexer Circuit |
|
|
60 | (3) |
|
|
63 | (1) |
|
2.9 Introduction to CAD Tools |
|
|
64 | (4) |
|
|
64 | (2) |
|
|
66 | (1) |
|
2.9.3 Functional Simulation |
|
|
67 | (1) |
|
|
67 | (1) |
|
|
67 | (1) |
|
2.9.6 Circuit Implementation |
|
|
68 | (1) |
|
2.9.7 Complete Design Flow |
|
|
68 | (1) |
|
2.10 Introduction to Verilog |
|
|
68 | (10) |
|
2.10.1 Structural Specification of Logic Circuits |
|
|
70 | (2) |
|
2.10.2 Behavioral Specification of Logic Circuits |
|
|
72 | (4) |
|
2.10.3 Hierarchical Verilog Code |
|
|
76 | (2) |
|
2.10.4 How NOT to Write Verilog Code |
|
|
78 | (1) |
|
2.11 Minimization and Karnaugh Maps |
|
|
78 | (9) |
|
2.12 Strategy for Minimization |
|
|
87 | (4) |
|
|
87 | (2) |
|
2.12.2 Minimization Procedure |
|
|
89 | (2) |
|
2.13 Minimization of Product-of-Sums Forms |
|
|
91 | (3) |
|
2.14 Incompletely Specified Functions |
|
|
94 | (2) |
|
2.15 Multiple-Output Circuits |
|
|
96 | (5) |
|
|
101 | (1) |
|
2.17 Examples of Solved Problems |
|
|
101 | (20) |
|
|
111 | (9) |
|
|
120 | (1) |
|
Chapter 3 Number Representation and Arithmetic Circuits |
|
|
121 | (68) |
|
3.1 Positional Number Representation |
|
|
122 | (3) |
|
|
122 | (1) |
|
3.1.2 Octal and Hexadecimal Representations |
|
|
123 | (2) |
|
3.2 Addition of Unsigned Numbers |
|
|
125 | (7) |
|
3.2.1 Decomposed Full-Adder |
|
|
129 | (1) |
|
|
129 | (1) |
|
|
130 | (2) |
|
|
132 | (13) |
|
|
133 | (2) |
|
3.3.2 Addition and Subtraction |
|
|
135 | (3) |
|
3.3.3 Adder and Subtractor Unit |
|
|
138 | (1) |
|
3.3.4 Radix-Complement Schemes* |
|
|
139 | (4) |
|
3.3.5 Arithmetic Overflow |
|
|
143 | (2) |
|
|
145 | (1) |
|
|
145 | (6) |
|
3.4.1 Carry-Lookahead Adder |
|
|
146 | (5) |
|
3.5 Design of Arithmetic Circuits Using CAD Tools |
|
|
151 | (16) |
|
3.5.1 Design of Arithmetic Circuits Using Schematic Capture |
|
|
151 | (1) |
|
3.5.2 Design of Arithmetic Circuits Using Verilog |
|
|
152 | (3) |
|
3.5.3 Using Vectored Signals |
|
|
155 | (1) |
|
3.5.4 Using a Generic Specification |
|
|
156 | (2) |
|
3.5.5 Nets and Variables in Verilog |
|
|
158 | (1) |
|
3.5.6 Arithmetic Assignment Statements |
|
|
159 | (4) |
|
3.5.7 Module Hierarchy in Verilog Code |
|
|
163 | (3) |
|
3.5.8 Representation of Numbers in Verilog Code |
|
|
166 | (1) |
|
|
167 | (3) |
|
3.6.1 Array Multiplier for Unsigned Numbers |
|
|
167 | (2) |
|
3.6.2 Multiplication of Signed Numbers |
|
|
169 | (1) |
|
3.7 Other Number Representations |
|
|
170 | (8) |
|
3.7.1 Fixed-Point Numbers |
|
|
170 | (2) |
|
3.7.2 Floating-Point Numbers |
|
|
172 | (2) |
|
3.7.3 Binary-Coded-Decimal Representation |
|
|
174 | (4) |
|
3.8 Examples of Solved Problems |
|
|
178 | (11) |
|
|
184 | (4) |
|
|
188 | (1) |
|
Chapter 4 Combinational-Clrcuit Building Blocks |
|
|
189 | (58) |
|
|
190 | (11) |
|
4.1.1 Synthesis of Logic Functions Using Multiplexers |
|
|
193 | (3) |
|
4.1.2 Multiplexer Synthesis Using Shannon's Expansion |
|
|
196 | (5) |
|
|
201 | (4) |
|
|
203 | (2) |
|
|
205 | (3) |
|
|
205 | (1) |
|
|
205 | (3) |
|
|
208 | (1) |
|
4.5 Arithmetic Comparison Circuits |
|
|
208 | (2) |
|
4.6 Verilog for Combinational Circuits |
|
|
210 | (22) |
|
4.6.1 The Conditional Operator |
|
|
210 | (2) |
|
4.6.2 The If-Else Statement |
|
|
212 | (3) |
|
|
215 | (6) |
|
|
221 | (2) |
|
|
223 | (5) |
|
4.6.6 The Generate Construct |
|
|
228 | (1) |
|
4.6.7 Tasks and Functions |
|
|
229 | (3) |
|
|
232 | (1) |
|
4.8 Examples of Solved Problems |
|
|
233 | (14) |
|
|
243 | (3) |
|
|
246 | (1) |
|
Chapter 5 Flip-Flops, Registers, and Counters |
|
|
247 | (84) |
|
|
249 | (2) |
|
|
251 | (2) |
|
5.2.1 Gated SR Latch with NAND Gates |
|
|
253 | (1) |
|
|
253 | (3) |
|
5.3.1 Effects of Propagation Delays |
|
|
255 | (1) |
|
5.4 Edge-Triggered D Flip-Flops |
|
|
256 | (7) |
|
5.4.1 Master-Slave D Flip-Flop |
|
|
256 | (2) |
|
5.4.2 Other Types of Edge-Triggered D Flip-Flops |
|
|
258 | (2) |
|
5.4.3 D Flip-Flops with Clear and Preset |
|
|
260 | (3) |
|
5.4.4 Flip-Flop Timing Parameters |
|
|
263 | (1) |
|
|
263 | (1) |
|
|
264 | (2) |
|
5.7 Summary of Terminology |
|
|
266 | (1) |
|
|
267 | (2) |
|
|
267 | (1) |
|
5.8.2 Parallel-Access Shift Register |
|
|
267 | (2) |
|
|
269 | (9) |
|
5.9.1 Asynchronous Counters |
|
|
269 | (3) |
|
5.9.2 Synchronous Counters |
|
|
272 | (4) |
|
5.9.3 Counters with Parallel Load |
|
|
276 | (2) |
|
5.10 Reset Synchronization |
|
|
278 | (2) |
|
5.11 Other Types of Counters |
|
|
280 | (4) |
|
|
280 | (1) |
|
|
280 | (3) |
|
|
283 | (1) |
|
5.11.4 Remarks on Counter Design |
|
|
283 | (1) |
|
5.12 Using Storage Elements with CAD Tools |
|
|
284 | (11) |
|
5.12.1 Including Storage Elements in Schematics |
|
|
284 | (1) |
|
5.12.2 Using Verilog Constructs for Storage Elements |
|
|
285 | (3) |
|
5.12.3 Blocking and Non-Blocking Assignments |
|
|
288 | (5) |
|
5.12.4 Non-Blocking Assignments for Combinational Circuits |
|
|
293 | (1) |
|
5.12.5 Flip-Flops with Clear Capability |
|
|
293 | (2) |
|
5.13 Using Verilog Constructs for Registers and Counters |
|
|
295 | (7) |
|
5.13.1 Flip-Flops and Registers with Enable Inputs |
|
|
300 | (2) |
|
5.13.2 Shift Registers with Enable Inputs |
|
|
302 | (1) |
|
|
302 | (8) |
|
|
302 | (7) |
|
5.14.2 Register Transfer Level (RTL) Code |
|
|
309 | (1) |
|
5.15 Timing Analysis of Flip-flop Circuits |
|
|
310 | (4) |
|
5.15.1 Timing Analysis with Clock Skew |
|
|
312 | (2) |
|
|
314 | (1) |
|
5.17 Examples of Solved Problems |
|
|
315 | (16) |
|
|
321 | (8) |
|
|
329 | (2) |
|
Chapter 6 Synchronous Sequential Circuits |
|
|
331 | (90) |
|
|
333 | (11) |
|
|
333 | (2) |
|
|
335 | (1) |
|
|
336 | (1) |
|
6.1.4 Choice of Flip-Flops and Derivation of Next-State and Output Expressions |
|
|
337 | (2) |
|
|
339 | (1) |
|
6.1.6 Summary of Design Steps |
|
|
340 | (4) |
|
6.2 State-Assignment Problem |
|
|
344 | (5) |
|
|
347 | (2) |
|
|
349 | (5) |
|
6.4 Design of Finite State Machines Using CAD Tools |
|
|
354 | (9) |
|
6.4.1 Verilog Code for Moore-Type FSMs |
|
|
355 | (1) |
|
6.4.2 Synthesis of Verilog Code |
|
|
356 | (2) |
|
6.4.3 Simulating and Testing the Circuit |
|
|
358 | (1) |
|
6.4.4 Alternative Styles of Verilog Code |
|
|
359 | (1) |
|
6.4.5 Summary of Design Steps When Using CAD Tools |
|
|
360 | (1) |
|
6.4.6 Specifying the State Assignment in Verilog Code |
|
|
361 | (2) |
|
6.4.7 Specification of Mealy FSMs Using Verilog |
|
|
363 | (1) |
|
|
363 | (9) |
|
6.5.1 Mealy-Type FSM for Serial Adder |
|
|
364 | (3) |
|
6.5.2 Moore-Type FSM for Serial Adder |
|
|
367 | (3) |
|
6.5.3 Verilog Code for the Serial Adder |
|
|
370 | (2) |
|
|
372 | (11) |
|
6.6.1 Partitioning Minimization Procedure |
|
|
374 | (7) |
|
6.6.2 Incompletely Specified FSMs |
|
|
381 | (2) |
|
6.7 Design of a Counter Using the Sequential Circuit Approach |
|
|
383 | (10) |
|
6.7.1 State Diagram and State Table for a Modulo-8 Counter |
|
|
383 | (1) |
|
|
384 | (1) |
|
6.7.3 Implementation Using D-Type Flip-Flops |
|
|
385 | (1) |
|
6.7.4 Implementation Using JK-Type Flip-Flops |
|
|
386 | (4) |
|
6.7.5 Example---A Different Counter |
|
|
390 | (3) |
|
6.8 FSM as an Arbiter Circuit |
|
|
393 | (4) |
|
6.9 Analysis of Synchronous Sequential Circuits |
|
|
397 | (4) |
|
6.10 Algorithmic State Machine (ASM) Charts |
|
|
401 | (4) |
|
6.11 Formal Model for Sequential Circuits |
|
|
405 | (2) |
|
|
407 | (1) |
|
6.13 Examples of Solved Problems |
|
|
407 | (14) |
|
|
416 | (4) |
|
|
420 | (1) |
|
Chapter 7 Digital System Design |
|
|
421 | (70) |
|
|
422 | (7) |
|
7.1.1 Using Tri-State Drivers to Implement a Bus |
|
|
422 | (2) |
|
7.1.2 Using Multiplexers to Implement a Bus |
|
|
424 | (2) |
|
7.1.3 Verilog Code for Specification of Bus Structures |
|
|
426 | (3) |
|
|
429 | (12) |
|
7.3 A Bit-Counting Circuit |
|
|
441 | (5) |
|
7.4 Shift-and-Add Multiplier |
|
|
446 | (9) |
|
|
455 | (11) |
|
|
466 | (4) |
|
|
470 | (8) |
|
7.8 Clock Synchronization and Timing Issues |
|
|
478 | (7) |
|
|
478 | (3) |
|
7.8.2 Flip-Flop Timing Parameters |
|
|
481 | (1) |
|
7.8.3 Asynchronous Inputs to Flip-Flops |
|
|
482 | (1) |
|
|
483 | (2) |
|
|
485 | (6) |
|
|
485 | (4) |
|
|
489 | (2) |
|
Chapter 8 Optimized Implementation of Logic Functions |
|
|
491 | (60) |
|
|
492 | (12) |
|
|
493 | (3) |
|
8.1.2 Functional Decomposition |
|
|
496 | (6) |
|
8.1.3 Multilevel NAND and NOR Circuits |
|
|
502 | (2) |
|
8.2 Analysis of Multilevel Circuits |
|
|
504 | (6) |
|
8.3 Alternative Representations of Logic Functions |
|
|
510 | (10) |
|
8.3.1 Cubical Representation |
|
|
510 | (4) |
|
8.3.2 Binary Decision Diagrams |
|
|
514 | (6) |
|
8.4 Optimization Techniques Based on Cubical Representation |
|
|
520 | (17) |
|
8.4.1 A Tabular Method for Minimization |
|
|
521 | (8) |
|
8.4.2 A Cubical Technique for Minimization |
|
|
529 | (7) |
|
8.4.3 Practical Considerations |
|
|
536 | (1) |
|
|
537 | (1) |
|
8.6 Examples of Solved Problems |
|
|
537 | (14) |
|
|
546 | (3) |
|
|
549 | (2) |
|
Chapter 9 Asynchronous Sequential Circuits |
|
|
551 | (86) |
|
9.1 Asynchronous Behavior |
|
|
552 | (4) |
|
9.2 Analysis of Asynchronous Circuits |
|
|
556 | (8) |
|
9.3 Synthesis of Asynchronous Circuits |
|
|
564 | (13) |
|
|
577 | (15) |
|
|
592 | (16) |
|
|
595 | (3) |
|
9.5.2 Exploiting Unspecified Next-State Entries |
|
|
598 | (4) |
|
9.5.3 State Assignment Using Additional State Variables |
|
|
602 | (5) |
|
9.5.4 One-Hot State Assignment |
|
|
607 | (1) |
|
|
608 | (8) |
|
|
609 | (4) |
|
|
613 | (1) |
|
9.6.3 Significance of Hazards |
|
|
614 | (2) |
|
9.7 A Complete Design Example |
|
|
616 | (5) |
|
9.7.1 The Vending-Machine Controller |
|
|
616 | (5) |
|
|
621 | (2) |
|
9.9 Examples of Solved Problems |
|
|
623 | (14) |
|
|
631 | (4) |
|
|
635 | (2) |
|
Chapter 10 Computer Aided Design Tools |
|
|
637 | (16) |
|
|
638 | (6) |
|
10.1.1 Netlist Generation |
|
|
638 | (1) |
|
|
638 | (2) |
|
10.1.3 Technology Mapping |
|
|
640 | (4) |
|
|
644 | (6) |
|
|
646 | (1) |
|
|
647 | (1) |
|
10.2.3 Static Timing Analysis |
|
|
648 | (2) |
|
|
650 | (3) |
|
|
651 | (2) |
|
Chapter 11 Testing of Logic Circuits |
|
|
653 | (32) |
|
|
654 | (1) |
|
|
654 | (1) |
|
11.1.2 Single and Multiple Faults |
|
|
655 | (1) |
|
|
655 | (1) |
|
11.2 Complexity of a Test Set |
|
|
655 | (2) |
|
|
657 | (4) |
|
11.3.1 Detection of a Specific Fault |
|
|
659 | (2) |
|
11.4 Circuits with Tree Structure |
|
|
661 | (1) |
|
|
662 | (3) |
|
11.6 Testing of Sequential Circuits |
|
|
665 | (4) |
|
11.6.1 Design for Testability |
|
|
665 | (4) |
|
|
669 | (7) |
|
11.7.1 Built-in Logic Block Observer |
|
|
673 | (2) |
|
11.7.2 Signature Analysis |
|
|
675 | (1) |
|
|
676 | (1) |
|
11.8 Printed Circuit Boards |
|
|
676 | (4) |
|
|
678 | (1) |
|
|
679 | (1) |
|
|
680 | (5) |
|
|
680 | (3) |
|
|
683 | (2) |
|
Appendix A Verilog Reference |
|
|
685 | (48) |
|
A.1 Documentation in Verilog Code |
|
|
686 | (1) |
|
|
686 | (1) |
|
A.3 Signals in Verilog Code |
|
|
686 | (1) |
|
|
687 | (1) |
|
A.5 Signal Values, Numbers, and Parameters |
|
|
687 | (1) |
|
|
688 | (1) |
|
A.6 Net and Variable Types |
|
|
688 | (2) |
|
|
688 | (1) |
|
|
689 | (1) |
|
|
690 | (1) |
|
|
690 | (2) |
|
|
692 | (2) |
|
|
694 | (2) |
|
A.10 Concurrent Statements |
|
|
696 | (2) |
|
A.10.1 Continuous Assignments |
|
|
696 | (1) |
|
|
697 | (1) |
|
A.11 Procedural Statements |
|
|
698 | (11) |
|
A.11.1 Always and Initial Blocks |
|
|
698 | (2) |
|
A.11.2 The If-Else Statement |
|
|
700 | (1) |
|
A.11.3 Statement Ordering |
|
|
701 | (1) |
|
A.11.4 The Case Statement |
|
|
702 | (1) |
|
A.11.5 Casez and Casex Statements |
|
|
703 | (1) |
|
|
704 | (4) |
|
A.11.7 Blocking versus Non-blocking Assignments for Combinational Circuits |
|
|
708 | (1) |
|
|
709 | (4) |
|
A.12.1 Subcircuit Parameters |
|
|
710 | (2) |
|
A.12.2 The Generate Capability |
|
|
712 | (1) |
|
|
713 | (3) |
|
|
716 | (9) |
|
|
717 | (1) |
|
|
717 | (1) |
|
A.14.3 Flip-Flops with Reset |
|
|
718 | (1) |
|
|
718 | (2) |
|
|
720 | (1) |
|
|
721 | (1) |
|
A.14.7 An Example of a Sequential Circuit |
|
|
722 | (1) |
|
A.14.8 Moore-Type Finite State Machines |
|
|
723 | (1) |
|
A.14.9 Mealy-Type Finite State Machines |
|
|
724 | (1) |
|
A.15 Guidelines for Writing Verilog Code |
|
|
725 | (6) |
|
|
731 | (2) |
|
|
731 | (2) |
|
Appendix B Implementation Technology |
|
|
733 | (92) |
|
|
734 | (2) |
|
|
736 | (3) |
|
|
739 | (8) |
|
B.3.1 Speed of Logic Gate Circuits |
|
|
746 | (1) |
|
B.4 Negative Logic System |
|
|
747 | (2) |
|
|
749 | (4) |
|
B.5.1 7400-Series Standard Chips |
|
|
749 | (4) |
|
B.6 Programmable Logic Devices |
|
|
753 | (16) |
|
B.6.1 Programmable Logic Array (PLA) |
|
|
754 | (3) |
|
B.6.2 Programmable Array Logic (PAL) |
|
|
757 | (2) |
|
B.6.3 Programming of PLAs and PALs |
|
|
759 | (2) |
|
B.6.4 Complex Programmable Logic Devices (CPLDs) |
|
|
761 | (3) |
|
B.6.5 Field-Programmable Gate Arrays |
|
|
764 | (5) |
|
B.7 Custom Chips, Standard Cells, and Gate Arrays |
|
|
769 | (2) |
|
|
771 | (23) |
|
B.8.1 MOSFET Fabrication and Behavior |
|
|
771 | (4) |
|
B.8.2 MOSFET On-Resistance |
|
|
775 | (1) |
|
B.8.3 Voltage Levels in Logic Gates |
|
|
776 | (2) |
|
|
778 | (1) |
|
B.8.5 Dynamic Operation of Logic Gates |
|
|
779 | (3) |
|
B.8.6 Power Dissipation in Logic Gates |
|
|
782 | (2) |
|
B.8.7 Passing 1s and 0s Through Transistor Switches |
|
|
784 | (2) |
|
|
786 | (2) |
|
B.8.9 Fan-in and Fan-out in Logic Gates |
|
|
788 | (4) |
|
|
792 | (2) |
|
B.9 Static Random Access Memory (SRAM) |
|
|
794 | (3) |
|
B.9.1 SRAM Blocks in PLDs |
|
|
797 | (1) |
|
B.10 Implementation Details for SPLDs, CPLDs, and FPGAs |
|
|
797 | (9) |
|
B.10.1 Implementation in FPGAs |
|
|
804 | (2) |
|
|
806 | (1) |
|
B.12 Examples of Solved Problems |
|
|
807 | (18) |
|
|
814 | (9) |
|
|
823 | (2) |
Answers |
|
825 | (14) |
Index |
|
839 | |