ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ Newnes, 2012, -625 pp.<div class="bb-sep"></div>This Expert Guide gives you the techniques and technologies in digital signal processing (DSP) to optimally design and implement your embedded system. Written by experts with a solutions focus, this encyclopedic reference gives you an indi
DSP for Embedded and Real-Time Systems: Expert Guide
β Scribed by Robert Oshana
- Publisher
- Newnes
- Year
- 2012
- Tongue
- English
- Leaves
- 514
- Edition
- 1
- Category
- Library
No coin nor oath required. For personal study only.
β¦ Synopsis
This Expert Guide gives you the techniques and technologies in digital signal processing (DSP) to optimally design and implement your embedded system. Written by experts with a solutions focus, this encyclopedic reference gives you an indispensable aid to tackling the day-to-day problems you face in using DSP to develop embedded systems.
With this book you will learn:
- A range of development techniques for developing DSP code
- Valuable tips and tricks for optimizing DSP software for maximum performance
- The various options available for constructing DSP systems from numerous software components
- The tools available for developing DSP applications
- Numerous practical guidelines from experts with wide and lengthy experience of DSP application development
Features:
- Several areas of research being done in advanced DSP technology
- Industry case studies on DSP systems development
DSP for Embedded and Real-Time Systems is the reference for both the beginner and experienced, covering most aspects of using todayβs DSP techniques and technologies for designing and implementing an optimal embedded system.
β¦ Table of Contents
0iii_Front-Matter
DSP for Embedded and Real-Time Systems: Expert Guide
0iv_Copyright
Copyright
0xv_Author-Biographies
Author Biographies
0xxiii_DSP-in-Embedded-Systems-A-Roadmap
DSP in Embedded Systems: A Roadmap
Phase 1 β Product Specification
Phase 2 β Algorithmic Modeling
Phase 3 β Hardware/Software Partitioning
Phase 4 β Iteration and Selection
Phase 5 β Real-Time Software Design
1. Part 1; Identify the stimuli for processing and required responses to the stimuli
2. Identify timing constraints for each stimuli and response
3. Aggregate stimulus and response processing into concurrent processes
4. Design algorithms to process stimulus and response, meeting the given timing requirements
5. Design a scheduling solution ensuring processes are scheduled in time to meet their deadlines
Phase 6 β Hardware/Software Integration
01_Chapter-1-Introduction-to-Digital-Signal-Processing
1 - Introduction to Digital Signal Processing
What is digital signal processing?
Advantages of DSP
DSP systems
Analog-to-digital conversion
The Nyquist criteria
Digital-to-analog conversion
Applications for DSPs
Low cost DSP applications
Power efficient DSP applications
High performance DSP applications
Conclusion
015_Chapter-2-Overview-of-Real-time-and-Embedded-Systems
2 - Overview of Real-time and Embedded Systems
Real-time systems
Soft and hard real-time systems
Differences between real-time and time-shared systems
DSP systems are hard real-time
Hard real-time systems
Real-time event characteristics
Efficient execution and the execution environment
Resource management
Challenges in real-time system design
Response time
Recovering from failures
Distributed and multi-processor architectures
Initialization of the system
Processor interfaces
Load distribution
Centralized resource allocation and management
Embedded systems
Embedded systems are reactive systems
Summary
029_Chapter-3-Overview-of-Embedded-Systems-Development-Lifecycle-Using-DSP
3 - Overview of Embedded Systems Development Lifecycle Using DSP
Embedded systems
The embedded system lifecycle using DSP
Step 1 β Examine the overall needs of the system
What is a DSP solution?
Step 2 β Select the hardware components required for the system
Hardware gates
Software programmable
General purpose processors
Microcontrollers
FPGA solutions
Digital signal processors
A general signal processing solution
DSP acceleration decisions
Step 3 β Understand DSP basics and architecture
Models of DSP processing
Input/output options
Calculating DSP performance
DSP software
Code tuning and optimization
Typical DSP development flow
Putting it all together
063_Chapter-4-Programmable-DSP-Architectures
4 - Programmable DSP Architectures
Common features of programmable DSP architectures
DSP core and ISA features
Features of the programmable DSP space
Issues surrounding use of SIMD operations
Predicated execution
Memory architecture
Access sizes
Alignment issues
Data operations
075_Chapter-5-FPGA-in-Wireless-Communications-Applications
6 - FPGA in Wireless Communications Applications
Introduction
Spatial multiplexing MIMO systems
Flex-Sphere detector
Tree Traversal for Flex-Sphere detection
Modified real-valued decomposition (M-RVD) ordering
FPGA design of the configurable detector for SDR handsets
PED computations
Configurable design
Number of Antennas
Modulation Order
Modified real-valued decomposition (M-RVD)
Timing analysis
Xilinx FPGA implementation results for Mr=3
Xilinx FPGA implementation results for Mr=3
Simulation results
Beamforming for WiMAX
Beamforming in wideband systems
Computational requirements and performance of a beamforming system
Beamforming experiments using WARPLab
WARPLab framework
Experiment setup and results
Conclusion
References
0103_Chapter-6-The-DSP-Hardware-Software-Continuum
6 - The DSP Hardware/Software Continuum
Introduction
FPGA in embedded design
FPGA computational throughput and power
Algorithm suitability
Fixed point versus floating point
Implementation challenges
Application specific integrated circuits versus FPGA
Advantages of ASICs over FPGAs
Software programmable digital signal processing
General purpose embedded cores
Putting it all together
Architecture
Application driven design
Bibliography
0113_Chapter-7-Overview-of-DSP-Algorithms
7 - Overview of DSP Algorithms
Applications of DSP
Systems and signals
DSP systems
Aliasing
The basic DSP system
Filters
FIR filters
IIR filters
Frequency analysis
Convolution
Correlation
Designing an FIR filter
Parks-McClellan algorithm
Windowing
Adding feedback using IIR filters
Algorithm implementation β DSP architecture
Number format
Overflow and saturation
Implementing an FIR filter
Utilizing on-chip RAM
Special MAC instruction
Block filtering
Separate program and data busses
Zero overhead looping
Circular buffers
System issues
Conclusion
0133_Chapter-8-High-level-Design-Tools-for-Complex-DSP-Applications
8 - High-level Design Tools for Complex DSP Applications
High-level synthesis design methodology
High-level design tools
Catapult C
PICO
System Generator
Case studies
LDPC decoder design example using PICO
Matrix multiplication design example using Catapult C
QR decomposition design example using System Generator
Conclusion
References
0157_Chapter-9-Optimizing-DSP-Software-Benchmarking-and-Profiling-DSP-Systems
9 - Optimizing DSP Software β Benchmarking and Profiling DSP Systems
Introduction
Writing a test harness
Test harness inputs, outputs, and correctness checking
Isolating a DSP kernel
Protecting against aggressive build tools
Allowing flexibility for code placement
Modeling of true system behaviors
Cache effects
Memory latency effects
System effects
RTOS overhead
Execution in a multicore/multidevice environment
Methods for measuring performance
Time-based measurement
Hardware timers
Performance counter-based measurement
Profiler-based measurement
Measuring the measurement
Excluding non-related events
Interrupts
Runtime library functions used in the benchmark
Simulated measurement
Hardware measurement
Profiling results
How to interpret results
How to use them to optimize code
0169_Chapter-10-Optimizing-DSP-Software-High-level-Languages-and-Programming-Models
10 - Optimizing DSP Software β High-level Languages and Programming Models
Assembly language
Advantages and disadvantages
C Programming language with intrinsics and pragmas
Outline placeholder
Standard C integral types
FIR in C
Intrinsic functions
Fractional types and saturation
Floating point
Custom types
Pragmas
Function pragmas
Statement pragmas
Variable pragmas
Embedded C
C++ for embedded systems
Auto-vectorizing compiler technology
Matlab, Labview and FFTW-like generator suites
Matlab and native compiled code
Native code to Matlab and silicon emulation
0181_Chapter-11-Optimizing-DSP-Software-Code-Optimization
11- Optimizing DSP Software β Code Optimization
Optimization process
Using the development tools
Compiler optimization
Basic compiler configuration
Target architecture
Endianness
Memory model
Initial optimization level
Enabling optimizations
Additional optimization configurations
Using the profiler
Analyzing compiled code
Background β understanding the DSP architecture
Resources
Basic C optimization techniques
Choosing the right data types
Use of intrinsics to leverage DSP features
Functions
Calling conventions
Pointers and memory access
Ensuring alignment
Restrict and pointer aliasing
Loops
Communicating loop count information
Hardware loops
Additional tips and tricks
Memory contention
Use of unaligned accesses
Cache accesses
Inline small functions
Use vendor DSP libraries
General loop transformations
Loop unrolling
Background
Implementation
Multisamping
Background
Implementation procedure
Implementation
Partial summation
Background
Implementation procedure
Implementation
Software pipelining
Background
Implementation
Example application of optimization techniques: cross correlation
Setup
Initial port
Original implementation
Performance analysis β Freescale StarCore SC3850 Core
Step 1: Use intrinsics for fractional operations and specify loop counts
Performance analysis β Freescale StarCore SC3850 Core
Step 2: Specify data alignment and modify for multisampling algorithm
Performance analysis β Freescale StarCore SC3850 Core
Step 3: Assembly language optimization
Performance analysis β Freescale StarCore SC3850 Core
0217_Chapter-12-DSP-Optimization-Memory-Optimization
12 - DSP Optimization β Memory Optimization
Introduction
Code size optimizations
Compiler flags and flag mining
Target ISA for size and performance tradeoffs
Tuning the ABI for code size
Caveat emptor: compiler optimization orthogonal to code size!
Memory layout optimization
Overview of memory optimization
Focusing optimization efforts
Vectorization and the dynamic code-compute ratio
Pointer aliasing in C
Data structures, arrays of data structures, and adding it all up!
Loop optimizations for memory performance
Data alignmentβs rippling effects
Selecting data types for big payoffs
0241_Chapter-13-Software-Optimization-for-Power-Consumption
13 - Software Optimization for Power Consumption
Introduction
Understanding power consumption
Static versus dynamic power consumption
Static power consumption
Dynamic power consumption
Maximum, average, worst case, and typical power
Measuring power consumption
Measuring power using an ammeter
Measuring power using a Hall Sensor type IC
Voltage regulator module power supply ICs
slink8
Static power measurement
Dynamic power measurement
Profiling your applicationβs power consumption
Minimizing power consumption
Hardware support
Low power modes
Freescaleβs MSC815x low power modes
Texas Instruments C6000 low power modes
Clock and voltage control
Considerations and usage examples of low power modes
Low power example
At application start up
During application runtime
Optimizing data flow
Reducing power consumption for memory accesses
DDR overview
DDR data flow optimization for power
Optimizing power by timing
Optimizing with interleaving
Optimizing memory software data organization
Optimizing general DDR configuration
Optimizing DDR burst accesses
SRAM and cache data flow optimization for power
SRAM (all memory) and code size
SRAM power consumption and parallelization
Data transitions and power consumption
Cache utilization and SoC memory layout
Explanation of Locality
Explanation of Set-Associativity
Memory layout for cache
Write back versus write through caches
Cache coherency functions
Compiler cache optimizations
Peripheral/communication utilization
DMA of data versus CPU
Coprocessors
System bus configuration
Peripheral speed grades and bus width
Peripheral to core communication
Interrupt processing
Algorithmic optimization
Compiler optimization levels
Instruction packing
Loop unrolling
Software pipelining
Eliminating recursion
Reducing accuracy
Low-power code sequences and data patterns
Summary and closing remarks
References
0291_Chapter-14-DSP-Operating-Systems
14 - DSP Operating Systems
Introduction
DSP OS fundamentals
Real-time constraints
Processes, threads and interrupts
Process
Thread
Task
Interrupt
Interrupt latency
Software interrupt
Multicore considerations
Peripherals sharing
Synchronization primitives
Memory management
Memory allocation
Virtual memory and memory protection
Different types of memory
Networking
Inter-processor communication
Internetworking
Scheduling
Reference model
Timing constraints
Timing characteristics
Precedence graph
Preemptable vs. non-preemptable scheduling
Blocking vs. non-blocking jobs
Cooperative scheduling
Types of scheduling
Multicore considerations on scheduling
Offline scheduling and its possible implementation
Some possible enhancements
Online scheduling (priority based scheduling)
Static priority scheduling
Rate monotonic scheduling
Deadline monotonic schedule
Dynamic priority scheduling
Earliest deadline first
Offline versus online scheduling
Priority inversion
Disabling scheduler
Priority inheritance
Priority ceiling
Tools support for DSP OSes
Conclusions
References
0335_Chapter-15-Managing-the-DSP-Software-Development-Effort
15 - Managing the DSP Software Development Effort
Introduction
Challenges in DSP application development
The DSP design process
Concept and specification phase
A specification process for DSP systems
Algorithm development and validation
DSP algorithm standards and guidelines
High level system design and performance engineering
Performance engineering
Software development
System build, integration, and test
Factory and field test
Design challenges for DSP systems
High level design tools for DSP
DSP toolboxes
Host development tools for DSP development
A generic data flow example
Debug β verifying code performance
Code tuning and optimization
Typical DSP development flow
Getting started
Putting it all together
0361_Chapter-16-Multicore-Software-Development-for-DSP
16 - Multicore Software Development for DSP
Introduction
Multcore programming models
Multiple-single-cores
Advantages of multiple-single-cores
Disadvantages of multiple-single-cores
Characteristics of multiple-single-cores applications
True-multiple-cores
Advantages of true-multiple-cores
Disadvantages of true-multiple-cores
Porting guidelines
Design considerations
Motion JPEG case study
JPEG encoding
Input data
Discrete cosine transfer
Zig-zag reordering
Quantization
Run-length coding
Huffman coding
Design considerations
Input
Scheduling
Inter-core communication
Output
Implementation details
Scheduling
Inter-core communication
Input and output
Conclusions
0493_Case-Study-2-DSP-for-Medical-Devices
2 - DSP for Medical Devices
Medical imaging introduction
Ultrasound basics
Ultrasound transducer
Imaging modes
Doppler effect basics
High level system overview
Overview of classic beamforming
Design use case
Echo processing
Conclusions
References
0523_Case-Study-3-Voice-Over-IP-DSP-Software-System
3 - Voice Over IP DSP Software System
Brief VoIP Domain Introduction
Wired TDM telecom network
Migration to IP based transport, market drivers, and technical changes
DSP role in VoIP applications
TDM-IP Media Gateway
A DSP Framework for the VoIP Applications
DSP centric architectural details of a Media Gateway
High level architecture of a Media Gateway and the DSP VoIP application
System Software Functionalities
TDM to IP processing path in a Media Gateway
DSP VoIP Framework differentiators
Support for legacy equipment
Phase distortions
Delay Compensation Mechanism
DSP VoIP framework differentiators
DTMF detection
Sections
DTMF specifications; Q.23 and Q.24 recommendations
DTMF specifications
ITU-T Q.23 recommendation
ITU-T Q.24 recommendation
Q.24 compliant DTMF detection algorithm example
The Goertzel filters
The peak filters
Notch filters
Power estimation module
LCU (Level Control Unit) modules
TK loops
References
0571_Case-Study-4-Software-Performance-Engineering-of-an-Embedded-System-DSP-Application
3 - Software Performance Engineering of an Embedded System DSP Application
Introduction and Project Description
Initial Performance Estimates and Information Requirements
Developing the Initial Estimate
Tracking and Reporting the Metrics
Reducing the Measurement Error
Conclusions and Lessons Learned
References
0587_Case-Study-5-Specifying-Behavior-of-Embedded-Systems
5 - Specifying Behavior of Embedded Systems
What makes a good requirement?
Sequence Enumeration
Assumptions
It's really all just math!
0599_Case-Study-6-DSP-for-Software-Defined-Radio
6 - DSP for Software Defined Radio
Introduction
Functional architecture of a base station
General partition
LTE eNodeB
UMTS and HSPA NodeB
Joint architecture
Processor
Software architecture
Conclusion
0611_Index
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
π SIMILAR VOLUMES
Today's embedded and real-time systems contain a mix of processor types: off-the-shelf microcontrollers, digital signal processors (DSPs), and custom processors. The decreasing cost of DSPs has made these sophisticated chips very attractive for a number of embedded and real-time applications, includ
<p><p>Verification of real-time requirements in systems-on-chip becomes more complex as more applications are integrated. Predictable and composable systems can manage the increasing complexity using formal verification and simulation. This book explains the concepts of predictability and composabil
<p><p>Verification of real-time requirements in systems-on-chip becomes more complex as more applications are integrated. Predictable and composable systems can manage the increasing complexity using formal verification and simulation. This book explains the concepts of predictability and composabil
... a very good balance between the theory and practice of real-time embedded system designs.' Π²Πβ<b>Jun-ichiro itojun Hagino, Ph.D., Research Laboratory, Internet Initiative Japan Inc., IETF IPv6 Operations Working Group (v6ops) co-chair 'A cl Develop a work