Synopses & Reviews
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, including automotive, telecommunications, medical imaging, and many others—including even some games and home appliances. However, developing embedded and real-time DSP applications is a complex task influenced by many parameters and issues.
This introduction to DSP software development for embedded and real-time developers shows how to use digital signal processors efficiently in embedded and real-time systems. It covers software and firmware design principles, from processor architectures and basic theory to the selection of appropriate languages and basic algorithms. The reader will find practical guidelines, diagrammed techniques, tool descriptions, and code templates for developing and optimizing DSP software and firmware. The book also covers integrating and testing DSP systems as well as managing the DSP development effort. The accompanying CDROM contains the code from the design examples as well as design tools and product demos.
*Digital signal processors (DSPs) are the future of microchips!
*Includes practical guidelines, diagrammed techniques, tool descriptions, and code templates to aid in the development and optimization of DSP software and firmware
*Accompanying CD-ROM contains code from the design examples used in the book, so developers can easily use it in their own designs
Most of the other references on DSPs are highly
mathematical and theoretical. This one is extremely practical and emphasizes those design and
programming techniques required by the constraints of real-time and embedded applications.
“... until Robert Oshana wrote this thorough volume, no single source addressed DSP-based applications at the project or life-cycle level. This volume does an excellent job, and I recommend it highly.”
— Jon Titus, ECN, December 15, 2006
About the Author
Rob Oshana has over 25 years of experience in the real-time embedded industry, in both embedded application development as well as embedded tools development. He is currently director of engineering for the Development Technology group at Freescale Semiconductor. Rob is also a Senior Member of IEEE and an adjunct at Southern Methodist University. He can be contacted at firstname.lastname@example.org
Director of Engineering, Freescale, TX, USA
Table of Contents
Introduction to Digital Signal Processing:What is Digital Signal Processing?, History of Digital Signal Processing, Advantages of DSP, DSP Systems, Applications for DSP, Low cost applications, Power Efficient applications,High Performance applications; Embedded Systems and Real-Time systems: Overview of embedded systems, Characteristics of embedded systems, Requirements for embedded systems, Examples of embedded systems,
Embedded processor alternatives, Trends in embedded systems, Overview of real-time systems,
Characteristics of real-time systems, Hard real-time and soft real-time systems; Introduction to DSP Algorithms: FFT Algorithms, FIR and IIR Filters, Adaptive algorithms, Noise reduction algorithms,Echo cancellation algorithms; Digital Signal Processor Architectures: Processor architecture fundamentals, DSP instruction sets,
Selecting a processor architecture, DSP versus General Purpose Processors, Architecture styles,
Superscalar, Very Long Instruction Word (VLIW,
Advanced architectures); Optimizing DSP Software:
What is optimization?, Optimizing compilers, Compiler optimization methods, Constant arithmetic,
Constant propagation, Common subexpression elimination, Loop invariant code motion, Strength reduction, Memory disambiguation, Optimizing your application by knowing the DSP architecture,
Optimizing your application by knowing the compiler, Optimizing your application by knowing the algorithm, Optimization techniques, Using Direct Memory Access, Software Pipelining, Loop Unrolling, Algorithmic transformation, Other optimization techniques, Optimization guidelines,
Optimizing for Power, Optimizing for speed, Optimizing for memory, Portability issues, "Out of the box" code, "Tuned" code, Optimized code,
Intrinsics and other hints to the compiler, The performance versus memory tradeoff; Real-time operating systems for DSP: Real-time system demands, Real-time programming environments, Real Time Operating Systems, Scheduling algorithms, Problem-domain characteristics that drive the scheduling model, Thread support, Interrupts, Rate Monotonic Analysis, Alternatives to RTOS;
Integrating and Testing DSP systems: Challenges for the embedded system developer, Basic emulation capabilities, DSP debug methods, Profiling the application, Integrating and testing DSP systems,
JTAG, Trace functions, Special considerations for system on a chip; Managing the DSP Development Effort: Software development life-cycle approaches,
Hardware/Software co-design issues, DSP development flow, DSP development tools, Case study; DSP Components and Frameworks: What is a component?,
DSP components, Software development using components, What is a Framework?, DSP Frameworks,
Developing DSP systems using Frameworks, Example DSP framework, Putting it all together -Programming in the Large; Future of DSP: DSP systems,
Multiprocessor systems, Heterogeneous systems,
Multicore systems; Appendix A: Case study of Software Performance Engineering.