Preface to the Second Edition |
|
xv | |
Preface to the First Edition |
|
xvii | |
Acknowledgments |
|
xix | |
|
|
1 | (64) |
|
|
3 | (4) |
|
|
3 | (1) |
|
|
3 | (1) |
|
|
4 | (1) |
|
|
5 | (2) |
|
|
7 | (10) |
|
|
7 | (1) |
|
|
7 | (1) |
|
2.3 Programmable Logic Devices |
|
|
8 | (1) |
|
2.4 Field Programmable Gate Arrays |
|
|
8 | (4) |
|
2.5 FPGA Design Techniques |
|
|
12 | (1) |
|
2.6 Design Constraints using FPGAs |
|
|
12 | (1) |
|
2.7 Development Kits and Boards |
|
|
13 | (2) |
|
|
15 | (2) |
|
Chapter 3 A VHDL Primer: The Essentials |
|
|
17 | (18) |
|
|
17 | (1) |
|
3.2 Entity: Model Interface |
|
|
18 | (2) |
|
3.2.1 The Entity Definition |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
20 | (1) |
|
3.3 Architecture: Model Behavior |
|
|
20 | (1) |
|
3.3.1 Basic Definition of An Architecture |
|
|
20 | (1) |
|
3.3.2 Architecture Declaration Section |
|
|
21 | (1) |
|
3.3.3 Architecture Statement Section |
|
|
21 | (1) |
|
3.4 Process: Basic Functional Unit in VHDL |
|
|
21 | (1) |
|
3.5 Basic Variable Types and Operators |
|
|
22 | (3) |
|
|
22 | (1) |
|
|
23 | (1) |
|
|
23 | (1) |
|
|
23 | (1) |
|
3.5.5 Arithmetic Operators |
|
|
24 | (1) |
|
3.5.6 Comparison Operators |
|
|
24 | (1) |
|
3.5.7 Logical Shifting Functions |
|
|
24 | (1) |
|
|
24 | (1) |
|
|
25 | (2) |
|
|
25 | (1) |
|
|
26 | (1) |
|
|
26 | (1) |
|
|
27 | (1) |
|
|
27 | (1) |
|
|
27 | (1) |
|
|
27 | (3) |
|
|
27 | (1) |
|
|
28 | (1) |
|
|
29 | (1) |
|
|
30 | (1) |
|
|
30 | (1) |
|
|
30 | (1) |
|
|
30 | (2) |
|
|
30 | (1) |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
31 | (1) |
|
3.9.5 Integer Subtypes: Natural |
|
|
31 | (1) |
|
3.9.6 Integer Subtypes: Positive |
|
|
31 | (1) |
|
3.9.7 Data Type: Character |
|
|
32 | (1) |
|
|
32 | (1) |
|
|
32 | (1) |
|
|
32 | (3) |
|
Chapter 4 A Verilog Primer: The Essentials |
|
|
35 | (8) |
|
|
35 | (1) |
|
|
35 | (1) |
|
|
36 | (1) |
|
|
37 | (1) |
|
4.5 Defining the Module Behavior |
|
|
38 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
41 | (2) |
|
Chapter 5 Design Automation of FPGAs |
|
|
43 | (14) |
|
|
43 | (1) |
|
|
43 | (5) |
|
|
43 | (1) |
|
|
44 | (1) |
|
|
44 | (1) |
|
5.2.4 Simple Test Bench: Instantiating Components |
|
|
45 | (1) |
|
|
46 | (2) |
|
|
48 | (1) |
|
|
48 | (2) |
|
|
48 | (1) |
|
|
49 | (1) |
|
5.3.3 Std_logic Libraries |
|
|
49 | (1) |
|
5.4 std_logic Type Definition |
|
|
50 | (1) |
|
|
51 | (1) |
|
5.5.1 Design Flow for Synthesis |
|
|
51 | (1) |
|
|
52 | (1) |
|
|
52 | (1) |
|
|
53 | (1) |
|
|
53 | (1) |
|
|
53 | (1) |
|
5.8.2 Simulated Annealing |
|
|
54 | (1) |
|
|
54 | (1) |
|
|
54 | (2) |
|
|
55 | (1) |
|
5.10.2 Floating Point Numbers and Operations |
|
|
55 | (1) |
|
|
56 | (1) |
|
|
57 | (8) |
|
|
57 | (2) |
|
6.1.1 HDL Supported in RTL Synthesis |
|
|
57 | (2) |
|
|
59 | (1) |
|
|
59 | (1) |
|
|
59 | (1) |
|
|
59 | (1) |
|
6.6 Some Interesting Cases Where Synthesis May Fail |
|
|
59 | (1) |
|
6.7 What Is Being Synthesized? |
|
|
60 | (4) |
|
6.7.1 Overall Design Structure |
|
|
60 | (1) |
|
|
60 | (3) |
|
|
63 | (1) |
|
|
64 | (1) |
|
PART 2 INTRODUCTION TO FPGA APPLICATIONS |
|
|
65 | (50) |
|
Chapter 7 High Speed Video Application |
|
|
67 | (12) |
|
|
67 | (1) |
|
7.2 The Camera Link Interface |
|
|
68 | (3) |
|
|
68 | (1) |
|
|
68 | (1) |
|
|
69 | (1) |
|
7.2.4 Memory Requirements |
|
|
70 | (1) |
|
|
71 | (1) |
|
7.4 Specifying the Interfaces |
|
|
71 | (1) |
|
7.5 Defining the Top Level Design |
|
|
72 | (1) |
|
7.6 System Block Definitions and Interfaces |
|
|
73 | (3) |
|
7.6.1 Overall System Decomposition |
|
|
73 | (1) |
|
7.6.2 Mouse and Keyboard Interfaces |
|
|
74 | (1) |
|
|
74 | (1) |
|
7.6.4 The Display Interface: VGA |
|
|
75 | (1) |
|
7.7 The Camera Link Interface |
|
|
76 | (1) |
|
|
76 | (1) |
|
|
77 | (2) |
|
Chapter 8 Simple Embedded Processors |
|
|
79 | (36) |
|
|
79 | (1) |
|
8.2 A Simple Embedded Processor |
|
|
79 | (8) |
|
8.2.1 Embedded Processor Architecture |
|
|
79 | (2) |
|
|
81 | (1) |
|
8.2.3 Fetch Execute Cycle |
|
|
82 | (1) |
|
8.2.4 Embedded Processor Register Allocation |
|
|
83 | (1) |
|
8.2.5 A Basic Instruction Set |
|
|
84 | (1) |
|
8.2.6 Structural or Behavioral? |
|
|
85 | (1) |
|
8.2.7 Machine Code Instruction Set |
|
|
86 | (1) |
|
8.2.8 Structural Elements of the Microprocessor |
|
|
86 | (1) |
|
8.3 A Simple Embedded Processor Implemented in VHDL |
|
|
87 | (10) |
|
8.3.1 Processor Functions Package |
|
|
87 | (1) |
|
8.3.2 The Program Counter |
|
|
88 | (1) |
|
8.3.3 The Instruction Register |
|
|
89 | (2) |
|
8.3.4 The Arithmetic and Logic Unit |
|
|
91 | (1) |
|
|
92 | (2) |
|
8.3.6 Microcontroller Controller |
|
|
94 | (3) |
|
8.3.7 Summary of a Simple Microprocessor Implemented in VHDL |
|
|
97 | (1) |
|
8.4 A Simple Embedded Processor Implemented in Verilog |
|
|
97 | (15) |
|
8.4.1 The Program Counter |
|
|
97 | (3) |
|
8.4.2 The Instruction Register |
|
|
100 | (2) |
|
8.4.3 Memory Data Register |
|
|
102 | (2) |
|
8.4.4 Memory Address Register |
|
|
104 | (3) |
|
8.4.5 The Arithmetic and Logic Unit |
|
|
107 | (3) |
|
|
110 | (1) |
|
8.4.7 Microcontroller Controller |
|
|
110 | (2) |
|
8.4.8 Summary of a Simple Verilog Microprocessor |
|
|
112 | (1) |
|
8.5 Soft Core Processors on an FPGA |
|
|
112 | (1) |
|
|
113 | (2) |
|
PART 3 DESIGNER'S TOOLBOX |
|
|
115 | (114) |
|
Chapter 9 Digital Filters |
|
|
117 | (18) |
|
|
117 | (1) |
|
9.2 Converting S Domain to Z Domain |
|
|
118 | (1) |
|
9.3 Implementing Z Domain Functions in VHDL |
|
|
119 | (5) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
121 | (1) |
|
|
122 | (1) |
|
|
123 | (1) |
|
9.4 Basic Low Pass Filter Model |
|
|
124 | (3) |
|
9.5 Implementing Z Domain Functions in Verilog |
|
|
127 | (6) |
|
|
127 | (2) |
|
|
129 | (2) |
|
|
131 | (2) |
|
9.6 Finite Impulse Response Filters |
|
|
133 | (1) |
|
9.7 Infinite Impulse Response Filters |
|
|
133 | (1) |
|
|
134 | (1) |
|
Chapter 10 Secure Systems |
|
|
135 | (32) |
|
10.1 Introduction to Block Ciphers |
|
|
135 | (1) |
|
10.2 Feistel Lattice Structures |
|
|
135 | (2) |
|
10.3 The Data Encryption Standard (DES) |
|
|
137 | (12) |
|
|
137 | (3) |
|
10.3.2 DES VHDL Implementation |
|
|
140 | (5) |
|
10.3.3 DES Verilog Implementation |
|
|
145 | (4) |
|
|
149 | (1) |
|
10.4 Advanced Encryption Standard |
|
|
149 | (16) |
|
10.4.1 Implementing AES in VHDL |
|
|
153 | (12) |
|
|
165 | (2) |
|
|
167 | (18) |
|
|
167 | (1) |
|
11.2 Modeling Memory in HDLs |
|
|
168 | (1) |
|
|
168 | (2) |
|
11.4 Random Access Memory |
|
|
170 | (7) |
|
|
177 | (5) |
|
|
182 | (2) |
|
|
184 | (1) |
|
Chapter 12 PS/2 Mouse Interface |
|
|
185 | (6) |
|
|
185 | (1) |
|
|
185 | (1) |
|
|
185 | (1) |
|
12.4 PS/2 Mouse Data Packets |
|
|
186 | (1) |
|
12.5 PS/2 Operation Modes |
|
|
186 | (1) |
|
12.6 PS/2 Mouse with Wheel |
|
|
187 | (1) |
|
12.7 Basic PS/2 Mouse Handler VHDL |
|
|
187 | (1) |
|
12.8 Modified PS/2 Mouse Handler VHDL |
|
|
188 | (1) |
|
12.9 Basic PS/2 Mouse Handler in Verilog |
|
|
189 | (1) |
|
|
190 | (1) |
|
Chapter 13 PS/2 Keyboard Interface |
|
|
191 | (6) |
|
|
191 | (1) |
|
13.2 PS/2 Keyboard Basics |
|
|
191 | (1) |
|
13.3 PS/2 Keyboard Commands |
|
|
192 | (1) |
|
13.4 PS/2 Keyboard Data Packets |
|
|
192 | (1) |
|
13.5 PS/2 Keyboard Operation Modes |
|
|
192 | (3) |
|
13.5.1 Basic PS/2 Keyboard Handler in VHDL |
|
|
192 | (1) |
|
13.5.2 Modified PS/2 Keyboard Handler in VHDL |
|
|
193 | (1) |
|
13.5.3 Basic PS/2 Keyboard Handler in Verilog |
|
|
194 | (1) |
|
|
195 | (2) |
|
Chapter 14 A Simple VGA Interface |
|
|
197 | (12) |
|
|
197 | (1) |
|
|
197 | (1) |
|
|
198 | (1) |
|
14.4 A VGA Interface in VHDL |
|
|
198 | (5) |
|
14.4.1 VHDL Top Level Entity for VGA Handling |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
200 | (1) |
|
14.4.4 Horizontal and Vertical Blanking Pulses |
|
|
201 | (1) |
|
14.4.5 Calculating the Correct Pixel Data |
|
|
202 | (1) |
|
14.5 A VGA Interface in Verilog |
|
|
203 | (4) |
|
14.5.1 Verilog Top Level Module for VGA Handling |
|
|
203 | (1) |
|
|
204 | (1) |
|
|
205 | (1) |
|
14.5.4 Horizontal and Vertical Blanking Pulses |
|
|
206 | (1) |
|
14.5.5 Calculating the Correct Pixel Data |
|
|
207 | (1) |
|
|
207 | (2) |
|
Chapter 15 Serial Communications |
|
|
209 | (20) |
|
|
209 | (1) |
|
15.2 Manchester Encoding and Decoding |
|
|
209 | (1) |
|
15.3 Implementing the Manchester Encoding Scheme using VHDL |
|
|
210 | (2) |
|
15.4 Implementing the Manchester Encoding Scheme using Verilog |
|
|
212 | (2) |
|
15.5 NRZ (Non-Return-to-Zero) Coding and Decoding |
|
|
214 | (1) |
|
15.6 NRZI (Non-Return-to-Zero-Inverted) Coding and Decoding |
|
|
215 | (3) |
|
15.6.1 NRZI Coding and Decoding in VHDL |
|
|
215 | (1) |
|
15.6.2 NRZI Coding and Decoding in Verilog |
|
|
216 | (2) |
|
|
218 | (7) |
|
|
218 | (1) |
|
15.7.2 RS-232 Baud Rate Generator |
|
|
218 | (3) |
|
|
221 | (4) |
|
15.8 Universal Serial Bus |
|
|
225 | (3) |
|
|
228 | (1) |
|
PART 4 OPTIMIZING DESIGNS |
|
|
229 | (54) |
|
Chapter 16 Design Optimization |
|
|
231 | (6) |
|
|
231 | (1) |
|
16.2 Techniques for Logic Optimization |
|
|
231 | (2) |
|
16.3 Improving Performance |
|
|
233 | (1) |
|
16.4 Critical Path Analysis |
|
|
234 | (1) |
|
|
235 | (2) |
|
Chapter 17 Behavioral Modeling in using HDLs |
|
|
237 | (6) |
|
|
237 | (1) |
|
17.2 How to Go from RTL to Behavioral HDL Descriptions |
|
|
237 | (1) |
|
17.3 Implementing the Behavioral Model using VHDL |
|
|
237 | (3) |
|
17.4 Implementing the Behavioral Model using Verilog |
|
|
240 | (2) |
|
|
242 | (1) |
|
Chapter 18 Mixed Signal Modeling |
|
|
243 | (22) |
|
|
243 | (1) |
|
18.2 Basic Modeling Approach for VHDL-AMS |
|
|
243 | (1) |
|
18.3 Introduction to VHDL-AMS |
|
|
244 | (1) |
|
18.4 VHDL-AMS Analog Pins: TERMINALS |
|
|
245 | (1) |
|
18.5 Mixed Domain Modeling |
|
|
246 | (1) |
|
18.6 VHDL-AMS Analog Variables: Quantities |
|
|
246 | (1) |
|
18.7 Simultaneous Equations in VHDL-AMS |
|
|
247 | (1) |
|
18.8 A VHDL-AMS Example: A DC Voltage Source |
|
|
247 | (1) |
|
18.9 A VHDL-AMS Example: Resistor |
|
|
248 | (1) |
|
18.10 Differential Equations in VHDL-AMS |
|
|
249 | (2) |
|
18.11 Mixed-Signal Modeling with VHDL-AMS |
|
|
251 | (2) |
|
18.12 A Basic Switch Model |
|
|
253 | (2) |
|
18.13 Basic VHDL-AMS Comparator Model |
|
|
255 | (1) |
|
18.14 Multiple Domain Modeling |
|
|
256 | (1) |
|
18.15 Introduction to Verilog-AMS |
|
|
257 | (1) |
|
18.16 Verilog-AMS: Analog ports |
|
|
258 | (1) |
|
18.17 Mixed Domain Modeling in Verilog-AMS |
|
|
258 | (1) |
|
18.18 Verilog-AMS Analog Variables |
|
|
259 | (1) |
|
18.19 Verilog-AMS Analog Equations |
|
|
259 | (1) |
|
18.20 A Verilog-AMS Example |
|
|
260 | (1) |
|
18.20.1 DC Voltage Source |
|
|
260 | (1) |
|
|
260 | (1) |
|
18.21 Differential Equations in Verilog-AMS |
|
|
261 | (1) |
|
18.22 Mixed Signal Modeling with Verilog-AMS |
|
|
262 | (1) |
|
18.23 Multiple Domain Modeling using Verilog-AMS |
|
|
263 | (1) |
|
|
264 | (1) |
|
Chapter 19 Design Optimization Example: DES |
|
|
265 | (18) |
|
|
265 | (1) |
|
19.2 The Data Encryption Standard |
|
|
265 | (1) |
|
|
266 | (1) |
|
|
266 | (6) |
|
|
266 | (1) |
|
|
266 | (3) |
|
19.4.3 Data Transformations |
|
|
269 | (2) |
|
19.4.4 Key Transformations |
|
|
271 | (1) |
|
|
272 | (1) |
|
19.6 Optimizing the Datapath |
|
|
273 | (2) |
|
19.6.1 Optimizing the Key Transformations |
|
|
274 | (1) |
|
|
275 | (1) |
|
|
276 | (1) |
|
|
276 | (4) |
|
|
276 | (1) |
|
19.9.2 Minimum Area Iterative |
|
|
277 | (2) |
|
19.9.3 Minimum Latency Pipelined |
|
|
279 | (1) |
|
19.10 Comparing the Approaches |
|
|
280 | (1) |
|
|
281 | (2) |
|
|
281 | (2) |
|
PART 5 FUNDAMENTAL TECHNIQUES |
|
|
283 | (78) |
|
Chapter 20 Latches, Flip-Flops, and Registers |
|
|
285 | (10) |
|
|
285 | (1) |
|
|
285 | (2) |
|
|
287 | (4) |
|
|
291 | (3) |
|
|
294 | (1) |
|
|
295 | (10) |
|
|
295 | (1) |
|
21.2 Logic Functions in VHDL |
|
|
295 | (4) |
|
|
297 | (2) |
|
21.3 Structural n-Bit Addition |
|
|
299 | (1) |
|
21.4 Logic Functions in Verilog |
|
|
300 | (1) |
|
21.5 Configurable n-Bit Addition |
|
|
301 | (1) |
|
|
302 | (2) |
|
|
304 | (1) |
|
Chapter 22 Finite State Machines in VHDL and Verilog |
|
|
305 | (6) |
|
|
305 | (1) |
|
22.2 State Transition Diagrams |
|
|
305 | (1) |
|
22.3 Implementing Finite State Machines in VHDL |
|
|
305 | (3) |
|
22.4 Implementing Finite State Machines in Verilog |
|
|
308 | (1) |
|
22.5 Testing the Finite State Machine Model |
|
|
309 | (1) |
|
|
309 | (2) |
|
Chapter 23 Fixed Point Arithmetic |
|
|
311 | (10) |
|
|
311 | (2) |
|
23.2 Basic Fixed Point Types in VHDL |
|
|
313 | (1) |
|
23.3 Fixed Point Functions in VHDL |
|
|
314 | (3) |
|
23.3.1 Fixed Point to STD_LOGIC_VECTOR Functions |
|
|
314 | (1) |
|
23.3.2 Fixed Point to Real Conversion |
|
|
315 | (2) |
|
23.4 Testing the VHDL Fixed Point Functions |
|
|
317 | (1) |
|
23.5 Fixed Point Types in Verilog |
|
|
318 | (1) |
|
23.6 Floating Point Types in Verilog |
|
|
319 | (1) |
|
|
319 | (2) |
|
|
321 | (16) |
|
|
321 | (1) |
|
24.2 Basic Binary Counter using VHDL |
|
|
321 | (3) |
|
24.3 Simple Binary Counter using Verilog |
|
|
324 | (1) |
|
24.4 Synthesized Simple Binary Counter |
|
|
325 | (2) |
|
|
327 | (4) |
|
|
331 | (2) |
|
|
333 | (2) |
|
|
335 | (2) |
|
Chapter 25 Decoders and Multiplexers |
|
|
337 | (8) |
|
|
337 | (3) |
|
|
340 | (3) |
|
|
343 | (2) |
|
Chapter 26 Multiplication |
|
|
345 | (10) |
|
|
345 | (1) |
|
26.2 Basic Binary Multiplication |
|
|
345 | (1) |
|
26.3 VHDL Unsigned Multiplier |
|
|
346 | (2) |
|
26.4 Synthesis of the Multiplication Function |
|
|
348 | (1) |
|
26.5 Simple Multiplication using VHDL |
|
|
349 | (2) |
|
26.6 Simple Multiplication using Verilog |
|
|
351 | (2) |
|
|
353 | (2) |
|
Chapter 27 Simple 7-Segment (LCD) Displays |
|
|
355 | (6) |
|
|
355 | (1) |
|
27.2 VHDL LCD Module Decoder |
|
|
355 | (3) |
|
27.3 Verilog LCD Module Decoder |
|
|
358 | (2) |
|
|
360 | (1) |
Bibliography |
|
361 | (4) |
Index |
|
365 | |