About the Author |
|
xxxiii | |
Foreword |
|
xxxv | |
Preface |
|
xlix | |
Acknowledgment |
|
lix | |
About the Companion Website |
|
lxi | |
|
33 Hardware and Software Infrastructure |
|
|
|
33 The Hardware Side -- Part 1: An Introduction |
|
|
1 | (54) |
|
|
1 | (2) |
|
33 The Hardware Side -- Getting Started |
|
|
3 | (1) |
|
|
3 | (5) |
|
|
6 | (1) |
|
|
7 | (1) |
|
|
7 | (1) |
|
33 The Digital Signal Processor |
|
|
7 | (1) |
|
33 Representing Information |
|
|
8 | (1) |
|
|
9 | (1) |
|
|
9 | (4) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
13 | (1) |
|
|
14 | (2) |
|
33 Registers -- A First Look |
|
|
16 | (2) |
|
33 Embedded Systems -- An Instruction Set View |
|
|
18 | (16) |
|
33 Instruction Set -- Instruction Types |
|
|
18 | (1) |
|
33 Data Transfer Instructions |
|
|
18 | (2) |
|
|
20 | (6) |
|
|
26 | (1) |
|
|
26 | (1) |
|
|
27 | (1) |
|
|
28 | (1) |
|
|
28 | (1) |
|
33 Procedure or Function Call |
|
|
29 | (3) |
|
|
32 | (2) |
|
33 Embedded Systems -- A Register View |
|
|
34 | (2) |
|
|
35 | (1) |
|
|
35 | (1) |
|
|
36 | (1) |
|
|
36 | (1) |
|
33 Register Transfer Language |
|
|
36 | (2) |
|
33 Register View of a Microprocessor |
|
|
38 | (7) |
|
|
38 | (1) |
|
|
39 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
41 | (4) |
|
|
45 | (1) |
|
|
45 | (1) |
|
|
46 | (1) |
|
|
47 | (8) |
|
33 The Hardware Side -- Part 2: Combinational Logic -- A Practical View |
|
|
55 | (56) |
|
|
55 | (1) |
|
33 A Look at Real-World Gates -- Part 1: Signal Levels |
|
|
56 | (8) |
|
|
57 | (2) |
|
33 A First Look Inside the Logic Gate |
|
|
59 | (1) |
|
|
60 | (4) |
|
33 A Look at Real-World Gates -- Part 2: Time |
|
|
64 | (6) |
|
|
65 | (1) |
|
|
65 | (2) |
|
33 Race Conditions and Hazards |
|
|
67 | (1) |
|
|
67 | (2) |
|
|
69 | (1) |
|
33 A Look at Real-World Gates -- Part 3: Signal Behavior in the Real World -- the Legacy of Early Physicists |
|
|
70 | (1) |
|
33 Look For the Guilty -- A First Look at Signal Quality |
|
|
71 | (10) |
|
|
71 | (1) |
|
33 A Discrete Component First-Order Resistor Model |
|
|
72 | (2) |
|
|
74 | (2) |
|
33 Discrete Component First-Order Capacitor Model |
|
|
76 | (2) |
|
|
78 | (1) |
|
33 Magnetic Field Lines -- The First Principle |
|
|
78 | (1) |
|
33 Magnetic Field Lines -- The Second Principle |
|
|
79 | (1) |
|
33 Magnetic Field Lines -- The Third Principle |
|
|
80 | (1) |
|
|
81 | (3) |
|
|
82 | (2) |
|
33 Logic Circuit Models and Parasitic Components |
|
|
84 | (7) |
|
33 First-Order RC Circuit Model |
|
|
84 | (2) |
|
33 First-Order RL Circuit Model |
|
|
86 | (1) |
|
33 Second-Order Series RLC Circuit Model |
|
|
87 | (2) |
|
|
89 | (1) |
|
|
90 | (1) |
|
33 Testing Combinational Circuits -- Introduction and Philosophy |
|
|
91 | (1) |
|
33 Modeling, Simulation, and Tools |
|
|
92 | (1) |
|
|
93 | (6) |
|
|
93 | (1) |
|
|
94 | (1) |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
96 | (1) |
|
33 Nonfeedback Bridge Faults |
|
|
97 | (2) |
|
33 Feedback Bridge Faults |
|
|
99 | (1) |
|
|
99 | (2) |
|
33 Hazards and Race Conditions |
|
|
100 | (1) |
|
|
101 | (1) |
|
|
101 | (1) |
|
|
102 | (2) |
|
|
104 | (7) |
|
33 The Hardware Side -- Part 3: Storage Elements and Finite-State Machines -- A Practical View |
|
|
111 | (54) |
|
|
111 | (1) |
|
33 The Concepts of State and Time |
|
|
112 | (1) |
|
|
112 | |
|
|
112 | (1) |
|
|
113 | (1) |
|
|
113 | (1) |
|
33 Finite-Stale Machines -- A Theoretical Model |
|
|
114 | (2) |
|
33 Designing Finite-State Machines -- Part 1: Registers |
|
|
116 | (8) |
|
|
116 | (1) |
|
|
117 | (1) |
|
33 Shift Right Shift Register |
|
|
117 | (4) |
|
33 Parallel In/Serial Out -- Serial In/Parallel Out Left Shift Registers |
|
|
121 | (1) |
|
33 Linear Feedback Shin Registers |
|
|
122 | (2) |
|
33 Designing Finite-State Machines -- Part 2: Counting and Dividing |
|
|
124 | (7) |
|
|
124 | (1) |
|
|
124 | (1) |
|
33 Asynchronous Dividers and Counters |
|
|
125 | (2) |
|
33 Synchronous Dividers and Counters |
|
|
127 | (1) |
|
|
128 | (1) |
|
33 Two-Stage Johnson Counter |
|
|
129 | (1) |
|
33 Three-or Greater Stage Johnson Counter |
|
|
130 | (1) |
|
33 Practical Considerations -- Part 1: Timing in Latches and Flip-Flops |
|
|
131 | (4) |
|
|
131 | (1) |
|
|
132 | (1) |
|
|
132 | (1) |
|
|
133 | (2) |
|
33 Practical Considerations -- Part 2: Clocks and Clock Distribution |
|
|
135 | (6) |
|
|
135 | (1) |
|
|
135 | (2) |
|
33 Precision and Stability |
|
|
137 | (1) |
|
33 Designing a Clock System |
|
|
137 | (1) |
|
|
137 | (1) |
|
|
138 | (3) |
|
|
141 | (1) |
|
33 Multiple Clocks Versus Multiple Phases |
|
|
141 | (1) |
|
|
141 | (1) |
|
33 Testing Sequential Circuits |
|
|
141 | (11) |
|
33 The Finite-State Machine Model Revisited |
|
|
142 | (1) |
|
33 Sequential Circuit Test -- A First Look |
|
|
142 | (3) |
|
33 Defining Homing and Transfer Sequences |
|
|
145 | (3) |
|
33 Scan Design Techniques |
|
|
148 | (1) |
|
33 Boundary Scan-Extending Scan-Path Techniques |
|
|
149 | (3) |
|
|
152 | (1) |
|
|
152 | (1) |
|
|
153 | (2) |
|
|
155 | (10) |
|
33 Memories and the Memory Subsystem |
|
|
165 | (50) |
|
|
165 | (1) |
|
|
166 | (1) |
|
33 A General Memory Interface |
|
|
167 | (1) |
|
|
168 | (1) |
|
|
169 | (1) |
|
|
169 | (2) |
|
|
171 | (1) |
|
|
171 | (1) |
|
|
171 | (2) |
|
|
172 | (1) |
|
|
172 | (1) |
|
|
172 | (1) |
|
|
173 | (1) |
|
|
173 | (3) |
|
33 A Memory Interface in Detail |
|
|
176 | (1) |
|
|
177 | (3) |
|
|
177 | (2) |
|
|
179 | (1) |
|
|
179 | (1) |
|
|
179 | (1) |
|
|
180 | (3) |
|
|
181 | (1) |
|
|
181 | (1) |
|
|
182 | (1) |
|
33 The DRAM Memory Interface |
|
|
183 | (5) |
|
|
183 | (1) |
|
|
184 | (1) |
|
|
185 | (3) |
|
|
188 | (1) |
|
33 Memory Subsystem Architecture |
|
|
189 | (1) |
|
33 Basic Concepts of Caching |
|
|
190 | (2) |
|
|
190 | (2) |
|
33 Cache System Architecture |
|
|
192 | (1) |
|
33 Designing a Cache System |
|
|
192 | (1) |
|
33 A High-Level Description |
|
|
192 | (1) |
|
33 Caching -- A Direct Mapped Implementation |
|
|
193 | (3) |
|
33 Caching -- An Associative Mapping Cache Implementation |
|
|
196 | (2) |
|
33 Caching -- A Block-Set Associative Mapping Cache Implementation |
|
|
198 | (1) |
|
33 Dynamic Memory Allocation |
|
|
199 | (3) |
|
|
200 | (1) |
|
|
200 | (1) |
|
|
201 | (1) |
|
|
201 | (1) |
|
|
202 | (1) |
|
|
202 | (6) |
|
|
204 | (2) |
|
|
206 | (2) |
|
|
208 | (1) |
|
|
208 | (1) |
|
|
209 | (1) |
|
|
210 | (5) |
|
33 An Introduction to Software Modeling |
|
|
215 | (28) |
|
|
215 | (1) |
|
33 An Introduction to UML |
|
|
216 | (1) |
|
|
217 | (1) |
|
|
218 | (2) |
|
|
219 | (1) |
|
|
220 | (3) |
|
|
221 | (1) |
|
33 Inheritance or Generalization |
|
|
221 | (1) |
|
|
221 | (1) |
|
|
222 | (1) |
|
33 Dynamic Modeling with UML |
|
|
223 | (1) |
|
|
223 | (2) |
|
|
224 | (1) |
|
|
224 | (1) |
|
|
225 | (1) |
|
|
225 | (1) |
|
|
226 | (1) |
|
|
227 | (1) |
|
|
228 | (1) |
|
|
228 | (5) |
|
|
228 | (1) |
|
33 State Machines and State Chart Diagrams |
|
|
229 | (1) |
|
33 UML State Chart Diagrams |
|
|
230 | (1) |
|
|
230 | (1) |
|
|
231 | (1) |
|
|
232 | (1) |
|
33 Dynamic Modeling with Structured Design Methods |
|
|
233 | (4) |
|
33 Brief Introduction to the Structured Design Philosophy |
|
|
233 | (1) |
|
33 Data and Control Flow Diagrams |
|
|
234 | (1) |
|
|
234 | (3) |
|
|
237 | (1) |
|
|
237 | (2) |
|
|
239 | (1) |
|
|
240 | (3) |
|
33 The Software Side -- Part 1: The C Program |
|
|
243 | (36) |
|
|
243 | (1) |
|
33 Software and Its Manifestations |
|
|
243 | (6) |
|
33 Combining Hardware and Software |
|
|
244 | (1) |
|
|
245 | (1) |
|
|
245 | (1) |
|
|
246 | (1) |
|
|
246 | (1) |
|
|
247 | (1) |
|
|
248 | (1) |
|
|
249 | (1) |
|
|
249 | (1) |
|
33 Developing Embedded Software |
|
|
249 | (1) |
|
|
250 | (1) |
|
|
250 | (18) |
|
33 Fundamental Data -- What's in a Name? |
|
|
250 | (1) |
|
|
250 | (1) |
|
33 Defining Variables -- Giving Them a Name and a Value |
|
|
251 | (1) |
|
33 Defining Variables -- Giving Them a Type, Scope, and Storage Class |
|
|
252 | (1) |
|
|
252 | (6) |
|
|
258 | (1) |
|
33 Variable Names Revisited |
|
|
259 | (1) |
|
|
259 | (2) |
|
|
261 | (2) |
|
|
263 | (5) |
|
|
268 | (5) |
|
|
268 | (1) |
|
|
268 | (1) |
|
|
269 | (1) |
|
|
269 | (1) |
|
|
270 | (1) |
|
33 Where C Finds Functions |
|
|
271 | (1) |
|
|
271 | (1) |
|
33 Standard and Custom Libraries |
|
|
272 | (1) |
|
33 Debug and Release Builds |
|
|
272 | (1) |
|
|
273 | (1) |
|
|
273 | (1) |
|
|
274 | (1) |
|
|
275 | (4) |
|
33 The Software Side -- Part 2: Pointers and Functions |
|
|
279 | (52) |
|
|
279 | (1) |
|
|
280 | (5) |
|
33 Bit Manipulation Operations |
|
|
280 | (1) |
|
33 Testing, Resetting, and Setting Bits |
|
|
281 | (3) |
|
|
284 | (1) |
|
33 Pointer Variables and Memory Addresses |
|
|
285 | (11) |
|
|
285 | (5) |
|
33 Simple Pointer Arithmetic |
|
|
290 | (3) |
|
|
293 | (1) |
|
|
293 | (1) |
|
33 Generic and NULL Pointers |
|
|
294 | (1) |
|
|
294 | (1) |
|
|
295 | (1) |
|
|
296 | (10) |
|
|
296 | (1) |
|
|
296 | (1) |
|
33 Arguments or Parameter List |
|
|
296 | (1) |
|
|
296 | (1) |
|
|
297 | (1) |
|
|
297 | (4) |
|
|
301 | (2) |
|
|
303 | (1) |
|
|
304 | (1) |
|
|
304 | (2) |
|
|
306 | (1) |
|
|
306 | (4) |
|
|
310 | (10) |
|
|
311 | (2) |
|
|
313 | (1) |
|
|
313 | (1) |
|
|
314 | (1) |
|
33 Structs as Data Members |
|
|
314 | (1) |
|
|
314 | (1) |
|
33 Initialization and Assignment |
|
|
315 | (1) |
|
|
315 | (3) |
|
|
318 | (1) |
|
|
318 | (1) |
|
33 Passing Structs and Pointers to Structs |
|
|
319 | (1) |
|
|
320 | (4) |
|
33 The Interrupt Control Flow |
|
|
320 | (1) |
|
|
320 | (1) |
|
33 The Interrupt Service Routine -- ISR |
|
|
321 | (1) |
|
33 The Interrupt Vector Table |
|
|
321 | (2) |
|
33 Control of the Interrupt |
|
|
323 | (1) |
|
|
323 | (1) |
|
33 Recognizing an Interrupting Event |
|
|
323 | (1) |
|
33 Interrupting and Masking an Interrupting Event |
|
|
324 | (1) |
|
|
324 | (1) |
|
|
324 | (2) |
|
|
326 | (1) |
|
|
327 | (4) |
|
33 Developing the Foundation |
|
|
|
33 Safety, Security, Reliability, and Robust Design |
|
|
331 | (72) |
|
|
331 | (2) |
|
|
333 | (1) |
|
|
334 | (2) |
|
33 Faults, Errors, and Failures |
|
|
336 | (1) |
|
33 Another Look at Reliability |
|
|
337 | (1) |
|
33 Some Real-World Examples |
|
|
337 | (3) |
|
33 Big Word Small Register |
|
|
338 | (1) |
|
33 It's My Turn -- Not Yours |
|
|
338 | (1) |
|
33 Where Do I Put My Stuff? |
|
|
339 | (1) |
|
33 Single-Point and Common Mode Failure Model |
|
|
340 | (1) |
|
|
340 | (1) |
|
33 Safe, Secure, and Robust Designs |
|
|
341 | (6) |
|
33 Understanding System Requirements |
|
|
341 | (1) |
|
33 Managing Essential Information |
|
|
342 | (1) |
|
|
343 | (1) |
|
|
344 | (1) |
|
|
344 | (3) |
|
33 Use the Available Tools |
|
|
347 | (1) |
|
33 Safe and Robust Designs -- The System |
|
|
347 | (1) |
|
33 System Functional Level Considerations |
|
|
347 | (3) |
|
33 Control and Alarm Subsystems |
|
|
347 | (1) |
|
33 Memory and Bus Subsystems |
|
|
348 | (1) |
|
33 Data Faults and the Communications Subsystem |
|
|
349 | (1) |
|
33 Power and Reset Subsystems |
|
|
349 | (1) |
|
33 Peripheral Device Subsystems |
|
|
349 | (1) |
|
|
349 | (1) |
|
33 System Architecture Level Considerations |
|
|
350 | (3) |
|
33 Fail Operational2/Fail Operational Capability |
|
|
350 | (1) |
|
|
351 | (1) |
|
|
351 | (1) |
|
|
352 | (1) |
|
33 Lightweight Redundancy |
|
|
352 | (1) |
|
|
352 | (1) |
|
33 Busses -- The Subsystem Interconnect |
|
|
353 | (2) |
|
33 The Star Configuration |
|
|
353 | (1) |
|
33 The Multidrop Bus Configuration |
|
|
353 | (1) |
|
33 The Ring Configuration |
|
|
354 | (1) |
|
33 Data and Control Faults -- Data Boundary Values |
|
|
355 | (1) |
|
|
355 | (1) |
|
|
355 | (1) |
|
33 Data and Control Faults -- The Communications Subsystem |
|
|
356 | (11) |
|
|
356 | (1) |
|
|
356 | (1) |
|
|
357 | (1) |
|
|
358 | (1) |
|
|
358 | (1) |
|
|
358 | (1) |
|
|
358 | (9) |
|
|
367 | (3) |
|
|
368 | (1) |
|
|
368 | (1) |
|
|
369 | (1) |
|
33 Peripheral Devices -- Built-in Self-Test (BIST) |
|
|
370 | (4) |
|
|
370 | (1) |
|
|
371 | (2) |
|
|
373 | (1) |
|
|
373 | (1) |
|
|
373 | (1) |
|
33 What to Do If a Test Fails? |
|
|
373 | (1) |
|
33 Failure Modes and Effects Analysis |
|
|
374 | (2) |
|
33 Security -- Look Behind You |
|
|
376 | (1) |
|
33 Understanding the Problem -- Looking at the System |
|
|
376 | (1) |
|
33 Analyzing the Problem -- Looking at Potential Vulnerabilities |
|
|
377 | (1) |
|
33 Understanding the Problem -- Looking at the Attacks |
|
|
378 | (4) |
|
33 Looking at the Software |
|
|
378 | (3) |
|
33 Looking at the Hardware |
|
|
381 | (1) |
|
33 Dealing with the Problem -- Protecting Against the Attacks |
|
|
382 | (14) |
|
33 Protecting the Software |
|
|
382 | (1) |
|
|
382 | (2) |
|
|
384 | (1) |
|
|
385 | (1) |
|
|
386 | (1) |
|
33 Software Testing Tools |
|
|
387 | (1) |
|
33 Protecting the Hardware |
|
|
388 | (1) |
|
|
388 | (1) |
|
|
388 | (2) |
|
|
390 | (1) |
|
33 Protecting a Network Interface |
|
|
390 | (1) |
|
|
391 | (1) |
|
|
391 | (4) |
|
|
395 | (1) |
|
|
396 | (1) |
|
|
396 | (1) |
|
|
397 | (1) |
|
|
397 | (1) |
|
|
398 | (1) |
|
|
399 | (4) |
|
33 Embedded Systems Design and Development -- Hardware-Software Co-Design |
|
|
403 | (104) |
|
|
404 | (1) |
|
33 System Design and Development |
|
|
405 | (3) |
|
33 Getting Ready -- Start Thinking |
|
|
406 | (1) |
|
|
407 | (1) |
|
|
408 | (5) |
|
|
409 | (1) |
|
|
410 | (1) |
|
|
411 | (1) |
|
33 Rapid Prototyping -- Incremental |
|
|
412 | (1) |
|
33 Problem Solving -- Six Steps To Design |
|
|
413 | (1) |
|
33 Hardware--Software Co-Design |
|
|
414 | (3) |
|
|
415 | (1) |
|
33 Traditional Embedded Systems Development |
|
|
415 | (2) |
|
|
417 | (1) |
|
33 Advantages of the Co-Design Methodology |
|
|
417 | (1) |
|
33 Co-Design Process Overview |
|
|
418 | (1) |
|
|
419 | (3) |
|
|
422 | (1) |
|
33 Identifying the Requirements |
|
|
423 | (2) |
|
33 Formulating the Requirements Specification |
|
|
425 | (12) |
|
|
426 | (1) |
|
33 Characterizing External Entities |
|
|
427 | (1) |
|
|
427 | (2) |
|
33 Characterizing the System |
|
|
429 | (8) |
|
33 The System Design Specification |
|
|
437 | (11) |
|
|
439 | (1) |
|
33 Quantifying the System |
|
|
439 | (9) |
|
33 System Requirements Versus System Design Specifications |
|
|
448 | (1) |
|
33 Executing the Hardware-Software Co-Design Process |
|
|
449 | (1) |
|
33 Functional Decomposition |
|
|
449 | (3) |
|
Identifying the Functions |
|
|
452 | (1) |
|
|
452 | (2) |
|
33 Partitioning and Mapping to an Architecture |
|
|
454 | (11) |
|
|
455 | (2) |
|
|
457 | (1) |
|
|
458 | (1) |
|
33 A Few More Considerations |
|
|
459 | (1) |
|
33 Approaches to Partitioning and Mapping |
|
|
459 | (1) |
|
|
460 | (1) |
|
|
460 | (5) |
|
33 Evaluation of a Partition |
|
|
465 | (1) |
|
|
465 | (4) |
|
33 Mapping Functions to Hardware |
|
|
465 | (1) |
|
33 Hardware and Software Specification and Design |
|
|
466 | (3) |
|
33 Functional Model Versus Architectural Model |
|
|
469 | (1) |
|
|
469 | (1) |
|
33 The Architectural Model |
|
|
470 | (1) |
|
33 The Need for Both Models |
|
|
470 | (1) |
|
33 Modeling Tools and Languages for Co-Design |
|
|
470 | (10) |
|
|
471 | (1) |
|
|
471 | (1) |
|
33 Characterizing the Model |
|
|
472 | (1) |
|
|
472 | (1) |
|
|
472 | (1) |
|
|
472 | (1) |
|
|
473 | (1) |
|
|
474 | (1) |
|
33 The Random Access Machine-RAM |
|
|
474 | (1) |
|
|
474 | (1) |
|
33 The Pushdown Automaton Machine |
|
|
475 | (1) |
|
33 The Basic Finite State Machine |
|
|
475 | (1) |
|
33 Communicating Finite State Machines |
|
|
476 | (1) |
|
|
476 | (1) |
|
|
477 | (1) |
|
33 Program State Machines |
|
|
478 | (1) |
|
|
479 | (1) |
|
|
479 | (1) |
|
|
480 | (1) |
|
33 Control Flow -- Data Flow -- CDFG Graphs |
|
|
480 | (1) |
|
|
480 | (6) |
|
|
481 | (1) |
|
|
482 | (1) |
|
33 System Characterization |
|
|
483 | (1) |
|
|
483 | (1) |
|
|
483 | (3) |
|
33 Implementing The System |
|
|
486 | (2) |
|
33 Analyzing the System Design |
|
|
486 | (1) |
|
|
486 | (1) |
|
|
487 | (1) |
|
|
488 | (7) |
|
33 Tools Supporting Modeling |
|
|
489 | (1) |
|
|
489 | (1) |
|
|
490 | (1) |
|
33 Detailed Processor Model |
|
|
490 | (1) |
|
33 Cycle-Based Simulation -- Bus Model |
|
|
491 | (1) |
|
33 Instruction Set Architecture -- ISA Mode |
|
|
491 | (1) |
|
|
491 | (1) |
|
|
492 | (1) |
|
|
492 | (1) |
|
33 Distributed Co-Simulation |
|
|
493 | (1) |
|
33 Heterogeneous Modeling -- The Ptolemy Project |
|
|
493 | (1) |
|
|
494 | (1) |
|
|
494 | (1) |
|
|
495 | (2) |
|
33 Hardware--Software Co-Verification |
|
|
495 | (1) |
|
33 Tools Supporting Simulation and Verification |
|
|
496 | (1) |
|
|
496 | (1) |
|
|
496 | (1) |
|
|
497 | (2) |
|
33 Capitalization and Reuse |
|
|
497 | (1) |
|
|
497 | (1) |
|
|
497 | (1) |
|
33 Requirements Traceability and Management |
|
|
498 | (1) |
|
33 Requirements Traceability |
|
|
498 | (1) |
|
33 Requirements Management |
|
|
498 | (1) |
|
|
499 | (1) |
|
|
500 | (1) |
|
|
500 | (2) |
|
|
502 | (1) |
|
|
503 | (4) |
|
33 Hardware Test and Debug |
|
|
507 | (34) |
|
|
507 | (1) |
|
|
507 | (1) |
|
33 Putting Together a Strategy |
|
|
508 | (1) |
|
|
509 | (2) |
|
33 Formalizing the Plan -- Writing a Specification |
|
|
511 | (1) |
|
33 Executing the Plan -- The Test Procedure and Test Cases |
|
|
512 | (1) |
|
33 Applying the Strategy -- Egoless Design |
|
|
513 | (1) |
|
33 Applying the Strategy -- Design Reviews |
|
|
513 | (1) |
|
33 Applying the Strategy -- Module Debug and Test |
|
|
514 | (2) |
|
|
514 | (1) |
|
|
515 | (1) |
|
|
515 | (1) |
|
33 Applying the Strategy -- The First Steps |
|
|
516 | (3) |
|
|
516 | (1) |
|
33 Initial Tests and Measurements -- Before Applying Power |
|
|
517 | (1) |
|
33 Initial Tests and Measurements -- Immediately After Applying Power |
|
|
518 | (1) |
|
33 Applying the Strategy -- Debugging and Testing |
|
|
519 | (2) |
|
|
519 | (1) |
|
|
519 | (1) |
|
33 The Inputs and Outputs |
|
|
519 | (1) |
|
33 Sudden Failure during Debugging |
|
|
520 | (1) |
|
33 Testing and Debugging Combinational Logic |
|
|
521 | (1) |
|
|
521 | (4) |
|
33 Single Variable--Single Path |
|
|
522 | (1) |
|
|
522 | (1) |
|
|
523 | (1) |
|
33 Single Variable--Two Paths |
|
|
523 | (2) |
|
33 Masking and Untestable Faults |
|
|
525 | (1) |
|
33 Single Variable--Multiple Paths |
|
|
526 | (1) |
|
|
527 | (2) |
|
33 Debugging -- Sequential Logic |
|
|
529 | (2) |
|
|
531 | (2) |
|
|
533 | (2) |
|
33 Memories and Memory Systems |
|
|
535 | (1) |
|
33 Applying the Strategy -- Subsystem and System Test |
|
|
535 | (1) |
|
33 Applying the Strategy -- Testing for Our Customer |
|
|
536 | (1) |
|
|
536 | (1) |
|
|
536 | (1) |
|
|
536 | (1) |
|
|
537 | (1) |
|
|
537 | (1) |
|
|
537 | (1) |
|
|
537 | (1) |
|
|
537 | (1) |
|
|
538 | (1) |
|
|
538 | (1) |
|
|
539 | (1) |
|
|
540 | (1) |
|
|
|
33 Real-Time Kernels and Operating Systems |
|
|
541 | (32) |
|
|
541 | (1) |
|
|
542 | (2) |
|
33 Programs and Processes |
|
|
544 | (1) |
|
|
544 | (3) |
|
|
545 | (1) |
|
|
546 | (1) |
|
33 Threads -- Lightweight and Heavyweight |
|
|
547 | (2) |
|
|
547 | (1) |
|
|
548 | (1) |
|
|
549 | (2) |
|
33 Memory Resource Management |
|
|
549 | (1) |
|
33 System-Level Management |
|
|
549 | (1) |
|
33 Process-Level Management |
|
|
550 | (1) |
|
|
551 | (1) |
|
33 Foreground / Background Systems |
|
|
551 | (1) |
|
|
551 | (2) |
|
33 The Real-Time Operating System (RTOS) |
|
|
553 | (1) |
|
33 Operating System Architecture |
|
|
553 | (2) |
|
33 Tasks and Task Control Blocks |
|
|
555 | (9) |
|
|
555 | (1) |
|
33 The Task Control Block |
|
|
555 | (2) |
|
|
557 | (3) |
|
|
560 | (4) |
|
33 Memory Management Revisited |
|
|
564 | (6) |
|
33 Duplicate Hardware Context |
|
|
565 | (2) |
|
|
567 | (1) |
|
|
567 | (1) |
|
|
568 | (1) |
|
|
569 | (1) |
|
33 Multiprocessing Slacks |
|
|
569 | (1) |
|
|
570 | (1) |
|
|
570 | (1) |
|
|
571 | (1) |
|
|
571 | (2) |
|
33 Tasks and Task Management |
|
|
573 | (52) |
|
|
573 | (1) |
|
33 Time, Time-Based Systems, and Reactive Systems |
|
|
574 | (3) |
|
|
574 | (1) |
|
33 Reactive and Time-Based Systems |
|
|
574 | (3) |
|
|
577 | (3) |
|
|
577 | (1) |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
579 | (1) |
|
|
579 | (1) |
|
|
580 | (1) |
|
|
580 | (1) |
|
|
580 | (6) |
|
33 Asynchronous Interrupt Event Driven |
|
|
580 | (1) |
|
33 Polled and Polled with a Timing Element |
|
|
581 | (1) |
|
|
581 | (1) |
|
33 Synchronous Interrupt Event Driven |
|
|
582 | (1) |
|
33 Combined Interrupt Event Driven |
|
|
582 | (1) |
|
33 Foreground--Background |
|
|
582 | (1) |
|
|
583 | (1) |
|
33 First-Come First-Served |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
584 | (1) |
|
|
585 | (1) |
|
|
585 | (1) |
|
33 Real-Time Scheduling Considerations |
|
|
586 | (1) |
|
|
586 | (3) |
|
33 Deterministic Modeling |
|
|
586 | (2) |
|
|
588 | (1) |
|
|
589 | (1) |
|
|
589 | (1) |
|
33 Tasks, Threads, and Communication |
|
|
589 | (10) |
|
|
589 | (1) |
|
33 Intertask / Interthread Communication |
|
|
589 | (1) |
|
|
590 | (1) |
|
|
590 | (1) |
|
|
591 | (1) |
|
33 Shared Double Buffer -- Ping-Pong Buffer |
|
|
591 | (2) |
|
|
593 | (1) |
|
|
593 | (1) |
|
|
594 | (1) |
|
|
595 | (4) |
|
|
599 | (1) |
|
33 Task Cooperation, Synchronization, and Sharing |
|
|
599 | (11) |
|
33 Critical Sections and Synchronization |
|
|
600 | (4) |
|
|
604 | (2) |
|
|
606 | (1) |
|
|
606 | (1) |
|
|
607 | (2) |
|
33 Process Synchronization |
|
|
609 | (1) |
|
33 Spin Lock and Busy Waiting |
|
|
609 | (1) |
|
|
609 | (1) |
|
33 Talking and Sharing in Space |
|
|
610 | (4) |
|
33 The Bounded Buffer Problem |
|
|
610 | (2) |
|
33 The Readers and Writers Problem |
|
|
612 | (2) |
|
|
614 | (4) |
|
|
615 | (1) |
|
33 Bounded Buffer Problem with Monitor |
|
|
616 | (2) |
|
|
618 | (1) |
|
|
618 | (1) |
|
|
618 | (1) |
|
|
618 | (1) |
|
|
619 | (1) |
|
|
620 | (5) |
|
|
625 | (20) |
|
|
625 | (1) |
|
|
625 | (1) |
|
|
626 | (1) |
|
|
627 | (1) |
|
|
628 | (1) |
|
33 A Graph Theoretic Tool -- The Resource Allocation Graph |
|
|
628 | (3) |
|
|
631 | (1) |
|
|
631 | (2) |
|
|
631 | (1) |
|
|
632 | (1) |
|
|
632 | (1) |
|
|
632 | (1) |
|
|
633 | (5) |
|
33 Algorithms Based on the Resource Allocation Graph |
|
|
634 | (1) |
|
33 Banker's Algorithm and Safe States |
|
|
635 | (3) |
|
|
638 | (2) |
|
33 Detection in a Single-Instance Environment |
|
|
638 | (1) |
|
|
638 | (1) |
|
|
639 | (1) |
|
|
639 | (1) |
|
|
640 | (1) |
|
|
640 | (1) |
|
|
641 | (1) |
|
|
641 | (4) |
|
33 Performance Analysis and Optimization |
|
|
645 | (70) |
|
|
645 | (1) |
|
|
646 | (1) |
|
33 Performance or Efficiency Measures |
|
|
646 | (3) |
|
|
646 | (2) |
|
|
648 | (1) |
|
|
648 | (1) |
|
33 Complexity Analysis -- A High-Level Measure |
|
|
649 | (2) |
|
|
651 | (1) |
|
|
651 | (1) |
|
33 Working with Big Numbers |
|
|
652 | (1) |
|
|
652 | (1) |
|
|
652 | (3) |
|
|
653 | (1) |
|
|
654 | (1) |
|
|
655 | (4) |
|
33 Constant Time Statements |
|
|
655 | (1) |
|
|
656 | (1) |
|
|
656 | (1) |
|
|
657 | (1) |
|
33 Sequences of Statements |
|
|
657 | (1) |
|
33 Conditional Statements |
|
|
658 | (1) |
|
|
658 | (1) |
|
|
659 | (2) |
|
|
659 | (1) |
|
|
659 | (1) |
|
|
660 | (1) |
|
|
660 | (1) |
|
|
660 | (1) |
|
|
661 | (1) |
|
33 Analyzing Data Structures |
|
|
661 | (1) |
|
|
661 | (1) |
|
|
662 | (1) |
|
33 Instructions in Detail |
|
|
662 | (9) |
|
|
663 | (1) |
|
|
663 | (1) |
|
|
664 | (1) |
|
|
664 | (1) |
|
|
665 | (1) |
|
|
665 | (1) |
|
33 Analyzing the Flow of Control-Two Views |
|
|
666 | (1) |
|
|
666 | (1) |
|
|
666 | (1) |
|
|
667 | (1) |
|
|
668 | (2) |
|
|
670 | (1) |
|
|
671 | (1) |
|
33 Time, etc. -- A More Detailed Look |
|
|
671 | (1) |
|
|
672 | (1) |
|
|
672 | (7) |
|
|
673 | (1) |
|
|
674 | (1) |
|
33 Interrupt-Driven Environment |
|
|
674 | (1) |
|
|
674 | (1) |
|
33 Nonpreemptive Schedule |
|
|
675 | (1) |
|
33 Meeting Real-Time Constraints |
|
|
675 | (1) |
|
33 Deadline Monotonic Analysis |
|
|
676 | (1) |
|
|
676 | (1) |
|
|
677 | (1) |
|
33 Priority Ceiling Protocol |
|
|
678 | (1) |
|
|
679 | (3) |
|
|
680 | (1) |
|
|
680 | (1) |
|
|
680 | (1) |
|
|
681 | (1) |
|
|
681 | (1) |
|
|
682 | (2) |
|
|
682 | (1) |
|
33 Designing a Memory Map |
|
|
683 | (1) |
|
33 Instruction/Firmware Area |
|
|
683 | (1) |
|
|
683 | (1) |
|
|
684 | (1) |
|
33 Evaluating Performance |
|
|
684 | (1) |
|
|
685 | (1) |
|
|
685 | (1) |
|
|
685 | (1) |
|
33 Thoughts on Performance Optimization |
|
|
685 | (1) |
|
|
685 | (1) |
|
33 Performance Optimization |
|
|
686 | (1) |
|
|
686 | (1) |
|
|
687 | (5) |
|
|
692 | (1) |
|
33 Introduction -- Target Low Power |
|
|
693 | (1) |
|
33 Low Power -- A High-Level View |
|
|
693 | (9) |
|
33 Zero Power Consumption |
|
|
694 | (1) |
|
33 Static Power Consumption |
|
|
694 | (1) |
|
33 Sources of Static Power Consumption |
|
|
694 | (1) |
|
33 Addressing Static Power Consumption |
|
|
695 | (1) |
|
33 Dynamic Power Consumption |
|
|
696 | (1) |
|
33 Sources of Dynamic Power Consumption -- Hardware |
|
|
697 | (4) |
|
33 Sources of Dynamic Power Consumption -- Software |
|
|
701 | (1) |
|
33 Addressing Dynamic Power Consumption -- Hardware |
|
|
702 | (4) |
|
33 Power Management Schemes -- Hardware |
|
|
703 | (1) |
|
33 Advanced Configuration and Power Interface (ACPI) |
|
|
704 | (1) |
|
33 Dynamic Voltage and Frequency Scaling |
|
|
705 | (1) |
|
33 Addressing Dynamic Power Consumption -- Software |
|
|
706 | (3) |
|
33 Measuring Power Consumption |
|
|
707 | (1) |
|
33 Caches and Performance |
|
|
708 | (1) |
|
|
709 | (1) |
|
|
709 | (1) |
|
|
710 | (1) |
|
|
710 | (1) |
|
|
711 | (4) |
|
33 Developing the Foundation |
|
|
|
33 Working Outside of the Processor I: A Model of Interprocess Communication |
|
|
715 | (18) |
|
33 Communication and Synchronization with the Outside World |
|
|
715 | (1) |
|
33 First Steps: Understanding the Problem |
|
|
716 | (1) |
|
33 Interprocess Interaction Revisited |
|
|
717 | (2) |
|
|
719 | (3) |
|
|
719 | (1) |
|
|
720 | (1) |
|
33 Control and Synchronization |
|
|
720 | (1) |
|
|
721 | (1) |
|
|
722 | (8) |
|
33 The Transport Mechanism |
|
|
722 | (1) |
|
33 The Interconnection Topology |
|
|
722 | (1) |
|
|
723 | (1) |
|
|
724 | (3) |
|
33 Control and Synchronization |
|
|
727 | (1) |
|
|
727 | (1) |
|
|
727 | (1) |
|
|
728 | (1) |
|
|
729 | (1) |
|
33 Software Device Drivers |
|
|
729 | (1) |
|
|
729 | (1) |
|
|
730 | (1) |
|
|
730 | (1) |
|
|
730 | (3) |
|
33 Working Outside of the Processor I: Refining the Model of Interprocess Communication |
|
|
733 | (56) |
|
33 Communication and Synchronization with the Outside World |
|
|
733 | (1) |
|
33 The Local Device Model |
|
|
734 | (3) |
|
33 Control, Synchronization, and Places |
|
|
735 | (1) |
|
|
735 | (1) |
|
|
736 | (1) |
|
|
737 | (1) |
|
|
737 | (1) |
|
33 Implementing the Local Device Model -- A First Step |
|
|
737 | (8) |
|
|
737 | (1) |
|
33 Main Memory Address Space |
|
|
738 | (1) |
|
|
738 | (1) |
|
|
739 | (1) |
|
33 Main Memory Address Space -- Memory-Mapped I/O |
|
|
739 | (1) |
|
|
740 | (1) |
|
|
740 | (1) |
|
|
740 | (1) |
|
|
741 | (1) |
|
|
741 | (1) |
|
|
742 | (2) |
|
33 I/O Polls -- Program-Controlled I/O |
|
|
744 | (1) |
|
33 The Peripheral Processor |
|
|
744 | (1) |
|
33 Implementing the Local Device Model -- A Second Step |
|
|
745 | (2) |
|
33 Information Interchange -- An Event |
|
|
745 | (1) |
|
33 Information Interchange -- A Shared Variable |
|
|
746 | (1) |
|
33 Information Interchange -- A Message |
|
|
746 | (1) |
|
33 Implementing an Event-Driven Exchange -- Interrupts and Polling |
|
|
747 | (8) |
|
|
747 | (2) |
|
|
749 | (1) |
|
33 Single Interrupt Line with Single Device |
|
|
749 | (1) |
|
33 Single Interrupt Line with Multiple Devices |
|
|
749 | (4) |
|
33 Multiple Interrupt Lines |
|
|
753 | (1) |
|
|
754 | (1) |
|
|
755 | (7) |
|
33 Asynchronous Information Exchange |
|
|
756 | (1) |
|
|
756 | (1) |
|
33 Strobe with Acknowledge |
|
|
757 | (1) |
|
|
757 | (1) |
|
|
758 | (1) |
|
|
759 | (1) |
|
33 Synchronous Information Exchange |
|
|
759 | (1) |
|
|
759 | (3) |
|
33 The Remote Device Model |
|
|
762 | (2) |
|
33 Places and Information |
|
|
764 | (1) |
|
33 Control and Synchronization |
|
|
764 | (1) |
|
|
764 | (1) |
|
33 Implementing the Remote Device Model -- A First Step |
|
|
764 | (7) |
|
33 The OSI and TCP/IP Protocol Stacks |
|
|
765 | (2) |
|
|
767 | (1) |
|
33 OSI -- Data Link Layer |
|
|
767 | (1) |
|
33 TCP/IP -- Host to Network |
|
|
767 | (1) |
|
|
767 | (1) |
|
33 TCP/IP -- Internet Layer |
|
|
767 | (1) |
|
33 OSI -- Transport Layer |
|
|
767 | (1) |
|
33 TCP/IP -- Transport Layer |
|
|
768 | (1) |
|
|
768 | (1) |
|
33 OSI -- Presentation Layer |
|
|
768 | (1) |
|
33 OSI -- Application Layer |
|
|
768 | (1) |
|
33 TCP/IP-Application Layer |
|
|
768 | (1) |
|
|
769 | (1) |
|
33 The Client-Server Model |
|
|
769 | (1) |
|
33 The Peer-to-Peer Model |
|
|
769 | (1) |
|
33 The Group Multicast Model |
|
|
770 | (1) |
|
33 Implementing the Remote Device Model -- A Second Step |
|
|
771 | (2) |
|
|
771 | (1) |
|
|
771 | (1) |
|
33 Message Control and Synchronization |
|
|
772 | (1) |
|
|
772 | (1) |
|
|
772 | (1) |
|
33 Working with Remote Tasks |
|
|
773 | (8) |
|
33 Preliminary Thoughts on Working with Remote Tasks |
|
|
773 | (1) |
|
33 Local vs. Remote Addresses and Data |
|
|
774 | (1) |
|
33 Repeated Task Execution |
|
|
774 | (1) |
|
33 Node Failure, Link Failure, Message Loss |
|
|
775 | (1) |
|
33 Procedures and Remote Procedures |
|
|
775 | (1) |
|
33 Calling a Remote Procedure -- RFC Semantics |
|
|
775 | (2) |
|
|
777 | (1) |
|
33 Message Source and Destination |
|
|
777 | (1) |
|
|
778 | (1) |
|
33 RPC Interlace Definition |
|
|
779 | (1) |
|
33 Node Failure, Link Failure, Message Loss |
|
|
779 | (1) |
|
|
779 | (1) |
|
|
780 | (1) |
|
33 Group Multicast Revisited |
|
|
781 | (1) |
|
|
781 | (1) |
|
|
781 | (1) |
|
33 Connecting to Distributed Processes -- Pipes, Sockets, and Streams |
|
|
782 | (2) |
|
|
782 | (1) |
|
|
782 | (2) |
|
|
784 | (1) |
|
|
784 | (1) |
|
|
784 | (1) |
|
|
785 | (1) |
|
|
786 | (3) |
|
33 Working Outside of the Processor II: Interfacing to Local Devices |
|
|
789 | (48) |
|
33 Shared Variable I/O -- Interfacing to Peripheral Devices |
|
|
789 | (1) |
|
33 The Shared Variable Exchange |
|
|
790 | (1) |
|
33 Generating Analog Signals |
|
|
790 | (6) |
|
33 Binary Weighted Digital-to-Analog Converter |
|
|
791 | (3) |
|
33 R/2R Ladder Digital-to-Analog Converter |
|
|
794 | (2) |
|
|
796 | (1) |
|
|
796 | (1) |
|
|
796 | (1) |
|
|
797 | (1) |
|
|
797 | (9) |
|
33 Dual Slope Analog-to-Digital Conversion |
|
|
797 | (4) |
|
33 Successive Approximation Analog-to-Digital Conversion |
|
|
801 | (2) |
|
|
803 | (1) |
|
33 VCO Analog-to-Digital Conversion |
|
|
804 | (2) |
|
|
806 | (2) |
|
|
808 | (1) |
|
|
808 | (4) |
|
|
809 | (1) |
|
33 Making the Measurement |
|
|
809 | (1) |
|
33 Working with Nonlinear Devices |
|
|
810 | (2) |
|
33 Generating Digital Signals |
|
|
812 | (3) |
|
33 Motors and Motor Control |
|
|
812 | (1) |
|
|
812 | (2) |
|
|
814 | (1) |
|
|
814 | (1) |
|
33 Controlling DC and Servo Motors |
|
|
815 | (6) |
|
|
815 | (1) |
|
|
816 | (1) |
|
33 Controlling Stepper Motors |
|
|
817 | (2) |
|
|
819 | (2) |
|
|
821 | (1) |
|
|
821 | (3) |
|
|
821 | (1) |
|
|
822 | (2) |
|
33 Measuring Digital Signals |
|
|
824 | (7) |
|
|
824 | (1) |
|
33 Working with Asynchronous Signals |
|
|
825 | (1) |
|
33 Buffering Input Signals |
|
|
826 | (1) |
|
|
827 | (1) |
|
33 Measuring Frequency and Time Interval |
|
|
827 | (1) |
|
33 Measuring the Period-An Internal Implementation |
|
|
827 | (1) |
|
33 Measuring the Period -- An External Implementation |
|
|
828 | (1) |
|
33 Counting for a Known Interval -- An Internal Implementation |
|
|
829 | (1) |
|
33 Counting for a Known Interval -- An External Implementation |
|
|
830 | (1) |
|
|
831 | (1) |
|
|
831 | (1) |
|
|
832 | (1) |
|
|
832 | (5) |
|
33 Working Outside of the Processor III: Interfacing to Remote Devices |
|
|
837 | (32) |
|
33 Common Network-Based I/O Architectures |
|
|
837 | (1) |
|
|
838 | (1) |
|
33 RS-232/EIA-232 -- Asynchronous Serial Communication |
|
|
838 | (7) |
|
|
838 | (1) |
|
|
839 | (1) |
|
|
840 | (1) |
|
33 What they Think It Is ... |
|
|
840 | (2) |
|
|
842 | (1) |
|
33 Asynchronous Serial Communication |
|
|
842 | (1) |
|
33 Configuring the Interface |
|
|
842 | (1) |
|
33 Data Recovery and Timing |
|
|
843 | (1) |
|
33 EIA-232 Interface Signals |
|
|
844 | (1) |
|
|
845 | (1) |
|
33 The Universal Serial Bus -- Synchronous Serial Communication |
|
|
845 | (10) |
|
|
846 | (1) |
|
33 The Universal Serial Bus Architecture |
|
|
846 | (1) |
|
33 The Universal Serial Bus Protocol |
|
|
847 | (1) |
|
|
848 | (1) |
|
|
848 | (1) |
|
|
849 | (1) |
|
|
850 | (1) |
|
|
851 | (1) |
|
|
852 | (1) |
|
33 The Physical Environment |
|
|
853 | (1) |
|
|
853 | (1) |
|
|
853 | (1) |
|
33 Cables and Cable Power |
|
|
853 | (1) |
|
33 Detecting Device Attachment and Speed |
|
|
854 | (1) |
|
33 Differential Pair Signaling |
|
|
855 | (1) |
|
|
855 | (1) |
|
33 I2C -- A Local Area Network |
|
|
855 | (5) |
|
|
855 | (1) |
|
33 Electrical Considerations |
|
|
856 | (1) |
|
|
857 | (1) |
|
|
858 | (1) |
|
|
859 | (1) |
|
|
859 | (1) |
|
|
859 | (1) |
|
|
859 | (1) |
|
33 The Controller Area Network -- The CAN Bus |
|
|
860 | (5) |
|
|
860 | (1) |
|
33 Electrical Considerations |
|
|
861 | (1) |
|
|
862 | (1) |
|
|
862 | (1) |
|
|
863 | (1) |
|
|
863 | (1) |
|
|
863 | (1) |
|
33 Transmission and Arbitration |
|
|
863 | (1) |
|
|
864 | (1) |
|
|
865 | (1) |
|
|
865 | (1) |
|
|
866 | (1) |
|
|
866 | (3) |
|
33 Programmable Logic Devices |
|
|
869 | (24) |
|
|
869 | (1) |
|
33 Why Use Programmable Logic Devices? |
|
|
870 | (1) |
|
|
871 | (3) |
|
|
874 | (2) |
|
|
874 | (1) |
|
33 Programmable Array Logic -- PAL |
|
|
875 | (1) |
|
33 Programmable Logic Array -- PLA |
|
|
875 | (1) |
|
33 Programmable Logic Sequencer -- PLS |
|
|
876 | (1) |
|
33 PLA vs. PAL vs. (P)ROM |
|
|
876 | (1) |
|
33 Programmable and Reprogrammable Technologies |
|
|
876 | (3) |
|
33 Programmable Technologies |
|
|
876 | (1) |
|
33 Reprogrammable Technologies |
|
|
877 | (2) |
|
|
879 | (6) |
|
|
879 | (2) |
|
|
881 | (1) |
|
|
882 | (3) |
|
|
885 | (1) |
|
|
885 | (6) |
|
33 Lane Departure Detection Implementation and Acceleration |
|
|
886 | (1) |
|
|
886 | (1) |
|
|
886 | (1) |
|
|
887 | (1) |
|
|
888 | (1) |
|
|
888 | (1) |
|
33 Local Area Tracking System -- LATS with uCLinux™ OS |
|
|
888 | (1) |
|
|
888 | (1) |
|
|
889 | (1) |
|
|
889 | (1) |
|
|
890 | (1) |
|
|
890 | (1) |
|
|
891 | (1) |
|
|
891 | (1) |
|
|
892 | (1) |
|
33 Practical Considerations Signal Behavior in the Real World -- Part 1 -- Noise and Crosstalk |
|
|
893 | (16) |
|
33 Introduction -- The Real World Again |
|
|
893 | (1) |
|
|
893 | (1) |
|
33 Power Supply and Ground Noise |
|
|
894 | (9) |
|
|
894 | (1) |
|
33 Power Distribution Wiring |
|
|
895 | (1) |
|
|
895 | (1) |
|
|
896 | (1) |
|
|
897 | (2) |
|
33 Computing the Board Level Bypass Capacitor |
|
|
899 | (1) |
|
33 Local Bypass Capacitors |
|
|
900 | (1) |
|
33 Computing the Local Bypass Capacitors |
|
|
901 | (2) |
|
33 Power and Ground Planes |
|
|
903 | (1) |
|
|
903 | (4) |
|
|
904 | (1) |
|
33 Preventing or Reducing Crosstalk |
|
|
905 | (1) |
|
|
905 | (2) |
|
|
907 | (1) |
|
|
907 | (1) |
|
|
908 | (1) |
|
33 Practical Considerations Signal Behavior in the Real World -- Part 2 -- High-Speed Signaling |
|
|
909 | (72) |
|
33 Introduction -- The Real World Yet Again |
|
|
909 | (1) |
|
|
910 | (4) |
|
|
911 | (1) |
|
|
911 | (1) |
|
|
911 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
912 | (1) |
|
|
913 | (1) |
|
33 Transmitter Output Timing Jitter |
|
|
913 | (1) |
|
|
913 | (1) |
|
33 The Working Environment |
|
|
914 | (10) |
|
33 The Signaling Environment |
|
|
914 | (3) |
|
|
917 | (1) |
|
|
918 | (1) |
|
|
918 | (1) |
|
|
919 | (1) |
|
33 Distributed Versus Lumped |
|
|
920 | (1) |
|
|
921 | (1) |
|
|
921 | (2) |
|
33 Electromagnetic Interference in Point-to-Point Wiring |
|
|
923 | (1) |
|
33 EMI to Crosstalk in Point-to-Point Wiring |
|
|
923 | (1) |
|
|
924 | (13) |
|
33 The Lossless Transmission Line |
|
|
926 | (1) |
|
33 The Finite Transmission Line |
|
|
927 | (2) |
|
|
929 | (1) |
|
33 Reflections -- Termination Schemes |
|
|
930 | (1) |
|
33 Unterminated Signal Path |
|
|
931 | (1) |
|
33 Low Source Impedance -- TTL/ECL Drivers |
|
|
931 | (1) |
|
33 High Source Impedance -- CMOS Drivers |
|
|
932 | (1) |
|
33 Parallel Termination -- End Terminated |
|
|
932 | (2) |
|
33 End Terminated -- Biased Termination |
|
|
934 | (1) |
|
33 End Terminated -- Split Termination |
|
|
934 | (2) |
|
33 Source Terminated -- Series Termination |
|
|
936 | (1) |
|
33 Differential Signaling |
|
|
937 | (1) |
|
|
937 | (1) |
|
33 Signals in the Nonideal (Real) World |
|
|
937 | (2) |
|
|
939 | (1) |
|
33 Examining the Environment |
|
|
940 | (3) |
|
|
940 | (1) |
|
|
940 | (1) |
|
33 Generating the Eye Diagram |
|
|
940 | (2) |
|
33 Interpreting the Eye Diagram |
|
|
942 | (1) |
|
33 Back of the Envelope Examination |
|
|
943 | (2) |
|
33 A First Step Check List |
|
|
943 | (1) |
|
|
943 | (1) |
|
|
944 | (1) |
|
|
945 | (1) |
|
|
946 | (1) |
|
|
946 | (1) |
|
|
947 | (2) |
|
33 Verilog Overview: The Verilog Hardware Description Language |
|
|
949 | (32) |
|
|
949 | (2) |
|
33 Creating a Verilog Program |
|
|
951 | (1) |
|
33 Some Concepts in a Verilog Source File |
|
|
951 | (1) |
|
|
951 | (1) |
|
|
952 | (1) |
|
33 Inputs and Outputs Declarations |
|
|
952 | (1) |
|
|
953 | (1) |
|
33 Declaring Multibit Signals |
|
|
953 | (1) |
|
33 Subsets of Multibit Expressions |
|
|
954 | (1) |
|
33 $display and $monitor Statements |
|
|
955 | (1) |
|
33 $stop and $finish Statements |
|
|
955 | (1) |
|
|
956 | (1) |
|
33 Three Models -- The Gate Level, the Dataflow, and the Behavioral |
|
|
956 | (1) |
|
33 The Structural/Gate-Level Model |
|
|
956 | (1) |
|
|
957 | (1) |
|
|
958 | (1) |
|
|
959 | (1) |
|
|
960 | (3) |
|
|
963 | (1) |
|
|
963 | (1) |
|
|
964 | (2) |
|
|
966 | (1) |
|
|
966 | (1) |
|
|
966 | (2) |
|
|
968 | (1) |
|
|
969 | (4) |
|
|
973 | (3) |
|
33 Testing and Verifying the Circuit |
|
|
976 | (1) |
|
|
977 | (1) |
|
|
977 | (2) |
|
|
979 | (1) |
|
|
979 | (1) |
|
33 Performing the Simulation |
|
|
979 | (1) |
|
|
980 | (1) |
Further Reading |
|
981 | (10) |
Index |
|
991 | |