Preface |
|
xv | |
Chapter 1 Number Systems and Number Representations |
|
1 | |
|
|
1 | |
|
1.1.1 Binary Number System |
|
|
4 | |
|
1.1.2 Octal Number System |
|
|
6 | |
|
1.1.3 Decimal Number System |
|
|
8 | |
|
1.2 Number Representations |
|
|
12 | |
|
|
13 | |
|
1.2.2 Diminished-Radix Complement |
|
|
15 | |
|
|
18 | |
|
|
22 | |
Chapter 2 Logic Design Fundamentals |
|
25 | |
|
|
25 | |
|
2.2 Minimization Techniques |
|
|
32 | |
|
2.2.1 Algebraic Minimization |
|
|
32 | |
|
|
33 | |
|
2.2.3 Quine-McCluskey Algorithm |
|
|
39 | |
|
|
44 | |
|
|
47 | |
|
|
53 | |
|
|
56 | |
|
|
58 | |
|
|
60 | |
|
|
62 | |
|
|
71 | |
|
|
78 | |
|
|
84 | |
Chapter 3 Introduction to Verilog HDL |
|
93 | |
|
|
94 | |
|
3.2 User-Defined Primitives |
|
|
108 | |
|
|
118 | |
|
3.3.1 Continuous Assignment |
|
|
118 | |
|
|
129 | |
|
|
129 | |
|
|
129 | |
|
3.4.3 Interstatement Delay |
|
|
133 | |
|
3.4.4 Interstatement Delay |
|
|
133 | |
|
3.4.5 Blocking Assignments |
|
|
133 | |
|
3.4.6 Nonblocking Assignments |
|
|
136 | |
|
3.4.7 Conditional Statements |
|
|
138 | |
|
|
141 | |
|
|
150 | |
|
|
154 | |
|
3.5.1 Module Instantiation |
|
|
154 | |
|
|
155 | |
|
|
179 | |
Chapter 4 Fixed-Point Addition |
|
183 | |
|
4.1 Ripple-Carry Addition |
|
|
184 | |
|
4.2 Carry Lookahead Addition |
|
|
191 | |
|
|
201 | |
|
4.3.1 Multiple-Bit Addition |
|
|
201 | |
|
4.3.2 Multiple-Operand Addition |
|
|
206 | |
|
4.4 Memory-Based Addition |
|
|
212 | |
|
4.5 Carry-Select Addition |
|
|
216 | |
|
|
227 | |
|
|
234 | |
Chapter 5 Fixed-Point Subtraction |
|
237 | |
|
5.1 Twos Complement Subtraction |
|
|
238 | |
|
5.2 Ripple-Carry Subtraction |
|
|
243 | |
|
5.3 Carry Lookahead Addition/Subtraction |
|
|
250 | |
|
5.4 Behavioral Addition/Subtraction |
|
|
267 | |
|
|
271 | |
Chapter 6 Fixed-Point Multiplication |
|
275 | |
|
6.1 Sequential Add-Shift Multiplication |
|
|
276 | |
|
6.1.1 Sequential Add-Shift Multiplication Hardware Algorithm |
|
|
278 | |
|
6.1.2 Sequential Add-Shift Multiplication — Version 1 |
|
|
282 | |
|
6.1.3 Sequential Add-Shift Multiplication — Version 2 |
|
|
285 | |
|
6.2 Booth Algorithm Multiplication |
|
|
289 | |
|
6.3 Bit-Pair Recoding Multiplication |
|
|
304 | |
|
|
318 | |
|
6.5 Table Lookup Multiplication |
|
|
329 | |
|
6.6 Memory-Based Multiplication |
|
|
339 | |
|
6.7 Multiple-Operand Multiplication |
|
|
344 | |
|
|
353 | |
Chapter 7 Fixed-Point Division |
|
359 | |
|
7.1 Sequential Shift-Add/Subtract Restoring Division |
|
|
360 | |
|
7.1.1 Restoring Division — Version 1 |
|
|
362 | |
|
7.1.2 Restoring Division — Version 2 |
|
|
368 | |
|
7.2 Sequential Shift-Add/Subtract Nonrestoring Division |
|
|
374 | |
|
|
382 | |
|
7.3.1 SRT Division Using Table Lookup |
|
|
393 | |
|
7.3.2 SRT Division Using the Case Statement |
|
|
397 | |
|
7.4 Multiplicative Division |
|
|
402 | |
|
|
408 | |
|
|
423 | |
Chapter 8 Decimal Addition |
|
427 | |
|
8.1 Addition with Sum Correction |
|
|
427 | |
|
8.2 Addition Using Multiplexers |
|
|
437 | |
|
8.3 Addition with Memory-Based Correction |
|
|
444 | |
|
8.4 Addition with Biased Augend |
|
|
454 | |
|
|
460 | |
Chapter 9 Decimal Subtraction |
|
463 | |
|
|
464 | |
|
9.2 Two-Decade Addition/Subtraction Unit for A+B and A–B |
|
|
467 | |
|
9.3 Two-Decade Addition/Subtraction Unit for A+B, A–B, and B–A |
|
|
481 | |
|
|
491 | |
Chapter 10 Decimal Multiplication |
|
493 | |
|
10.1 Binary-to-BCD Conversion |
|
|
493 | |
|
10.2 Multiplication Using Behavioral Modeling |
|
|
495 | |
|
10.3 Multiplication Using Structural Modeling |
|
|
498 | |
|
10.4 Multiplication Using Memory |
|
|
510 | |
|
10.5 Multiplication Using Table Lookup |
|
|
524 | |
|
|
528 | |
Chapter 11 Decimal Division |
|
529 | |
|
11.1 Restoring Division — Version 1 |
|
|
529 | |
|
11.2 Restoring Division — Version 2 |
|
|
538 | |
|
11.3 Division Using Table Lookup |
|
|
545 | |
|
|
550 | |
Chapter 12 Floating-Point Addition |
|
551 | |
|
12.1 Floating-Point Format |
|
|
552 | |
|
|
554 | |
|
12.3 Floating-Point Addition |
|
|
557 | |
|
12.4 Overflow and Underflow |
|
|
560 | |
|
12.5 General Floating-Point Organization |
|
|
561 | |
|
12.6 Verilog HDL Implementation |
|
|
564 | |
|
|
569 | |
Chapter 13 Floating-Point Subtraction |
|
571 | |
|
|
573 | |
|
|
581 | |
|
13.3 Verilog HDL Implementations |
|
|
584 | |
|
|
584 | |
|
13.3.2 True Subtraction — Version 1 |
|
|
589 | |
|
13.3.3 True Subtraction — Version 2 |
|
|
593 | |
|
13.3.4 True Subtraction — Version 3 |
|
|
598 | |
|
13.3.5 True Subtraction — Version 4 |
|
|
603 | |
|
|
608 | |
Chapter 14 Floating-Point Multiplication |
|
611 | |
|
|
613 | |
|
|
614 | |
|
|
616 | |
|
14.4 Verilog HDL Implementations |
|
|
618 | |
|
14.4.1 Floating-Point Multiplication — Version 1 |
|
|
618 | |
|
14.4.2 Floating-Point Multiplication — Version 2 |
|
|
624 | |
|
|
631 | |
Chapter 15 Floating-Point Division |
|
633 | |
|
|
635 | |
|
15.2 Exponent Overflow/Underflow |
|
|
638 | |
|
|
641 | |
|
|
643 | |
|
|
646 | |
Chapter 16 Additional Floating-Point Topics |
|
649 | |
|
|
649 | |
|
16.1.1 Truncation Rounding |
|
|
650 | |
|
16.1.2 Adder-Based Rounding |
|
|
651 | |
|
16.1.3 Von Neumann Rounding |
|
|
653 | |
|
|
654 | |
|
16.3 Verilog HDL Implementations |
|
|
654 | |
|
16.3.1 Adder-Based Rounding Using Memory |
|
|
655 | |
|
16.3.2 Adder-Based Rounding Using Combinational Logic |
|
|
660 | |
|
16.3.3 Adder-Based Rounding Using Behavioral Modeling |
|
|
668 | |
|
16.3.4 Combined Truncation, Adder-Based, and von Neumann Rounding |
|
|
674 | |
|
|
680 | |
Chapter 17 Additional Topics in Computer Arithmetic |
|
685 | |
|
|
686 | |
|
|
690 | |
|
17.1.2 Structural Modeling |
|
|
693 | |
|
17.2 Parity-Checked Shift Register |
|
|
717 | |
|
|
723 | |
|
17.4 Condition Codes for Addition |
|
|
738 | |
|
17.5 Logical and Algebraic Shifters |
|
|
747 | |
|
17.5.1 Behavioral Modeling |
|
|
748 | |
|
17.5.2 Structural Modeling |
|
|
753 | |
|
17.6 Arithmetic and Logic Units |
|
|
760 | |
|
17.6.1 Four-Function Arithmetic and Logic Unit |
|
|
760 | |
|
17.6.2 Sixteen-Function Arithmetic and Logic Unit |
|
|
764 | |
|
|
771 | |
|
|
775 | |
|
17.8.1 Parallel-In, Serial-Out Shift Register |
|
|
775 | |
|
17.8.2 Serial-In, Serial-Out Shift Register |
|
|
778 | |
|
17.8.3 Parallel-In, Serial-In, Serial-Out Shift Register |
|
|
782 | |
|
17.8.4 Serial-In, Parallel-Out Shift Register |
|
|
787 | |
|
|
795 | |
Appendix A Verilog HDL Designs for Select Logic Functions |
|
801 | |
|
|
801 | |
|
|
806 | |
|
|
809 | |
|
|
811 | |
|
A.5 Exclusive-OR Function |
|
|
814 | |
|
A.6 Exclusive-NOR Function |
|
|
818 | |
|
|
822 | |
|
|
825 | |
|
|
829 | |
|
|
833 | |
|
A.11 Binary-to-Gray Code Converter |
|
|
836 | |
|
|
843 | |
Appendix B Event Queue |
|
849 | |
|
B.1 Event Handling for Dataflow Assignments |
|
|
849 | |
|
B.2 Event Handling for Blocking Assignments |
|
|
854 | |
|
B.3 Event Handling for Nonblocking Assignments |
|
|
857 | |
|
B.4 Event Handling for Mixed Blocking and Nonblocking Assignments |
|
|
861 | |
Appendix C Verilog HDL Project Procedure |
|
865 | |
Appendix D Answers to Select Problems |
|
867 | |
|
Chapter 1 Number Systems and Number Representations |
|
|
867 | |
|
Chapter 2 Logic Design Fundamentals |
|
|
869 | |
|
Chapter 3 Introduction to Verilog HDL |
|
|
873 | |
|
Chapter 4 Fixed-Point Addition |
|
|
883 | |
|
Chapter 5 Fixed-Point Subtraction |
|
|
887 | |
|
Chapter 6 Fixed-Point Multiplication |
|
|
891 | |
|
Chapter 7 Fixed-Point Division |
|
|
897 | |
|
Chapter 8 Decimal Addition |
|
|
903 | |
|
Chapter 9 Decimal Subtraction |
|
|
907 | |
|
Chapter 10 Decimal Multiplication |
|
|
908 | |
|
Chapter 11 Decimal Division |
|
|
912 | |
|
Chapter 12 Floating-Point Addition |
|
|
913 | |
|
Chapter 13 Floating-Point Subtraction |
|
|
915 | |
|
Chapter 14 Floating-Point Multiplication |
|
|
918 | |
|
Chapter 15 Floating-Point Division |
|
|
924 | |
|
Chapter 16 Additional Floating-Point Topics |
|
|
926 | |
|
Chapter 17 Additional Topics in Computer Arithmetic |
|
|
932 | |
Index |
|
943 | |