This version (14 May 2024 02:54) was approved by Mark Thoren.The Previously approved version (14 May 2024 02:46) is available.Diff

Tools for Precision Wideband Mixed Signal System Design

Note: This is a work in progress.


The goal of this tutorial is to equip the reader with a collection of hardware and software tools for developing precision wideband mixed-signal applications.
Content Guide: This tutorial includes complete written instructions, a video guide, and a slide deck that can be used for delivering as a hands-on workshop.
What exactly does “Precision Wideband” mean? In the context of this tutorial, the “wideband” part means that unlike “low speed” applications, timing, or jitter, of individual samples with respect to previous and future samples IS critical. The application involves extracting information from arrays of samples that are correlated with each other in some way. AC performance metrics such as signal to noise ratio and total harmonic distortion extracted from a Fourier transform of the data will be considered. Even if the end applicaiton does not involve sinewaves, these metrics are almost always a useful indicator of performance.
The “precision” part means that DC parameters such as offset, gain error, linearity, and temperature drift are also important.

In contrast - sample jitter is important in a “wideband” application. If you are measuring signal to noise ratio, the Signal to Noise ratio (SNR) can be no greater than:

SNR <= -20 * log(2*pi*f_{IN}*t_{j})
f_{IN} is the analog input frequency in Hz
t_{j} is the RMS jitter in seconds RMS

In this tutorial, we will be generating excitation waveforms, digitizing time-domain signals, performing Fast Fourier Transforms (FFTs), extracting features from the frequency domain, and calculating measurement parameters. We will be measuring AC Signal to Noise Ratio (SNR), Total Harmonic Distortion (THD), measuring steps, wiggles, and other situations where precise timing is required.
Throughout the exercises we'll be writing simple Python code to capture and analyze data, using the industry standard Industrial I/O (IIO) framework to interact with the ADC, and the popular NumPy and Matplotlib Python libraries. Thus this exercise also serves as a mini-tutorial on Python.


This probably isn't necessary as of Kuiper 2022r2, but just in case you want to update pyadi-iio or have the examples in your home directory, run these commands in a terminal:

git clone
cd pyadi-iio
sudo pip install .


This tutorial builds on the concepts covered in:
Introduction to the basic concepts of writing software to talk to external devices:
Converter Connectivity Tutorial
This tutorial that starts to deal with analyzing time series data:
Precision ADC Tutorial
And this workshop in which we actually build a simple test instrument:
Tools for Low Speed Mixed Signal System Design

Slide Deck and Video

Since this tutorial is also designed to be presented as a live, hands-on workshop, a slide deck is provided here:

A complete video run-through is also provided, either as a companion to following the tutorial yourself, or to practice before presenting as a hands-on workshop:

Video to come soon, in the meantime please enjoy this primer on precision wideband applications:

Finish Me
(Translate slide deck and video into complete written instructions with photos, diagrams, etc.)

Preparation - a few resources for learning Python

Software Stack Review

Introducing an exciting new product that we'll apply our skills to

Hardware Setup

Booting the system

Post-boot housekeeping

Configuring the System (and rebooting!)

Command Line Tools (Hello, Colorimeter and AD4630-24!)

IIO Oscilloscope

Pyadi-iio And examples

Next Steps: Other languages (C++, C#, MATLAB, etc.)


Additional References

university/labs/software/tools_for_precision_wideband_mix-sig_systems.txt · Last modified: 14 May 2024 02:54 by Mark Thoren