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

## Duration: 5 Days

## Course Background

The dsPIC was the first Microchip microcontroller designed specifically with DSP (Digital Signal Processing) capabilities in mind. The kinds of applications it was designed for were cost sensitive applications involving signal processing and control. This included applications such as motor control applications, buck boost converter applications, basic audio and speech synthesis applications 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 PIC24 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 dsPIC 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 dsPIC
- Be able to perform frequency analysis of signals using the Fast Fourier Transform on the dsPIC

## 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
- 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
- dsPIC as a DSP Processor
- dsPIC compared with TI DSP processors
- Overview of programming the dsPIC 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 ...