Exploring Digital Filters with Low-Cost Hardware and Open-Source Tools
This presentation and live demonstration explores a cross section of affordable hardware and open-source tools for hands-on exploration of digital filters.
Hardware & Capture
- 40 Msps, 20-bit ADC with an internal data-capture buffer
- Built-in digital filters: SINC1, SINC5, and brick-wall
- No FPGA required — the internal buffer lets a basic microcontroller transfer data to a host
Data Path & Software
- Industry-standard IIO (Industrial Input/Output) framework for streaming
- Compatible with C, C++, C#, MATLAB, and Python
Demos & Analysis
- Short Python scripts and Jupyter notebooks using NumPy and SciPy
- Low-cost USB instruments generate test signals: sinewaves, steps, wavelets, and noise bands
- Analysis verifies filter properties and behavior
- USB sound cards explored as budget sources/sinks vs. benchtop instruments
What this presentation is about and why it matters
This talk demonstrates how to explore and understand digital filters by combining inexpensive hardware and open-source software. Instead of a deep theoretical lecture, the speaker shows practical experiments you can run on a bench: capture signals from an ADC with built-in digital filters, generate controlled test signals (sine, steps, wavelets, shaped noise) and inspect how different filters affect noise, tones, settling and aliasing. The emphasis is on hands-on learning — running short Python or MATLAB scripts, using a simple microcontroller or USB instruments, and leveraging industry-standard frameworks so results are reproducible across platforms.
Why this matters: digital filters are central to every measurement chain that involves analog-to-digital conversion. Choosing and understanding a filter changes noise, settling time, spectral leakage and how out-of-band interferers alias into your band. Seeing these effects on real hardware (and low cost hardware at that) builds intuition that equations alone often don’t provide.
Who will benefit the most from this presentation
- Practicing engineers who design mixed-signal front ends and need practical tests for filter selection and anti-aliasing.
- Students and instructors who want lab-ready examples that illustrate sampling, aliasing, and the behavior of common digital filters.
- Developers building data-acquisition systems who want to learn tools and workflows (IIO, Python/MATLAB, short embedded examples) for rapid prototyping.
- Anyone who prefers learning by doing — experimenting with real ADCs, USB sound cards or low-cost instruments rather than only simulation.
What you need to know
To get the most out of the demos, a basic grounding in the following topics is helpful:
- Sampling & Nyquist: understand sampling frequency f_s and the concept of Nyquist zones (0–f_s/2 is the first Nyquist zone). Aliasing occurs when energy from higher Nyquist zones folds into the first zone.
- Fourier basics: how time-domain windowing/impulse responses map to frequency-domain magnitude and nulls.
- Digital filter types: simple averaging (sinc), higher-order sinc (sinc5), and the idea of passband flattening. The sinc(·) shape often appears — e.g. for a simple averaging filter the magnitude is proportional to $\mathrm{sinc}(\pi f)=\frac{\sin(\pi f)}{\pi f}$.
- Effective noise bandwidth (ENBW): when a filter attenuates frequency components, the total output noise equals the input noise PSD integrated against the squared magnitude of the filter. Compactly: $\mathrm{ENBW}=\frac{\int_{-\infty}^{\infty}|H(f)|^2\,df}{|H(0)|^2}$, which gives the equivalent rectangular bandwidth that passes the same noise power.
- ADC architectures: difference between SAR (successive-approximation) and sigma-delta converters, and why a SAR at tens of MS/s can let you select arbitrary digital filters independent of the modulator.
- Basic software & tools: Python (NumPy/SciPy/Jupyter), MATLAB, and IIO (Industrial I/O) for cross-platform access to ADC hardware. Familiarity with small scripts that capture a buffer and compute FFTs or standard deviations will let you reproduce experiments quickly.
Glossary (terms used in this talk)
- Aliasing: Distortion that occurs when frequency components above Nyquist are indistinguishable from lower-frequency components after sampling.
- ENBW (Equivalent Noise Bandwidth): The bandwidth of an ideal rectangular filter that would pass the same total noise power as a real filter.
- ADC (Analog-to-Digital Converter): A device or circuit that converts an analog signal into a digital sample stream.
- Nyquist Zone: A frequency band defined by a sampling system in which spectral components can appear after sampling, with higher-frequency content folding into lower bands.
- SAR (Successive-Approximation Register): An ADC architecture that determines each output sample through a binary-search process. It is commonly used for moderate-to-high sample rates and good linearity.
- Sinc filter: A digital filter whose frequency response has a sinc-shaped magnitude response. Higher-order sinc filters have deeper nulls and narrower main lobes.
- Passband flattening: A filter-compensation approach used to reduce passband ripple and make the response more uniform over the band of interest.
- FIFO (First-In, First-Out) buffer: A queue-like memory structure in which the first stored sample is the first to be read out. In embedded systems it is often used to buffer data for burst transfers.
Toolbox (mentioned in this talk)
- NumPy: A foundational Python library for array computing and numerical operations.
- SciPy: A Python library that provides scientific computing algorithms built on NumPy.
- MATLAB: A high-level numerical computing environment widely used for signal processing, data analysis, and algorithm development.
- Jupyter: An interactive notebook environment for combining code, text, and visualizations in a single document. It is commonly used for exploratory analysis, teaching, and reproducible computation.
- Industrial Input/Output (IIO): A Linux kernel framework and associated userspace interfaces for streaming data from and controlling data-converter and sensor devices. It is commonly used with ADCs, DACs, and related hardware.
- ADALM2000: A low-cost USB-powered mixed-signal measurement instrument from Analog Devices. It provides analog and digital I/O for education, prototyping, and basic laboratory experiments.

Excellent presentation and choice of useful hands-on topics. You've stimulated my interest in pursuing more digital filter projects. I'm very interested in the ADALM-MMSC when ADI releases it for sale. Thank you, Brad Barnicoat