From a1cd82505867397803bc89fc992610ae72df9abf Mon Sep 17 00:00:00 2001 From: spagadar Date: Wed, 13 Nov 2024 12:06:09 -0600 Subject: [PATCH] First commit of doc page to explain configuration of SSBs --- doc/figures/complex_sinusoidal_waveform2.png | Bin 0 -> 44196 bytes doc/figures/fft2.png | Bin 0 -> 26336 bytes doc/figures/fft3.png | Bin 0 -> 29305 bytes doc/index.rst | 1 + doc/spectral_analysis.md | 2 +- doc/spectral_analysis_ssb.md | 86 +++++++++++++++++++ requirements_test.txt | 3 +- 7 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 doc/figures/complex_sinusoidal_waveform2.png create mode 100644 doc/figures/fft2.png create mode 100644 doc/figures/fft3.png create mode 100644 doc/spectral_analysis_ssb.md diff --git a/doc/figures/complex_sinusoidal_waveform2.png b/doc/figures/complex_sinusoidal_waveform2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0678c59c6f80d70638d0f01a2b808f1c2e3e54 GIT binary patch literal 44196 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�u+4Ql+Bd*m>gv{!hbze_=AXkfq?2ReC( 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 literal 0 HcmV?d00001 diff --git a/doc/index.rst b/doc/index.rst index bb03c53..7af3c16 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -23,6 +23,7 @@ Reference introduction setup spectral_analysis + spectral_analysis_ssb reference reference_simplified python/genalyzer diff --git a/doc/spectral_analysis.md b/doc/spectral_analysis.md index 53673b9..1edc39e 100644 --- a/doc/spectral_analysis.md +++ b/doc/spectral_analysis.md @@ -17,7 +17,7 @@ The workflow we follow in this tutorial is generally what is to be followed to u style SA fill:#ffffff ``` -We first generate (or import) a waveform to be analyzed, compute its FFT, and finally, calculate various performance metrics by running spectral analysis. In this tutorial, we will generate the tone waveform using Genalyzer. In another example, we will import a tone waveform captured using ADALM-PLUTO to perform spectral analysis. Please refer to the [spectral-analysis example](https://github.com/analogdevicesinc/genalyzer/blob/main/bindings/python/examples/gn_doc_spectral_analysis1.py) Python script to follow the discussion on this page. +We first generate (or import) a waveform to be analyzed, compute its FFT, and finally, calculate various performance metrics by running spectral analysis. In this tutorial, we will generate the tone waveform using Genalyzer. Please refer to the [spectral-analysis example](https://github.com/analogdevicesinc/genalyzer/blob/main/bindings/python/examples/gn_doc_spectral_analysis1.py) Python script to follow the discussion on this page. ## Tone Generation ```{eval-rst} diff --git a/doc/spectral_analysis_ssb.md b/doc/spectral_analysis_ssb.md new file mode 100644 index 0000000..f6acbd6 --- /dev/null +++ b/doc/spectral_analysis_ssb.md @@ -0,0 +1,86 @@ +# Windowing and Single Side Bins +In this tutorial, we will study a common scenario that arises when spectral analysis is compromised due to _leakage_. We look at ways to remedy the situation by applying a non-rectangular window function before computing the FFT and appropriately configuring the number of single side bins within Genalyzer. The waveform we analyze will be a ``375 KHz`` complex sinusoidal tone sampled at ``4 MSPS``. The only impairment in this waveform will be quantization noise. At the end of this tutorial, the reader will have gained an understanding on how to select the number of single side bins for various _components_ after creating a _test_, in order to compute performance metrics such as SFDR, FSNR, SNR, NSD etc. This tutorial follows the discussion on [spectral analysis](#spectral-analysis). So, please read that page first to become familiar with the workflow of Genalyzer. + +As before, we will follow the three-stage workflow shown below. +```{eval-rst} +.. mermaid:: + + graph LR; + A[Generate/Import Waveform] --> B[Compute FFT]; + B -->C1[Configure Spectral Analysis]; + + subgraph SA[Spectral Analysis] + C1[Configure] -->C2[Run]; + end + + style SA fill:#ffffff +``` +We will first generate the waveform to be analyzed, compute its FFT, and calculate various performance metrics by running spectral analysis. Please refer to the [leakage and spectral-analysis example](https://github.com/analogdevicesinc/genalyzer/blob/main/bindings/python/examples/gn_doc_spectral_analysis2.py) Python script to follow the discussion on this page. + +## Leakage +In the [leakage and spectral-analysis example](https://github.com/analogdevicesinc/genalyzer/blob/main/bindings/python/examples/gn_doc_spectral_analysis2.py) Python script, we generate the complex-sinusoidal waveform as follows: +```{code-block} python +# signal configuration +npts = 30000 # number of points in the signal +fs = 4e6 # sample-rate of the data +freq = 375000 # tone frequency +phase = 0.0 # tone phase +ampl_dbfs = -1.0 # amplitude of the tone in dBFS +ampl = (fsr / 2) * 10 ** (ampl_dbfs / 20) # amplitude of the tone in linear scale + +# generate signal for analysis +wf = gn.cos(npts, fs, ampl, freq, phase) +awfq = gn.sin(npts, fs, ampl, freq, phase) +qwfi = gn.quantize(awfi, fsr, qres, qnoise, code_fmt) +qwfq = gn.quantize(awfq, fsr, qres, qnoise, code_fmt) +``` +A time-domain plot of the complex-sinusoidal tone is shown below for reference. + +```{figure} figures/complex_sinusoidal_waveform2.png + +Time-domain plot of a ``375 KHz`` complex sinusoidal tone sampled at ``4 MSPS``. +``` +As shown in this plot, the snapshot of the signal is aperiodic and data is sampled over an incomplete period at the end of the data record. This discontinuity causes _leakage_ resulting in a smearing effect that spreads the energy of a tone over a wider frequency range, with the appearance of frequency components that are not present in the original signal. This is readily seen in the FFT plot of the complex-sinusoidal tone shown below. +```{figure} figures/fft2.png + +FFT plot of a ``375 KHz`` complex sinusoidal tone sampled at ``4 MSPS``. +``` + +### Windowing To Reduce Leakage +Note that in the FFT plot shown previously, the FFT of the time-domain waveform was computed as is with the underlying assumption that the waveform is periodic. In practice, since this assumption is generally invalid and the snapshot of a wavform contain incomplete periods rendering the signal aperiodic, a window function is applied to overcome leakage. A window function shapes the time-domain waveform such that the first and last samples are exactly zero, and the samples in between are multiplied according to a mathematical function that is symmetric around the center and tapers off away from the center. Thus, by applying a window function, an aperiodic waveform is forced to be periodic. When computing the FFT of a waveform to which a window function has been applied, a weighting factor must also be taken into account so that the correct FFT signal amplitude level is recovered after the windowing. Genalyzer takes this effect into account. + +In the [leakage and spectral-analysis example](https://github.com/analogdevicesinc/genalyzer/blob/main/bindings/python/examples/gn_doc_spectral_analysis2.py) Python script, we used Blackman-Harris window as follows: +```{code-block} python +# signal configuration +npts = 30000 # number of points in the signal +fs = 4e6 # sample-rate of the data +freq = 375000 # tone frequency +phase = 0.0 # tone phase +ampl_dbfs = -1.0 # amplitude of the tone in dBFS +qnoise_dbfs = -60.0 # quantizer noise in dBFS +fsr = 2.0 # full-scale range of I/Q components of the complex tone +ampl = (fsr / 2) * 10 ** (ampl_dbfs / 20) # amplitude of the tone in linear scale +qnoise = 10 ** (qnoise_dbfs / 20) # quantizer noise in linear scale +qres = 12 # data resolution +code_fmt = gn.CodeFormat.TWOS_COMPLEMENT # integer data format + +# FFT configuration +navg = 1 # number of FFT averages +nfft = int(npts/navg) # FFT-order +window = gn.Window.BLACKMAN_HARRIS # window function to apply +axis_type = gn.FreqAxisType.DC_CENTER # axis type + +# generate signal for analysis +awfi = gn.cos(npts, fs, ampl, freq, phase) +awfq = gn.sin(npts, fs, ampl, freq, phase) +qwfi = gn.quantize(awfi, fsr, qres, qnoise, code_fmt) +qwfq = gn.quantize(awfq, fsr, qres, qnoise, code_fmt) + +# compute FFT +fft_cplx = gn.fft(qwfi, qwfq, qres, navg, nfft, window, code_fmt) +``` +The FFT plot of the tone where Blackman-Harris window has been applied prior to computing the FFT is shown below for reference. +```{figure} figures/fft.png + +FFT plot of a ``375 KHz`` complex sinusoidal tone sampled at ``4 MSPS``. +``` \ No newline at end of file diff --git a/requirements_test.txt b/requirements_test.txt index c8526e4..dc7f412 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -6,4 +6,5 @@ pytest-cov numpy setuptools matplotlib -tabulate \ No newline at end of file +tabulate +brokenaxes \ No newline at end of file