Products > Test Equipment
Bode Plot Computational Time for various DSOs
Martin72:
I´m playing with the thought to do the test which I did before not only with my scope, but also with my Neutrik A1 analyzer and with my PC plus Scarlet audio interface.
Not for checking the time but for the results in general.
Only limitation was that the neutrik won´t go up to 100Khz.
gf:
--- Quote from: RoGeorge on November 09, 2022, 09:29:50 pm ---Haw fast? Challenge accepted.
A single chirp should be plenty! ;D
This is the first I want to try:
[...]
--- End quote ---
Note that RG and the DUT's input impedance form a voltage divider, so it is not granted that the voltage at the DUT input is the same as the voltage generated by your VCO.
What do you mean with "get a 90* phase shifted DUT signal (here approximated by a delay looking at the 1/4 of the wavelength behind)"? 1/4 wavelength behind what? And which wavelength? How would you get a 90° phase shifted signal without a proper Hilbert filter?
At each point in time, you need to determine not only instantaneous amplitude, but also instantaneous frequency, in order to draw a Bode Plot. Note that the DUT's group delay can be frequency-dependent. If the chirp at the DUT input is linear, i.e. f(t)=f_start+k*t, then don't expect the same linear relation at the DUT output. You can't determine the instantaneous frequency any more alone from the point in time. The total duration of the response can also be longer than the duration of the chirp stimulus.
Since the transfer function is a function of frequency (not time), why not do it purely in the frequency domain, i.e. capture DUT input and DUT response to the complete chirp simultaneously, FFT both, and divide the two complex spectra to obtain the transfer function?
You can taper the chirp with a tukey window in order to reduce the ringing in the chirp spectrum and make it flatter, as explained in the 1st answer here.
RoGeorge:
--- Quote from: gf on November 10, 2022, 09:37:44 am ---What do you mean with "get a 90* phase shifted DUT signal (here approximated by a delay looking at the 1/4 of the wavelength behind)"? 1/4 wavelength behind what? And which wavelength? How would you get a 90° phase shifted signal without a proper Hilbert filter?
--- End quote ---
- 1/4 wavelength behind the moment of the current ADC sample, in time domain
- the wavelength can be deduced because the start moment of a chirp is known (the oscilloscope is triggered by the generator's "start of a new sweep" signal), and the variation (lin or log) of the chirp is also known, so the expected instantaneous frequency can be deduced
- it's not a proper 90° shifted signal, only an approximation of it
Now I see this topic is about the performance of existing instruments, and not about finding a faster way. Sorry for my offtopic here. I don't want to hijack this thread, but will be glad to talk more about pitfalls or new methods in the other thread, where I was trying to figure out a better way: https://www.eevblog.com/forum/programming/extract-precise-amplitude-and-phase-from-a-frequency-sweep-(vna-from-dsoawg)/msg4514039/#msg4514039
TopQuark:
Read this first, it is about doing bode plots with FFT:
https://www.eevblog.com/forum/testgear/siglent-sds2000x-hd-12bit-(published-for-chinese-domestic-market-only)/msg4489057/#msg4489057
So I spent some time rewriting this in Rust instead of Python, decreased the sample points (20M -> 2M), and saw the execution time drop from 30 seconds to 1.844 seconds for single data capture and bode plotting. The Rust program uses multithreading and SIMD acceleration.
https://github.com/TopQuark12/siglentRust/tree/bode
With this bump in speed, I can now do averages to reduce the bode plot trace noise, with 10 averages + plotting taking 13.558 seconds. I've attached the resulting graphs.
2N3055:
--- Quote from: TopQuark on November 10, 2022, 06:56:04 pm ---Read this first, it is about doing bode plots with FFT:
https://www.eevblog.com/forum/testgear/siglent-sds2000x-hd-12bit-(published-for-chinese-domestic-market-only)/msg4489057/#msg4489057
So I spent some time rewriting this in Rust instead of Python, decreased the sample points (20M -> 2M), and saw the execution time drop from 30 seconds to 1.844 seconds for single data capture and bode plotting. The Rust program uses multithreading and SIMD acceleration.
https://github.com/TopQuark12/siglentRust/tree/bode
With this bump in speed, I can now do averages to reduce the bode plot trace noise, with 10 averages + plotting taking 13.558 seconds. I've attached the resulting graphs.
--- End quote ---
What dynamic range you have here? I said many times, there are many ways to do FRA, but they have their own problems. Single frequency sweep is for a reason. It allows variable stimulus and amplification for every single frequency.
What happens to a switcher when you insert broadband noise in it's feedback loop?
Also is this a Bode plot on a scope? How is that connected to the topic? Please don't dilute the thread.
Rogeorge has a topic where they discuss making a software FRA separate from the scope in different variants.
There your post would be very much appreciated and on topic.
Navigation
[0] Message Index
[*] Previous page
Go to full version