DSP Software Development Techniques for Embedded and Real-Time SystemsBy
- Robert Oshana
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 companion website contains the code from the design examples as well as design tools and product demos.
Computer engineers, embedded systems designers, software engineers who are using or planning to use DSPs in their real-time and embedded designs.Computer and software engineering students.
Paperback, 608 Pages
Published: December 2005
âEngineers can choose from a variety of books about signal-processing theory and algorithms; but 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. Oshanaâs experience developing DSP applications and teaching others about DSP tips, techniques and tricks led him to find and develop new ways to think about and approach a project. He provides that information in a format that will benefit engineers as well as engineering managers working on DSP projects.â â Jon Titus, ECN, December 15, 2006
- 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.