∿ LEARN DSPFrom signal to HF transceiver
Part roadmap

Changing the sample rate: multirate DSP

Learn to change the sample rate and keep aliasing and spectral images under control.

Goal

Learn to change the sample rate and keep aliasing and spectral images under control.

Prerequisites: Parts 03–04.

Future lessons

  1. Decimation: filter before you keep every M-th sample.
  2. Interpolation: zero insertion, the spectral images that it causes, and a filter to remove them.
  3. Sample rate conversion by L/M, multiple stages, and polyphase implementation.
  4. CIC filter: integrators and comb stages, droop in the passband, gain and bit growth. We refine the integer model in Part 14.

Lab plan

  • Compare the change from 96 → 12 kS/s with and without a filter when there is strong out-of-band interference.
  • Show the spectral images after zero insertion and the result of filtering.
  • Compare the direct and polyphase implementations with scipy.signal.upfirdn/resample_poly; count the operations.
  • Measure the passband ripple of a CIC.

We do the experiments in Python with NumPy, SciPy and Matplotlib. We keep the parameters, units and plots. The base models use float64 and complex128; we add bit-depth limits in separate experiments.

Completion criteria

  • For each stage, I state the sample rate, the useful band and the filter requirements.
  • I can explain why a polyphase implementation saves computation, and the limits of a CIC.

Result for the main project

A sample rate plan and blocks to convert between the rates.