0%

Book Description

Real-time or applied digital signal processing courses are offered as follow-ups to conventional or theory-oriented digital signal processing courses in many engineering programs for the purpose of teaching students the technical know-how for putting signal processing algorithms or theory into practical use. These courses normally involve access to a teaching laboratory that is equipped with hardware boards, in particular DSP boards, together with their supporting software. A number of textbooks have been written discussing how to achieve real-time implementation on these hardware boards. This book discusses how to use smartphones as hardware boards for real-time implementation of signal processing algorithms as an alternative to the hardware boards that are used in signal processing laboratory courses. The fact that mobile devices, in particular smartphones, have become powerful processing platforms led to the development of this book enabling students to use their own smartphones to run signal processing algorithms in real-time considering that these days nearly all students possess smartphones. Changing the hardware platforms that are currently used in applied or real-time signal processing courses to smartphones creates a truly mobile laboratory experience or environment for students. In addition, it relieves the cost burden associated with using dedicated signal processing boards noting that the software development tools for smartphones are free of charge and are well-maintained by smartphone manufacturers. This book is written in such a way that it can be used as a textbook for real-time or applied digital signal processing courses offered at many universities. Ten lab experiments that are commonly encountered in such courses are covered in the book. This book is written primarily for those who are already familiar with signal processing concepts and are interested in their real-time and practical aspects. Similar to existing real-time courses, knowledge of C programming is assumed. This book can also be used as a self-study guide for those who wish to become familiar with signal processing app development on either Android or iPhone smartphones.

Table of Contents

  1. Preface
  2. Introduction
    1. Smartphone Implementation Tools
    2. Smartphone Implementation Shells
      1. Android Implementation
      2. Iphone Implementation
    3. Overview of ARM Processor Architecture
      1. Data Flow and Registers
    4. Organization of Chapters
    5. Software Package of Lab Codes
    6. References
  3. Android Software Development Tools
    1. Installation Steps
      1. Java JDK
      2. Android Studio Bundle and Native Development Kit
      3. Environment Variable Configuration
      4. Android Studio Configuration
      5. Android Emulator Configuration
      6. Android Studio Setup for Mac
    2. LAB 1: Getting Familiar with Android Software Tools (1/3)
    3. LAB 1: Getting Familiar with Android Software Tools (2/3)
    4. LAB 1: Getting Familiar with Android Software Tools (3/3)
      1. Lab Exercise
  4. iOS Software Development Tools
    1. App Development
    2. Setting-up App Environment
    3. Creating Layout
    4. Implementing C Codes
    5. Executing C Codes Via Objective-C
    6. Swift Programming Language
    7. LAB 2: iPhone App Debugging
      1. Lab Exercise
  5. Analog-to-Digital Signal Conversion
    1. Sampling
    2. Quantization
    3. References
    4. LAB 3: Android Audio Signal Sampling
      1. Demo Application
      2. Application Code
      3. Recording
      4. Processing.Java
      5. JNI Native C Code
      6. Superpowered SDK
      7. Multi-Threading
      8. Multi-Rate Signal Processing
      9. Lab Exercises
    5. LAB 4: iPhone Audio Signal Sampling
      1. App Source Code
      2. App Code Discussion
      3. Recording
      4. Native C Code
      5. Multi-Threading
      6. Multi-Rate Signal Processing
      7. Lab Exercises
  6. Fixed-Point vs. Floating-Point
    1. Q-Format Number Representation
    2. Floating-Point Number Representation
    3. Overflow and Scaling
    4. Some Useful Arithmetic Operations
      1. Division
      2. Sine and Cosine
      3. Square-Root
    5. LAB 5: Fixed-Point and Floating-Point Operations
      1. App Structure
      2. NEON SIMD Coprocessor
      3. Lab Exercises
    6. References
  7. Real-Time Filtering
    1. FIR Filter Implementation
    2. Circular Buffering
    3. Frame Processing
    4. Finite Word Length Effect
    5. References
    6. LAB 6: Real-Time FIR Filtering, Quantization Effect, and Overflow
      1. Filter Design
      2. ARM Overflow Detection
      3. Lab Exercises
  8. Adaptive Filtering
    1. Infinite Impulse Response Filters
    2. Adaptive Filtering
    3. References
    4. LAB 7: IIR Filtering and Adaptive FIR Filtering
      1. IIR Filter Design
      2. Adaptive FIR Filter
      3. Lab Exercises
  9. Frequency Domain Transforms
    1. Fourier Transforms
      1. Discrete Fourier Transform
      2. Fast Fourier Transform
    2. Leakage
    3. Windowing
    4. Overlap Processing
    5. Reconstruction
      1. Inverse Fourier Transform
      2. Overlap-Add Reconstruction
    6. References
    7. LAB 8: Frequency Domain Transforms–DFT and FFT
      1. Lab Exercises
  10. Code Optimization
    1. Code Timing
    2. Linear Convolution
    3. Compiler Options
    4. Efficient C Code Writing
    5. Architecture-SpecifiC Optimizations
      1. Target Architecture
      2. Arm Hardware Capabilities
      3. Neon Intrinsics
    6. LAB 9: Code Optimization
      1. Compiler Options
      2. Target Architecture (Android Only)
      3. Code Modification
    7. References
  11. Implementation Via Matlab Coder
    1. Matlab Function Design
    2. Test Bench
    3. Code Generation
    4. Source Code Integration
    5. Summary
    6. References
    7. LAB 10: Matlab Coder Implementation
      1. Lab Exercises
  12. Authors' Biographies
  13. Index
  14. Blank Page (1/3)
  15. Blank Page (2/3)
  16. Blank Page (3/3)
52.14.130.13