Author Topic: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)  (Read 151618 times)

0 Members and 6 Guests are viewing this topic.

Offline Trek

  • Contributor
  • Posts: 48
  • Country: ru
Re: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)
« Reply #475 on: June 21, 2026, 03:05:28 pm »
Hi everyone! Based on the work and findings of @taligentx, I have consolidated firmware flashing, dump and snapshot reading, into a single GUI application. Builds for macOS, Linux, and Windows are available here: https://github.com/rssdev10/wm-tools/releases/tag/v0.2.0.

I welcome any feedback you may have, but please note that the current implementation is a POC only.
Good afternoon. Could you please explain how the points are plotted on the graph? With a sampling rate of 250 Ms/s, there should be 2 samples per period for a 120 MHz signal. I thought the point's coordinate corresponds to the value obtained at each sample. Apparently, it's not the case here. So how is the point's coordinate determined on the graph in this instance?
 

Online BillyO

  • Super Contributor
  • ***
  • Posts: 2978
  • Country: ca
Re: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)
« Reply #476 on: June 21, 2026, 03:14:05 pm »
Most oscilloscopes (all I think) use or have the option of using sin(x)/x interpolation (aka sinc interpolation).  This is what the Zeeweii DSO3D12 uses to reconstruct a signal from discrete data points.  With only 2.1 points per cycle you will get a sine wave regardless of the actual signal being measured.  This is perfectly normal given the only 250Ms/s.  Most decent scopes give you at least 5 - 10 points per cycle allowing much better reconstruction.  Top of the line scopes offer even more.

Basically, with a scope that costs under $100, you get what you pay for.

I have one of these little scopes and I only use it for signals below 50Mhz.  It works quite well in that range.

Edit:  Not sure what software you are using there, or what it is doing with the signal.
« Last Edit: June 21, 2026, 03:16:41 pm by BillyO »
Bill
----
 
The following users thanked this post: Trek

Offline Dave_g8

  • Regular Contributor
  • *
  • Posts: 64
  • Country: gb
Re: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)
« Reply #477 on: June 21, 2026, 04:35:47 pm »
Good afternoon. Could you please explain how the points are plotted on the graph? With a sampling rate of 250 Ms/s, there should be 2 samples per period for a 120 MHz signal. I thought the point's coordinate corresponds to the value obtained at each sample. Apparently, it's not the case here. So how is the point's coordinate determined on the graph in this instance?

Hi,
I have some doubt about the reported sampling rate shown.
If the plot is from the debug data dump, then the points are discrete samples at the sampling rate. I believe that these are effectively the sample values from the ADC, and there is no sinc interpolation applied. For single channel mode, there are 60,000 points and for dual channel mode there are 30000 points per channel in the debug data dump. My understanding is that the sampling rate will depend on the selected time-base as per the tables attached.

The snapshot view will be different, since this is effectively the display information, so it is after all DSP functions including the sinc interpolation.
« Last Edit: June 21, 2026, 05:23:59 pm by Dave_g8 »
 
The following users thanked this post: Trek

Offline Dave_g8

  • Regular Contributor
  • *
  • Posts: 64
  • Country: gb
Re: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)
« Reply #478 on: June 22, 2026, 03:14:00 pm »
Good afternoon. Could you please explain how the points are plotted on the graph? With a sampling rate of 250 Ms/s, there should be 2 samples per period for a 120 MHz signal. I thought the point's coordinate corresponds to the value obtained at each sample. Apparently, it's not the case here. So how is the point's coordinate determined on the graph in this instance?

Hi,
Summary findings so far with respect to the PC application.

1. The GUI waveform showing 120MHz
This looks like a screenshot capture from the DSO3D12 (needs modified firmware). This has 300 points and is the waveform after sinc interpolation (tbc). The scale shown on the GUI may be wrong, since although the V/div, V/off and t/div values should initially be automatically populated from the screenshot protocol data, they can be manually modified in the GUI.

2. Debug Data Dump
The debug dump (works with standard firmware) and seems consistent with expectations. In single channel mode there are 60,000 samples and in dual channel mode 30,000 sample per channel. The effective sampling rate depends on the time-base setting on the DSO3D12.

Further notes are shown below. I hope this helps a little with your question and perhaps the developer can comment on the findings.

Kind Regards,
  Dave

After looking through the documentation in the source code zip files, there are several detailed documents which explain how the software is working.
An extract from the SCREENSHOT_PROTOCOL document is shown below.
2846346-0

1. The GUI waveform showing 120MHz
The image has 300 points and will be a screenshot received from the DSO3D12, and is therefore after sinc interpolation (tbc).
2846330-1

For some reason I think the t/div shown as 0.01ms should be 0.000001ms (10ns), which would give a time range of 120ns. Normally, the V/div, V/off and t/div should be automatically populated from the screenshot packet received from the DSO3D12, but the entries in the GUI can be manually changed. The Auto Measurements for Freq, PkPk also come directly from the screenshot packet.

2. Debug Data Dump
For interest, I have tried a basic test exporting the debug dump information from my DSO3D12.
AWG setting: 1kHz sinewave   
Time-base setting: 500us   
Display window: 6ms   
Expected sample rate: 10MSa/s (0.001ms)

In this case the V/div. V/off and t/div have to be manually entered. The displayed GUI is shown below. For some reason, the amplitude shown in the display seems a little low?
2846334-2

The waveform displayed on the DSO3D12 is shown below. The display shows the correct DC offset, the AWG nominal voltage swing is 0 to +2.5V.
2846338-3

From the exported csv file, the waveform for the first 10,000 samples is shown below.
As per the documentation, ADC 0..255 mapped to ±5 V (0 = −5 V, 128 = 0 V, 255 ≈ +5 V).
The raw data received from the debug dump seems to have a mid-point of 0V, so any DC offset would need to be accounted for when showing the real value.
2846342-4
« Last Edit: June 22, 2026, 10:56:20 pm by Dave_g8 »
 
The following users thanked this post: Trek

Offline Trek

  • Contributor
  • Posts: 48
  • Country: ru
Re: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)
« Reply #479 on: June 23, 2026, 02:29:46 pm »
Good afternoon.
Thank you for taking the time to answer my question. With your help, I think I figured out the situation.
1.   Dave_g8: "If the plot is from the debug data dump, then the points are discrete samples at the sampling rate...".
No, the graph was obtained from data I previously saved when receiving screenshot data from the DSO3D12 (SCREENSHOT_PROTOCOL, see file. Change the extension to .csv).
This is the result of what you wrote: "The snapshot view will be different, since this is effectively the display information, so it is after all DSP functions including the sinc interpolation."
Conclusion (answering my own question): The coordinates of the points for plotting the graph were taken from the screenshot data received from the DSO3D12, more precisely, they are in a CSV file, which contains coordinates of 300 points.
2.   You're right: "For some reason I think the t/div shown as 0.01ms should be 0.000001ms (10ns)...".
Yeah, that happened because I manually adjusted the V/div but didn't touch the t/div (being lazy), so there's a mismatch.
It turns out that if you get the data directly from DSO3D12, V/div and t/div are set automatically, but if you use previously saved files, you need to set them manually.
« Last Edit: June 23, 2026, 03:27:17 pm by Trek »
 

Offline Dave_g8

  • Regular Contributor
  • *
  • Posts: 64
  • Country: gb
Re: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)
« Reply #480 on: June 23, 2026, 04:49:17 pm »
Good afternoon.
Thank you for taking the time to answer my question. With your help, I think I figured out the situation.

Hi,
Thank you for the csv file from the screenshot capture.
With the t/div of 10ns, which is what your original capture showed, the effective time between each interpolated point is 10ns/25 = 0.4ns.
The screenshot capture (and the DSO3D12 display) is restricted to the compressed 300 bin information.
Normally the DSO3D12 display will show the average of the min/max bin values.
I think the undocumented button press Shift V(ch2) switches the display to show the min and max values. I tried this feature, but it does not seem to be particularly useful.
2846896-0

Additionally, I did a few more tests in debug data dump mode.
The number of points in the output depends on the time-base setting, and in some cases the data is interpolated.
The debug data dump is potentially more useful, since the depth of capture is up to 60,000 points, whereas the screenshot capture mode is restricted to the compressed 300 bins only.

Example
First enable the serial port by holding the power button whilst starting the PC capture program and pressing the listen button to connect.
Signal 100MHz sinewave from tinySA.
1. Initially press Auto and the signal should be shown on the DSO3D12
2. Set the time-base to 5ns
3. Press Stop
4. Press Menu > Meas(ch1) > Long press Save
5. Debug dump is sent to the capture program
6. After the data dump has completed, Press Menu
7. Whist still in stop mode adjust the time base to 10ns
8. Press Menu > Meas(ch1) > Long press Save
9. Debug dump is sent to the capture program
:
Repeat steps 6 to 9 with different time-base settings.
The results are as shown in the table below.
2846892-1

For the first 4 dumps, the output is 300 points, and the information appears to be sinc interpolated data.
For the remaining dumps up to the maximum depth, the time between points is fixed at 4ns (hardware sample rate) and the number of points increases depending on the depth, up to the maximum of 60,000 points.

Since the scaling does not seem to fully work at the moment, on the waveforms shown from the capture program, read “ms” as “ns” and frequency “Hz” as “MHz”.

100M_5ns: 300 points
2846876-2

100M_5ns_10ns: 300 points
2846880-3

100M_5ns_20us: 60,000 points
For this capture, the exported csv data is shown for a small portion of the capture.
There are 5 samples in a 20ns period (4ns /sample). In this case, it is clear that there is no sinc interpolation on the data.
2846884-4


If the data were post processed using sinc interpolation, the resulting waveform would look something like that shown below.
The blue dots are the discrete samples every 4ns and the red trace is the result after interpolation.
2846888-5
« Last Edit: June 23, 2026, 04:53:24 pm by Dave_g8 »
 

Online BillyO

  • Super Contributor
  • ***
  • Posts: 2978
  • Country: ca
Re: Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)
« Reply #481 on: June 23, 2026, 07:27:23 pm »
When they do sinc interpolation they usually do plot a continuous function, however, this is not the only way you have to do it.  You could also just calculate a bunch of discrete interpolated points and plot them instead.
Bill
----
 

Offline Trek

  • Contributor
  • Posts: 48
  • Country: ru

The debug data dump is potentially more useful, since the depth of capture is up to 60,000 points, whereas the screenshot capture mode is restricted to the compressed 300 bins only.

Yes, I agree with You that the debug data dump provides more information and will be very useful for those who study oscilloscopes and signals in more depth. As a regular user, I just need the standard oscilloscope functions and the ability to get a screenshot from DSO3D12 to my computer. But out of curiosity, a few questions arise:
1. The ADC sampling rate is 250 MHz. So the time between samples is 4 ns and can't be less. Where do the values of 0.2 ns, 0.4 ns, 0.8 ns and 2.0 ns in your table come from?
2. How do You determine whether input signal interpolation was applied when generating the image or not?

By the way, here is what Taligentx writes (https://github.com/taligentx/ZeeTweak):
«Notes:
•   At full 60k sample depth, it can take up to 20s to transfer the data. At the fastest ranges (5ns, etc), the debug function switches to a fast mode with interpolation and sends 300 samples.
•   The original debug dump converts the data to ASCII and prints it with spaces, line endings, etc. zeetweak.py extracts the data for each channel and saves as normal binary.»

Best regards, Trek.
« Last Edit: Yesterday at 03:44:44 pm by Trek »
 

Online BillyO

  • Super Contributor
  • ***
  • Posts: 2978
  • Country: ca
1. The ADC sampling rate is 250 MHz. So the time between samples is 4 ns and can't be less. Where do the values of 0.2 ns, 0.4 ns, 0.8 ns and 2.0 ns in your table come from?
I guessing you are just skipping over my posts.  Well, okay, but I'll say it one more time.  Interpolation.

2. How do You determine whether input signal interpolation was applied when generating the image or not?
There is no "input signal interpolation".  This makes no sense.  Interpolation is done after a frame of data has been acquired by the ADC and is done between the acquisition memory and the display rendering.

Dumping the acquisition memory will give you the raw data that was sampled by the ADC.


Bill
----
 

Offline Dave_g8

  • Regular Contributor
  • *
  • Posts: 64
  • Country: gb
Hi Bill,
Sorry for not commenting on your post.
I agree, there is no interpolated signal, it is the result of the post processing on the decimated data that has been captured from the ADC.
Kind Regards,
   Dave
 

Online BillyO

  • Super Contributor
  • ***
  • Posts: 2978
  • Country: ca
No worries.  My snarky remark was not meant for you Dave, but for the guy that keeps asking the same  basic question, to which the answer is always "interpolation".
Bill
----
 

Offline Dave_g8

  • Regular Contributor
  • *
  • Posts: 64
  • Country: gb
But out of curiosity, a few questions arise:
1. The ADC sampling rate is 250 MHz. So the time between samples is 4 ns and can't be less. Where do the values of 0.2 ns, 0.4 ns, 0.8 ns and 2.0 ns in your table come from?
2. How do You determine whether input signal interpolation was applied when generating the image or not?

When using debug data dump output, there appears to be two modes.
This was covered by the statement from Taligentx "At full 60k sample depth, it can take up to 20s to transfer the data. At the fastest ranges (5ns, etc), the debug function switches to a fast mode with interpolation and sends 300 samples."

With respect to your questions:
Q1. The ADC sampling rate is 250 MHz. So the time between samples is 4 ns and can't be less. Where do the values of 0.2 ns, 0.4 ns, 0.8 ns and 2.0 ns in your table come from?
A1. When the debug data dump outputs the 300 points, this is the interpolated result and the effective time between points can be 0.2ns, 0.4ns etc has shown in the example. There are 25 points per t/div. So for t/div = 5ns, the time between points = 5ns / 25 = 0.2ns. This is nothing to do with the sampling rate, which can vary between 250MSa/s and 500Sa/s in single channel mode, depending on the time-base setting.

Q2. How do You determine whether input signal interpolation was applied when generating the image or not?
A2a. The DSO3D12 display always shows the 300 point result after interpolation. This information is output in Screenshot mode.
A2b. In debug data dump mode, if there are more than 300 points, the results will be the raw ADC samples which will range from 250MSa/s (0.4ns) and 500Sa/s (2ms) in single channel mode, depending on the time-base setting.

I hope that covers your questions.

Regards, Dave
« Last Edit: Yesterday at 06:17:01 pm by Dave_g8 »
 
The following users thanked this post: Trek

Offline Trek

  • Contributor
  • Posts: 48
  • Country: ru
1. The ADC sampling rate is 250 MHz. So the time between samples is 4 ns and can't be less. Where do the values of 0.2 ns, 0.4 ns, 0.8 ns and 2.0 ns in your table come from?
I guessing you are just skipping over my posts.  Well, okay, but I'll say it one more time.  Interpolation.


I read all the posts quite carefully, including yours. Please don't take offence, Bill.
Interpolation is a general concept (term) whose meaning I know. In this case, the question was about a specific table with specific data.
Dave_g8, to whom the question was addressed, gave a detailed answer.
Best wishes, Trek.
 

Offline Trek

  • Contributor
  • Posts: 48
  • Country: ru

I hope that covers your questions.

Yes, I am quite satisfied with your detailed answers. Thank you very much.

«The DSO3D12 display always shows the 300 point result after interpolation. This information is output in Screenshot mode.»

It is this mode that interests me. It is possible to determine whether these 300 points are the result of interpolation or are simply data read from the ADC (of course, after the necessary processing). There are oscilloscopes for which interpolation can be turned off. DSO3D12 do not have such an opportunity. Maybe you have information under which scan parameters the image is displayed after interpolation, and under which without interpolation. It is possible that is always output after interpolation.
Best wishes, Track.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf