Preface |
|
xiii | |
Acknowledgments |
|
xv | |
|
|
1 | (28) |
|
1.1 Integrated Circuit Industry |
|
|
1 | (1) |
|
|
2 | (3) |
|
1.2.1 AID and D/A Conversion |
|
|
2 | (1) |
|
1.2.2 Digital Systems and Digital Logic |
|
|
3 | (2) |
|
1.3 Boolean Algebra and Logic Design |
|
|
5 | (2) |
|
1.4 Computer-Aided Design |
|
|
7 | (1) |
|
|
8 | (4) |
|
1.6 Hardware Description Language |
|
|
12 | (2) |
|
1.7 Design Entry Based on Register-Transfer Level |
|
|
14 | (4) |
|
1.8 Functional Verification |
|
|
18 | (3) |
|
|
21 | (1) |
|
|
22 | (3) |
|
1.10.1 Dynamic Timing Analysis |
|
|
22 | (1) |
|
1.10.2 Static Timing Analysis |
|
|
23 | (2) |
|
|
25 | (1) |
|
1.11.1 Design Implementation |
|
|
25 | (1) |
|
|
26 | (1) |
|
|
27 | (2) |
|
|
28 | (1) |
|
Chapter 2 Fundamentals of Verilog |
|
|
29 | (46) |
|
2.1 Introduction to Verilog HDL |
|
|
29 | (1) |
|
|
30 | (7) |
|
2.3 Number Representation of Verilog |
|
|
37 | (2) |
|
|
39 | (4) |
|
|
39 | (1) |
|
|
40 | (2) |
|
|
42 | (1) |
|
2.4.4 Choosing Data Types for Ports |
|
|
42 | (1) |
|
2.5 Continuous Assignment |
|
|
43 | (1) |
|
|
44 | (8) |
|
|
44 | (3) |
|
|
47 | (4) |
|
2.6.3 Named Block of Procedural Construct |
|
|
51 | (1) |
|
|
52 | (2) |
|
|
54 | (12) |
|
2.8.1 2's Complement Number |
|
|
54 | (2) |
|
|
56 | (2) |
|
|
58 | (1) |
|
2.8.3.1 Arithmetic Operators |
|
|
59 | (2) |
|
|
61 | (1) |
|
2.8.3.3 Relational Operators |
|
|
61 | (1) |
|
2.8.3.4 Equality and Inequality Operators |
|
|
61 | (1) |
|
2.8.3.5 Logical Comparison Operators |
|
|
62 | (1) |
|
2.8.3.6 Logical Bit-Wise Operators |
|
|
63 | (1) |
|
|
63 | (1) |
|
2.8.3.8 Concatenation and Replication Operators |
|
|
64 | (1) |
|
2.8.3.9 Reduction Operators |
|
|
65 | (1) |
|
2.8.3.10 Conditional Operator |
|
|
65 | (1) |
|
2.9 Simulation Environment |
|
|
66 | (4) |
|
|
70 | (5) |
|
|
71 | (4) |
|
Chapter 3 Advanced Verilog Topics |
|
|
75 | (54) |
|
|
75 | (1) |
|
|
75 | (5) |
|
3.3 Case, Casez, and Casex Statements |
|
|
80 | (4) |
|
|
84 | (3) |
|
|
87 | (3) |
|
|
90 | (1) |
|
|
91 | (11) |
|
3.7.1 Load Reduction by Buffer |
|
|
93 | (1) |
|
|
94 | (4) |
|
3.7.2.1 Delay Characterization |
|
|
98 | (2) |
|
|
100 | (2) |
|
|
102 | (1) |
|
3.8 Blocking and Non-Blocking Assignments |
|
|
102 | (8) |
|
3.9 Some Useful System Tasks |
|
|
110 | (3) |
|
|
110 | (1) |
|
|
110 | (1) |
|
|
110 | (3) |
|
|
113 | (1) |
|
3.10 Advanced Verilog Simulation |
|
|
113 | (3) |
|
3.10.1 Compiler Directive |
|
|
113 | (2) |
|
|
115 | (1) |
|
3.11 Advanced Verilog Features |
|
|
116 | (1) |
|
3.11.1 ANSIC-C Style Port Declaration |
|
|
116 | (1) |
|
3.11.2 Generate Statement |
|
|
116 | (1) |
|
|
117 | (12) |
|
|
118 | (11) |
|
Chapter 4 Number Representation |
|
|
129 | (20) |
|
4.1 Precision and Resolution of a Number Representation |
|
|
129 | (1) |
|
|
130 | (14) |
|
|
130 | (1) |
|
4.2.1.1 Binary to Decimal Number Conversion |
|
|
130 | (5) |
|
4.2.1.2 Decimal to Binary Number Conversion |
|
|
135 | (2) |
|
4.2.1.3 Digital Signal Processing Applications |
|
|
137 | (2) |
|
|
139 | (1) |
|
4.2.2.1 Addition Operation |
|
|
139 | (1) |
|
4.2.2.2 Multiplication Operation |
|
|
140 | (1) |
|
4.2.2.3 Signal Processing |
|
|
141 | (3) |
|
4.3 Floating-Point Numbers |
|
|
144 | (1) |
|
|
145 | (1) |
|
|
146 | (3) |
|
|
147 | (2) |
|
Chapter 5 Combinational Circuits |
|
|
149 | (60) |
|
|
149 | (3) |
|
5.2 Behavioral Description |
|
|
152 | (6) |
|
5.3 Structural Description |
|
|
158 | (1) |
|
|
158 | (2) |
|
5.5 Basic Building Blocks of Combinational Circuits: Logic Units |
|
|
160 | (14) |
|
|
160 | (1) |
|
|
161 | (1) |
|
|
162 | (1) |
|
5.5.4 Shifter and Rotator |
|
|
163 | (1) |
|
|
164 | (3) |
|
|
167 | (1) |
|
|
168 | (4) |
|
|
172 | (2) |
|
5.6 Basic Building Blocks of Combinational Circuits: Arithmetic Units |
|
|
174 | (28) |
|
|
174 | (2) |
|
|
176 | (3) |
|
|
179 | (2) |
|
5.6.3.1 Fundamentals of Addition and Subtraction Using 2's Complement |
|
|
181 | (2) |
|
5.6.3.2 Addition and Subtraction in 2's Complement Using Verilog |
|
|
183 | (3) |
|
5.6.3.3 Multiplication in 2's Complement Using Verilog |
|
|
186 | (1) |
|
|
187 | (1) |
|
5.6.3.5 More on Overflow Detection |
|
|
188 | (6) |
|
5.6.3.6 Bit Width Design of Digital Signal Processing System |
|
|
194 | (1) |
|
5.6.4 Arithmetic Logic Unit |
|
|
195 | (1) |
|
5.6.5 Carry Look-Ahead Adder |
|
|
196 | (1) |
|
|
197 | (4) |
|
5.6.7 More on Sizing and Signing |
|
|
201 | (1) |
|
|
202 | (7) |
|
|
204 | (5) |
|
Chapter 6 Sequential Circuits |
|
|
209 | (46) |
|
6.1 Introduction to Sequential Circuits |
|
|
209 | (12) |
|
|
210 | (4) |
|
|
214 | (3) |
|
6.1.3 Setup and Hold Times of Flip-Flops |
|
|
217 | (3) |
|
6.1.4 Master-Slave Flip-Flop |
|
|
220 | (1) |
|
6.1.5 Latch vs. Flip-Flop |
|
|
221 | (1) |
|
6.2 Behavioral Description |
|
|
221 | (4) |
|
6.3 Structural Description |
|
|
225 | (1) |
|
6.4 Basic Building Blocks of Sequential Circuits |
|
|
225 | (21) |
|
|
225 | (1) |
|
|
226 | (2) |
|
|
228 | (2) |
|
|
230 | (1) |
|
|
230 | (1) |
|
|
231 | (2) |
|
|
233 | (1) |
|
6.4.5.1 Synchronous Counter |
|
|
233 | (2) |
|
6.4.5.2 Asynchronous Counter |
|
|
235 | (4) |
|
|
239 | (4) |
|
6.4.7 Problems When Interacting with Signals from Different Procedural Blocks |
|
|
243 | (3) |
|
|
246 | (9) |
|
|
247 | (8) |
|
Chapter 7 Digital System Designs |
|
|
255 | (106) |
|
7.1 System-Level Design: Moving from the Virtual to the Real |
|
|
255 | (30) |
|
|
259 | (4) |
|
7.1.2 FIFO for Buffering Data |
|
|
263 | (2) |
|
|
265 | (2) |
|
|
267 | (1) |
|
|
268 | (10) |
|
7.1.4.2 Crossbar Switches |
|
|
278 | (6) |
|
7.1.4.3 Interconnect Networks |
|
|
284 | (1) |
|
7.2 System-Level Design: Memory System |
|
|
285 | (21) |
|
7.2.1 Static Random-Access Memory |
|
|
286 | (10) |
|
7.2.1.1 More on Bidirectional Bus |
|
|
296 | (1) |
|
7.2.1.2 Asynchronous SRAM |
|
|
297 | (6) |
|
|
303 | (3) |
|
7.3 Architecture Design and Timing Diagram |
|
|
306 | (13) |
|
|
307 | (5) |
|
|
312 | (2) |
|
7.3.3 Finite Impulse Response Filter |
|
|
314 | (5) |
|
7.4 Digital Design of Huffman Coding |
|
|
319 | (17) |
|
7.4.1 Block Diagram and Interface |
|
|
324 | (1) |
|
|
325 | (3) |
|
|
328 | (8) |
|
|
336 | (25) |
|
|
337 | (24) |
|
Chapter 8 Advanced System Designs |
|
|
361 | (80) |
|
8.1 Dynamic Random-Access Memory |
|
|
361 | (2) |
|
|
363 | (1) |
|
|
363 | (28) |
|
8.3.1 Synchronization Failure |
|
|
363 | (1) |
|
|
364 | (5) |
|
8.3.3 Probability of Entering an Illegal State |
|
|
369 | (1) |
|
8.3.4 Simple Synchronizer |
|
|
370 | (6) |
|
8.3.5 Deterministic Multi-Bit Synchronizer |
|
|
376 | (4) |
|
8.3.6 Nondeterministic Multi-Bit Synchronizer Using FIFO without Flow Control |
|
|
380 | (7) |
|
8.3.7 Nondeterministic Multi-Bit Synchronizer Using FIFO with Flow Control |
|
|
387 | (4) |
|
8.4 Computer Organization |
|
|
391 | (27) |
|
|
391 | (3) |
|
8.4.2 Instructions and Data |
|
|
394 | (1) |
|
|
394 | (1) |
|
|
395 | (4) |
|
|
399 | (4) |
|
|
403 | (11) |
|
|
414 | (4) |
|
8.5 Digital Design of Component Labeling Engine |
|
|
418 | (15) |
|
8.5.1 Block Diagram and Interface |
|
|
419 | (1) |
|
|
419 | (6) |
|
|
425 | (8) |
|
|
433 | (8) |
|
|
435 | (6) |
|
|
441 | (50) |
|
|
441 | (12) |
|
|
445 | (1) |
|
|
446 | (5) |
|
9.1.1.2 I/O Control Program in Assembly |
|
|
451 | (2) |
|
|
453 | (3) |
|
|
453 | (1) |
|
|
454 | (1) |
|
|
455 | (1) |
|
9.3 Serial Transmission Techniques |
|
|
456 | (4) |
|
9.3.1 Serial Transmission Protocols |
|
|
456 | (2) |
|
9.3.2 Timing Synchronization |
|
|
458 | (2) |
|
9.4 I/O Interface of Embedded Software |
|
|
460 | (10) |
|
|
460 | (1) |
|
|
461 | (1) |
|
9.4.2.1 Simple Processor with Interrupt |
|
|
462 | (2) |
|
9.4.2.2 Keypad I/O Controller with Interrupt |
|
|
464 | (2) |
|
9.4.2.3 Program with Interrupt in Assembly for Two I/O Controls |
|
|
466 | (2) |
|
|
468 | (2) |
|
|
470 | (18) |
|
|
488 | (3) |
|
|
489 | (2) |
|
Chapter 10 Logic Synthesis with Design Compiler |
|
|
491 | (54) |
|
10.1 Design for Synthesis |
|
|
491 | (2) |
|
10.2 Design Flow Considering Synthesis |
|
|
493 | (13) |
|
|
494 | (1) |
|
|
495 | (1) |
|
10.2.3 Describing Design Environment |
|
|
496 | (3) |
|
10.2.4 Reporting and Analyzing Design |
|
|
499 | (1) |
|
|
499 | (1) |
|
|
500 | (3) |
|
|
503 | (1) |
|
|
504 | (1) |
|
|
505 | (1) |
|
10.3 Setting Design Constraints |
|
|
506 | (14) |
|
10.3.1 Optimization Constraints |
|
|
506 | (1) |
|
|
506 | (1) |
|
|
507 | (1) |
|
10.3.1.3 Clock Transition |
|
|
508 | (1) |
|
10.3.1.4 Clock Uncertainty |
|
|
509 | (1) |
|
10.3.1.5 Impacts of Clock Tree Modeling |
|
|
510 | (2) |
|
10.3.1.6 More on Impacts of Clock Tree Modeling |
|
|
512 | (1) |
|
|
513 | (2) |
|
10.3.1.8 Multiple Clock Design |
|
|
515 | (1) |
|
10.3.1.9 Propagated Clock after CTS |
|
|
516 | (1) |
|
10.3.1.10 Maximum Delay of a Combinational Circuit |
|
|
517 | (1) |
|
10.3.1.11 Timing Exceptions |
|
|
518 | (2) |
|
10.3.2 Design Rule Constraints |
|
|
520 | (1) |
|
|
520 | (16) |
|
10.4.1 Timing Optimization |
|
|
520 | (2) |
|
|
522 | (1) |
|
10.4.3 Power Optimization |
|
|
523 | (1) |
|
|
523 | (2) |
|
|
525 | (2) |
|
10.4.3.3 Dynamic Power Optimization |
|
|
527 | (2) |
|
|
529 | (1) |
|
|
530 | (1) |
|
10.4.5 Solving Setup Time Violations |
|
|
531 | (1) |
|
10.4.6 Solving Hold Time Violations |
|
|
532 | (1) |
|
10.4.7 Solving Multiple Port Nets |
|
|
532 | (2) |
|
10.4.8 Solving Large For Loops |
|
|
534 | (2) |
|
10.4.9 Solving Naming Rules |
|
|
536 | (1) |
|
10.5 Adaptive Threshold Engine |
|
|
536 | (4) |
|
|
540 | (5) |
|
|
541 | (4) |
|
Appendix A Basic Logic Gates and User Defined Primitives |
|
|
545 | (14) |
|
|
545 | (8) |
|
A.2 User Defined Primitives |
|
|
553 | (4) |
|
|
557 | (2) |
|
Appendix B Non-Synthesizable Constructs |
|
|
559 | (4) |
|
B.1 Non-Synthesizable Verilog Statements |
|
|
559 | (3) |
|
|
562 | (1) |
|
Appendix C Advanced Net Data Types |
|
|
563 | (4) |
|
|
563 | (2) |
|
|
565 | (2) |
|
Appendix D Signed Multipliers |
|
|
567 | (4) |
|
D.1 Synthesis of Signed Multipliers |
|
|
567 | (3) |
|
|
570 | (1) |
|
Appendix E Design Principles and Guidelines |
|
|
571 | (14) |
|
|
571 | (2) |
|
|
573 | (9) |
|
E.3 Other Coding and Naming Styles |
|
|
582 | (2) |
|
|
584 | (1) |
Index |
|
585 | |