A Hands-On Guide to Designing Embedded Systems.
Saved in:
: | |
---|---|
TeilnehmendeR: | |
Place / Publishing House: | Norwood : : Artech House,, 2021. ©2021. |
Year of Publication: | 2021 |
Edition: | 1st ed. |
Language: | English |
Online Access: | |
Physical Description: | 1 online resource (269 pages) |
Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Table of Contents:
- Intro
- A Hands-On Guide to Designing Embedded Systems
- Contents
- Acknowledgments
- Introduction
- CHAPTER 1 Programmatic and System-Level Considerations
- 1.1 Introduction: SensorsThink
- 1.2 Product Development Stages
- 1.3 Product Development Stages: Tailoring
- 1.4 Product Development: After Launch
- 1.5 Requirements
- 1.5.1 The V-Model
- 1.5.2 SensorsThink: Product Requirements
- 1.5.3 Creating Useful Requirements
- 1.5.4 Requirements: Finishing Up
- 1.6 Architectural Design
- 1.6.1 SEBOK: An Invaluable Resource
- 1.6.2 SensorsThink: Back to the Journey
- 1.6.3 Systems Engineering: An Overview
- 1.6.4 Architecting the System, Logically
- 1.6.5 Keep Things in Context (Diagrams)
- 1.6.6 Monitor Your Activity (Diagrams)
- 1.6.7 Know the Proper Sequence (Diagrams)
- 1.6.8 Architecting the System Physically
- 1.6.9 Physical Architecture: Playing with Blocks
- 1.6.10 Trace Your Steps
- 1.6.11 System Verification and Validation: Check Your Work
- 1.7 Engineering Budgets
- 1.7.1 Types of Budgets
- 1.7.2 Engineering Budgets: Some Examples
- 1.7.3 Engineering Budgets: Finishing Up
- 1.8 Interface Control Documents
- 1.8.1 Sticking Together: Signal Grouping
- 1.8.2 Playing with Legos: Connectorization
- 1.8.3 Talking Among Yourselves: Internal ICDs
- 1.9 Verification
- 1.9.1 Verifying Hardware
- 1.9.2 How Much Testing Is Enough?
- 1.9.3 Safely Navigating the World of Testing
- 1.9.4 A Deeper Dive into Derivation (of Test Cases)
- 1.10 Engineering Governance
- 1.10.1 Not Just Support for Design Reviews
- 1.10.2 Engineering Rule Sets
- 1.10.3 Compliance
- 1.10.4 Review Meetings
- References
- CHAPTER 2 Hardware Design Considerations
- 2.1 Component Selection
- 2.1.1 Key Component Identification for the SoC Platform
- 2.1.2 Key Component Selection Example: The SoC.
- 2.1.3 Key Component Selection Example: Infrared Sensor
- 2.1.4 Key Component Selection: Finishing Up
- 2.2 Hardware Architecture
- 2.2.1 Hardware Architecture for the SoC Platform
- 2.2.2 Hardware Architecture: Interfaces
- 2.2.3 Hardware Architecture: Data Flows
- 2.2.4 Hardware Architecture: Finishing Up
- 2.3 Designing the System
- 2.3.1 What to Worry About
- 2.3.2 Power Supply Analysis, Architecture, and Simulation
- 2.3.3 Processor and FPGA Pinout Assignments
- 2.3.4 System Clocking Requirements
- 2.3.5 System Reset Requirements
- 2.3.6 System Programming Scheme
- 2.3.7 Summary
- 2.3.8 Example: Zynq Power Sequence Requirements
- 2.4 Decoupling your Components
- 2.4.1 Decoupling: By the Book
- 2.4.2 To Understand the Component, You Must Be the Component
- 2.4.3 Types of Decoupling
- 2.4.4 Example: Zynq-7000 Decoupling
- 2.4.5 Additional Thoughts: Specialized Decoupling
- 2.4.6 Additional Thoughts: Simulation
- 2.5 Connect with Your System
- 2.5.1 Contemplating Connectors
- 2.5.2 Example: System Communications
- 2.6 Extend the Life of the System: De-Rate
- 2.6.1 Why De-Rate?
- 2.6.2 What Can Be De-Rated?
- 2.6.3 Example: De-Rating the Zynq-7000
- 2.6.4 Additional Thoughts: Exceptions to the Rule
- 2.7 Test, Test, Test
- 2.7.1 Back to Basics: Pre-Power-On Checklist
- 2.7.2 Check for Signs of Life: Crawl Before Walking
- 2.7.3 Roll Up Your Sleeves and Get Ready to Run
- 2.7.4 Example: I2C Interface
- 2.7.5 Additional Thoughts
- 2.8 Integrity: Important for Electronics
- 2.8.1 Power Integrity
- 2.8.2 Signal Integrity
- 2.8.3 Digging Deeper into Power Integrity
- 2.8.4 Digging Deeper into Signal Integrity
- 2.8.5 Example: ULPI Pre-Layout Analysis
- 2.8.6 Suggested Additional Reading
- 2.9 PCB Layout: Not for the Faint of Heart
- 2.9.1 Floor Planning
- 2.9.2 Follow the Rats
- 2.9.3 Mechanical Constraints.
- 2.9.4 Electrical Constraints
- 2.9.5 Stack-Up Design
- 2.9.6 Experience Matters
- References
- CHAPTER 3 FPGA Design Considerations
- 3.1 Introduction
- 3.2 FPGA Development Process
- 3.2.1 Introduction to the Target Device
- 3.2.2 FPGA Requirements
- 3.2.3 FPGA Architecture
- 3.3 Accelerating Design Using IP Libraries
- 3.4 Pin Planning and Constraints
- 3.4.1 Physical Constraints
- 3.4.2 Timing Constraints
- 3.4.3 Timing Exceptions
- 3.4.4 Physical Constraints: Placement
- 3.5 Clock Domain Crossing
- 3.6 Test Bench and Verification
- 3.6.1 What Is Verification?
- 3.6.2 Self-Checking Test Benches
- 3.6.3 Corner Cases, Boundary Conditions, and Stress Testing
- 3.6.4 Code Coverage
- 3.6.5 Test Functions and Procedures
- 3.6.6 Behavioral Models
- 3.6.7 Using Text IO Files
- 3.6.8 What Else Might We Consider?
- 3.7 Finite State Machine Design
- 3.7.1 Defining a State Machine
- 3.7.2 Algorithmic State Diagrams
- 3.7.3 Moore or Mealy: What Should I Choose?
- 3.7.4 Implementing the State Machine
- 3.7.5 State Machine Encoding
- 3.7.6 Increasing Performance of State Machines
- 3.7.7 Good Design Practices for FPGA Implementation
- 3.7.8 FLIR Lepton Interface
- 3.8 Defensive State Machine Design
- 3.8.1 Detection Schemes
- 3.8.2 Hamming Schemes
- 3.8.3 Deadlock and Other Issues
- 3.8.4 Implementing Defensive State Machines in Xilinx Devices
- 3.9 How Does FPGA Do Math?
- 3.9.1 Representation of Numbers
- 3.10 Fixed Point Mathematics
- 3.10.1 Fixed-Point Rules
- 3.10.2 Overflow
- 3.10.3 Real-World Implementation
- 3.10.4 RTL Implementation
- 3.11 Polynomial Approximation
- 3.11.1 The Challenge with Some Algorithms
- 3.11.2 Capitalize on FPGA Resources
- 3.11.3 Multiple Trend Lines Selected by Input Value
- 3.12 The CORDIC Algorithm
- 3.13 Convergence
- 3.14 Where Are These Used
- 3.15 Modeling in Excel.
- 3.16 Implementing the CORDIC
- 3.17 Digital Filter Design and Implementation
- 3.17.1 Filter Types and Topologies
- 3.17.2 Frequency Response
- 3.17.3 Impulse Response
- 3.17.4 Step Response
- 3.17.5 Windowing the Filter
- 3.18 Fast Fourier Transforms
- 3.18.1 Time or Frequency Domain?
- 3.19 How Do We Get There?
- 3.19.1 Where Do We Use These?
- 3.19.2 FPGA-Based Implementation
- 3.19.3 Higher-Speed Sampling
- 3.20 Working with ADC and DAC
- 3.20.1 ADC and DAC Key Parameters
- 3.20.2 The Frequency Spectrum
- 3.20.3 Communication
- 3.20.4 DAC Filtering
- 3.20.5 In-System Test
- 3.21 High-Level Synthesis
- CHAPTER 4 When Reliability Counts
- 4.1 Introduction to Reliability
- 4.2 Mathematical Interpretation of System Reliability
- 4.2.1 The Bathtub Curve
- 4.2.2 Failure Rate (λ)
- 4.2.3 Early Life Failure Rate
- 4.2.4 Key Terms
- 4.2.5 Repairable and Nonrepairable Systems
- 4.2.6 MTTF, MTBF, and MTTR
- 4.2.7 Maintainability
- 4.2.8 Availability
- 4.3 Calculating System Reliability
- 4.3.1 Scenario 1: All Critical Components Connected in Series
- 4.3.2 Scenario 2: All Critical Components Connected in Parallel
- 4.3.3 Scenario 3: All Critical Components Are Connected in Series-Parallel Configuration
- 4.4 Faults, Errors, and Failure
- 4.4.1 Classification of Faults
- 4.4.2 Fault Prevention Versus Fault Tolerance: Which One Can Address System Failure Better?
- 4.5 Fault Tolerance Techniques
- 4.5.1 Redundancy Technique for Hardware Fault Tolerance
- 4.5.2 Software Fault Tolerance
- 4.6 Worst-Case Circuit Analysis
- 4.6.1 Sources of Variation
- 4.6.2 Numerical Analysis Using SPICE Modeling
- Selected Bibliography
- About the Authors
- Index.