First Technology Transfer

Standard and Advanced Technical Training, Consultancy and Mentoring

Course 306 A Practical Introduction to Digital Signal Processing (DSP) for PIC32 developers (5 days)

Duration: 5 Days

Intended Audience

This is an intensive 5-day course for engineers who have relatively little experience of DSP,or, whose knowledge of DSP has become somewhat rusty.


To take advantage of the DSP capabilities of the PIC32 architecture a sound understanding of the principles and practice of Digital Signal Processing is Required. This 5 day course avoids digging deep into the underlying theory and maths. Rather it aims to provide a sound understanding of the principles, uses and limitations of Digital Signal Processing. Its goal is to ensure that engineers learn how to select and parameterize the most appropriate DSP Algorithms for the task at hand. The objectives of the course are to provide an understanding of the uses and limitations of DSP and those features of the PIC32 architecture relevant to DSP and to teach the practical aspects of the design and implementation of DSP filters on a PIC32 and the use of Fourier Transform techniques to perform frequency analysis.


  • Overview of DSP
  • What can DSP do
    • DSP vs. analog electronics
    • DSP and microcontrollers
    • DSP and the PIC32
    • 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 PIC32
    • PIC32 as a DSP Processor
    • PIC32 compared with dsPIC processors
    • 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 PIC32
    • 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 ...
  • PIC32 DSP Hardware and Instruction Set Support In Depth
    • PIC32 hardware extensions to basic PIC24 architecture to support DSP
    • PIC32 hardware support for circular buffers
    • PIC32 instruction extensions to support DSP
    • Use of DSP design tools to generate DSP assembler code
    • Calling DSP filter code from C
  • Implementing DSP Algorithms in C
    • Pointers and C Array Manipulation
    • FFT in C
    • FIR in C
    • IIR in C