Tools for Precision Wideband Mixed Signal System Design#

Note

This is a work in progress.

Introduction#

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?

The “precision” part means that DC parameters such as offset, gain error, linearity, and temperature drift are also important.

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 application does not involve sine waves, these metrics are almost always a useful indicator of performance.

An important point is that sample jitter is important for the “wideband” aspects of these applications. 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})\)

Where: \(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.

Materials#

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 https://github.com/analogdevicesinc/pyadi-iio.git
~$
cd pyadi-iio
~/pyadi-iio$
sudo pip install .

Background#

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:

Todo

Video and Slide Deck

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.)#

Wrapup#

Additional References#