Home > On-Demand Archives > Workshops >

Expert Insights into Waveform Analysis Techniques

Dan Boschen - Watch Now - DSP Online Conference 2024 - Duration: 02:21:21

Expert Insights into Waveform Analysis Techniques
Dan Boschen

Update 10/28: Please find here the Installation Guide for the tools that you can optionally install if you want to be able to run the example files

Are you capturing real-world waveforms and striving for pinpoint accuracy in your measurements? Whether you're working with single tones, broadband noise, or arbitrary waveforms in the analog or digital domain, this workshop is designed for you!

Explore advanced but user-friendly frequency and time domain methods applicable to the assessment of signal to noise ratios and EVM (error vector magnitude) for communications waveforms, number of effective bits in A/D conversion, or any application where an accurate measurement of noise is critical.

Learn from a seasoned expert the industry-leading techniques that push the boundaries of traditional test set-ups. The workshop will feature practical “cookbook” techniques using Python (with similar methods in MATLAB and Octave) and provide in-depth insights into both the effective use and potential pitfalls of these methods.

In this engaging session, you will:

  • Master FFT-based techniques for single tone measurements of any frequency without any concern for scalloping loss.
  • Extend the accurate measurement of single tones to multi-tones and broadband arbitrary waveforms.
  • Achieve sub-dB precision in broadband noise density measurements.
  • Optimize signal capture duration using the Allan Deviation statistical tool.

Don't miss this opportunity to refine your measurement skills and overcome common limitations. Whether you're a seasoned professional or new to the field, you'll leave with actionable insights and hands-on techniques to elevate your waveform measurement capabilities.

This guide was created with the help of AI, based on the presentation's transcript. Its goal is to give you useful context and background so you can get the most out of the session.

What this presentation is about and why it matters

This talk presents practical, high-precision methods for analyzing real-world waveforms in both the time and frequency domains. It focuses on measuring tones, broadband noise, and arbitrary modulated signals (for example QAM) with accuracy sufficient for tasks like ENOB (effective number of bits) estimation, noise-density measurements, EVM/SNR assessment, and diagnosing non-stationary behavior. The speaker emphasizes methods you can run in post-processing (Python/MATLAB/Octave), and shows how to avoid common pitfalls that produce dB-level errors.

Who will benefit the most from this presentation

  • RF and mixed-signal engineers validating ADCs, receivers, or front-end chains.
  • DSP engineers and researchers who analyze captured waveforms and need reliable SNR / noise-floor metrics.
  • Test and measurement engineers who want cookbook procedures for FFT, Welch PSD, EVM, and Allan deviation.
  • Students learning practical spectrum analysis and waveform-quality metrics.

What you need to know

Before watching, a basic familiarity with these concepts will help you get the most from the talk. The presenter demonstrates concrete recipes, but understanding the background will make the examples clearer.

  • Sampling and Nyquist — sampling rate Fs, bin spacing Fs/N, and why capture duration sets frequency resolution.
  • FFT basics — the FFT/DFT produces a bank-of-filters view of the spectrum. You should know what a bin represents (frequency and resolution). Zero-padding changes the interpolation of the spectrum but not intrinsic resolution.
  • Windowing and spectral leakage — time-domain windows (e.g., Kaiser, Hann, rectangular) trade main-lobe width (resolution bandwidth) for sidelobe attenuation (reduced leakage). Scaling the FFT by the sum of window coefficients corrects amplitude loss.
  • Scalloping loss & zero-padding — peak amplitude varies with tone position relative to bin centers; zero-padding plus windowing reduces scalloping loss significantly.
  • Power spectral density (PSD) and Welch method — Welch averages power spectra of overlapping, windowed blocks to estimate noise density (dB/Hz). Key knobs: block size, overlap, window type, and averaging (mean vs median).
  • EVM and correlation — EVM is the RMS error between measured samples and ideal reference; when scaled properly SNR ≈ 1 / EVM^2. Correlation (complex cross-correlation) between measurement and template gives |r| and SNR via the power formula SNR = |r|^2/(1-|r|^2). Remove mean, normalize by standard deviation, and correct time/frequency/phase offsets first.
  • ENOB and quantization — the classical SNR formula for an ideal N-bit ADC: \(\mathrm{SNR_{dB}} \approx 6.02\,N + 1.76\,\mathrm{dB}\). Use PSD (dBFS/Hz) plus bandwidth integration to compute total noise power and confirm SNR/ENOB.
  • Non-stationarity and Allan deviation — long captures may include drift and low-frequency noise (1/f, random walk). Allan deviation (two-sample) quantifies stability vs averaging time and helps choose an optimal capture duration for stationary estimates.
  • Practical alignment tips — accurate time alignment (sub-sample) is critical for EVM; polyphase resampling or a fractional-delay filter bank can provide sub-sample shifts. Remove DC/mean, correct phase/frequency offsets, and normalize amplitudes before metric calculation.

Glossary

  • FFT (Fast Fourier Transform) — numerical algorithm to compute the DFT; used to obtain spectral bins from time samples.
  • Window — time-domain weighting (Kaiser, Hann, rectangular) applied before FFT to control leakage and sidelobes.
  • Resolution Bandwidth (RBW) — effective bandwidth of an FFT bin (reciprocal of capture duration, modified by the window main-lobe width).
  • Scalloping loss — amplitude error when a tone falls between FFT bin centers; reduced by zero-padding and windowing.
  • Welch PSD — averaged power spectral density estimate computed from overlapping, windowed blocks; good for noise density estimation (dB/Hz).
  • EVM (Error Vector Magnitude) — RMS magnitude of the vector error between received and ideal constellation (used to infer SNR for modulated signals).
  • Correlation coefficient — normalized complex inner product between measured and reference waveforms; used to compute SNR via |r|^2/(1-|r|^2).
  • ENOB (Effective Number of Bits) — ADC performance metric inferred from measured SNR using the 6.02·N + 1.76 dB formula.
  • Allan deviation (ADEV) — two-sample stability metric that characterizes drift/noise versus averaging time; useful for non-stationary signals and clock analysis.
  • Polyphase resampler / fractional delay — technique to implement sub-sample time shifts for precise alignment before EVM/correlation.

Quick viewing tip: while watching, note the three measurement domains he moves between — single-tone FFT for precise tone power, Welch PSD for noise density, and template-based EVM/correlation for arbitrary waveforms — and listen for the practical checks (time/phase alignment, window scaling, resolution bandwidth) that make the metrics reliable.

M↓ MARKDOWN HELP
italicssurround text with
*asterisks*
boldsurround text with
**two asterisks**
hyperlink
[hyperlink](https://example.com)
or just a bare URL
code
surround text with
`backticks`
strikethroughsurround text with
~~two tilde characters~~
quote
prefix with
>

DanBoschenSpeaker
Score: 0 | 12 months ago | no reply

I had one person using a Linux platform write to me to let me know they had an issue loading the Python tools with the specific versions I provided, and were able to proceed by not including the versions. If anyone else has this issue, please comment here (or the contrary if you have a Linux system and the tools loaded properly as I specified.). Thanks.

SeanNowlan
Score: 0 | 12 months ago | 1 reply

Hi Dan, thanks for the awesome workshop! It's a great companion to your courses. I have one question about your ADC Example notebook. You scale the FFT by 1/full_scale_rms and the Welch PSD by 1/full_scale_rms**2 where full_scale_rms = np.std(signal). Since that's composed of a (real) cosine at full scale, that is equivalent to np.sqrt(full_scale_count*full_scale_count/2). Is the takeaway to account for the full scale scaling only or is the mean of the signal important? In other words is using np.std here a convenience that's assuming a zero mean signal to calculate the scaling since the mean drops out to leave an RMS calculation? Thanks!

DanBoschenSpeaker
Score: 0 | 12 months ago | no reply

Hi Sean- I am glad you liked the workshop and thank you for this question. In the ADC notebook, I normalized the vertical axis so that 0 dB on those charts refers to a the power level of a full-scale sine wave specifically. I did that because I am computing ENOB specifically (Effective Number of Bits for an ADC). The ENOB is determined experimentally by measuring the SNR ("SINAD" specifically if you refer to ADC datasheets), with a full scale sine wave applied to the input ("full scale" may be a dB or two below actual clipping but it would be where the SNR is maximized). With that SNR, the effective number of bits is determined by backing it out of the SNR = 6.02 dB/bit + 1.76 dB equation. By normalizing 0 dB to be the power of the sine wave, we can read the SNR directly off of Welch plot. This also explains why the FFT plot is -3.01 dB, since we are getting half the power of that sine wave in each of the two tones (positive and negative frequency). std(x) would be the right way to do this as that would ignore DC if there was any DC offset (since we just want the power of the sine wave specifically). I hope that clears it up.

RichardLyons
Score: 0 | 12 months ago | 1 reply

Hi Dan. Wow! You packed a tremendous amount of signal processing "theory and practice" into one presentation. Great job.

DanBoschenSpeaker
Score: 0 | 12 months ago | no reply

Thank you Rick!

Mayur.S
Score: 0 | 1 year ago | 1 reply

Dan, Thank you for the awesome workshop. It is amazing to see the complete architecture for signal processing for 4K QAM packet, very relevant for Wi-Fi7 systems.
Thank you and stills lots to learn from your python scripts.

DanBoschenSpeaker
Score: 0 | 1 year ago | no reply

Thanks for watching Mayur!

dcomer
Score: 0 | 1 year ago | 1 reply

Hey Dan, I wasn't able to stay for the live workshop (due to my caretaker duties) but watched it today. I'm working my way through the installation process (in preparation for a second viewing). Your instruction skills as well as your materials are the jewel of the DSP world as well as the dsponlineconference.
I really appreciate the knowledge you share.
Dave

DanBoschenSpeaker
Score: 0 | 1 year ago | no reply

Thank You Dave! I hope you are doing well.

Thomas.Schaertel
Score: 0 | 1 year ago | 1 reply

Hi Dan,
this was another great workshop from you. I still have to work through your Jupyter notebooks, since I did not get everything at first time. I'm really fascinated how you did the workshop and provided so much value and engagement supported also with the Python notebooks. Thanks a lot!
Thomas

DanBoschenSpeaker
Score: 0 | 1 year ago | no reply

Thanks for your kind words Thomas. It was a lot of fun to do and as you likely heard me say before "nobody else I know lets me talk about this stuff for two hours straight" so appreciate the interested audience in stuff I find so fascinating.