# Course: A Practical Introduction to Digital Signal Processing and DSP C Programming for PIC32 Developers

## Duration: 5 Days

## Course Background

The maths coprocessing hardware on the PIC32 makes it a suitable platform for implementing DSP based applications. Althought not a specialised high end DSP processor it has sufficient DSP processing capability for simple audio, motor control systems and data acquisition applications.

## Course Prerequisites and Target Audience

A sound basic knowledge of C, preferably in the context of embedded systems application development is assumed, to the level covered in the Introduction to PIC32 C programming course.

## Course Overview

This course serves as both an introduction, or refresher, to DSP theory and as an introduction to practical DSP programming in C on the PIC32 family of processors

After attending this course you will:

- Understand the uses and limitations of DSP
- Know those features of the dsPIC architecture relevant to DSP
- Be able to design and implement DSP filters on a PIC32
- Be able to perform frequency analysis of signals using the Fast Fourier Transform on the PIC32

## Course Outline

- Overview of DSP
- What can DSP do
- DSP vs. analog electronics
- DSP and microcontrollers
- DSP and the dsPIC
- Limitations of DSP
- Analog Signals and Systems
- Frequency and time description of signals and systems
- Linear and time invariant systems
- Analog Filters
- Uses and purpose
- Ideal vs. real world
- Filter specification
- Filter types (low pass, highpass, bandpass, ....)
- Specifying filters (magnitude response, phase response, transient response)
- Passive vs. active filters
- Poles and zeros
- Overview of Concepts Underlying Discrete-Time Signals and Systems
- Time and frequency domain description of discrete-time signals
- Quantization (linear, non-linear, noise)
- A-to-D and D-to-A conversion
- Overview of digital filters - FIR and IIR
- Introduction to Octave and Matlab as Filter Design Tools
- Overview of the Microchip PIC32 DSP Library
- FIR Filters
- Understanding convolution
- How FIR filters work
- Generating coefficients for FIR filters (Parks-McClellan, Windowing, Frequency Sampling)
- IIR Filters
- Basic concepts
- Design techniques (manual, time-domain methods, frequency domain methods)
- Cascade and parallel IIR filter structures
- Implementing filters on a dsPIC
- PIC32 as a DSP Processor
- PIC32 compared with TI DSP processors
- Overview of programming the PIC32 in 'C' and Assembler
- Data representation issues, speed vs. size optimization ...
- Finite word length effects (coefficient quantization, limit cycles)
- Frequency Analysis
- Discrete Fourier Transform (DFT)
- Fast Fourier Transform (FFT)
- Implementing FFT on the dsPIC
- Inverse DFT/FFT
- Overview of wavelets
- Correlation
- Cross-correlation
- Auto-correlation
- Pseudo-noise signals
- Signal averaging
- Sampling
- Choosing sampling rates
- Multi-rate signal processing
- Decimation
- Interpolation
- Signal Synthesis
- Random numbers - generating pseudo random numbers
- Functions - polynomials, sine, cosine, arbitrary waveforms ...