Products > Test Equipment

Trying to display bandwith via Math on Siglent SDS2k+/2kHD/800X HD

<< < (13/19) > >>

gf:

--- Quote from: Performa01 on March 18, 2024, 09:46:53 pm ---I’ve once measured the pulse spectrum with a 2 GHz DSO and found the bandwidth to be ~378 MHz, so it is perfectly plausible to have about 1.1 dB amplitude drop at 244 MHz (unfortunately, I didn’t measure any other frequencies between 100 and300 MHz):

--- End quote ---

In order not to suffer from any frontend frequency response, you could of course also measure it with a spectrum analyzer.


--- Quote ---Since the polarity of the resulting pulses depends on the direction of the signal edges, I’ve added the abs() function to get only positive pulses like with the real pulse generator – once again, this is for best conformity with the previous test.

--- End quote ---

The alternatig polarity of the pulses does not matter for this use case. It works, too.
I really would avoid abs(). It is a nonlinear function and introduces harmonic distortion.
It does not only invert every 2nd pulse, but it also corrupts the post ringing of each pulse.


--- Quote ---It’s funny; the original pulse as it was seen by the SDS824X HD was almost 1.8 ns wide and had 1.2 ns rise-time. The software generated pulse was clearly faster, yet the FFT-results are so much worse?

--- End quote ---

Maybe try w/o abs().


--- Quote ---Now for the (20 times) interpolation – which shouldn’t be strictly necessary, as the initial test with the pulse train has proven.

--- End quote ---

The question is: Is the the d/dt algorithm is still the same as on SDS2000? :-// Is it still implemented as a simple finite difference between samples[j+N] and samples[j], where N is configurable, but >= 4? This finite difference approximation is equivalent to applying a boxcar average over N samples, in addition to the differentiation. I.e. it acts as an (undesired) lowpass filter. Then up-sampling is indeed supposed to reduce the unwanted lowpass effect, since N samples at the higher sample rate correspond to a shorter time interval. Also, allowing N=1 (w/o up-sampling) would help to reduce the unwanted lowpass effect (but not so much as with up-sampling).

Alternatively, it would be possible to design a FIR filter for the differentiation, which is pretty flat up to (say) 0.9*Nyquist (less than 0.1dB ripple, with ~75 taps). With such a differentiator, up-sampling would definitively become useless, and it would also eliminate the need to configure a finite difference interval. Since a FIR engine seems to be available anyway, it could also be used for differentiation.


Btw, may I ask you to post .bin files of your pulse train signal and your square wave signal from the SDG, captured on the SDS800X at full BW and 2GSa/s, and if possible also a captured Bodnar square wave? [ Please not too few samples. If you don't mind, then even 100M points. In case of aliasing, there is a chance that a huge FFT can still separate folded aliases from the spectral lines coming from the 1st Nyquist zone, if the signal frequency does not correlate exactly with the sampling clock. The smaller the frequency deviation, the more FTT points are required for this separation. ]

Performa01:

--- Quote from: gf on March 19, 2024, 12:30:26 pm ---
--- Quote from: Performa01 on March 18, 2024, 09:46:53 pm ---I’ve once measured the pulse spectrum with a 2 GHz DSO and found the bandwidth to be ~378 MHz, so it is perfectly plausible to have about 1.1 dB amplitude drop at 244 MHz (unfortunately, I didn’t measure any other frequencies between 100 and300 MHz):

--- End quote ---

In order not to suffer from any frontend frequency response, you could of course also measure it with a spectrum analyzer.

--- End quote ---
I’ve used the DSO, just because it was convenient. As you’re well aware, a FFT means real-time, and this is in contrast to a traditional swept spectrum analyzer. And then the SDS6204 is more accurate than the average SA, at least if only a fraction of its bandwidth is actually utilized, just as in this case. Because of all this, I rarely use a SA in the range up to 2 GHz anymore.

And then, the problem was not lack of accuracy due to frontend frequency response, but simply the fact that I didn’t take the required measurements back then. So all that’s needed were some more measurements, and since you seem to prefer spectrum analyzers, I’ve used one:


SA44_Pulsetrain_1MHz_W1ns_RT500ps

As can be seen the spectrum is about -1.5 dB at 245 MHz, whereas the FFT on the SDS800X HD with original pulse-train was only ~1.1 dB low compared to a serious measurement with levelled signal source.

So there is still some mysterious 0.4 dB discrepancy – but then again, maybe we shouldn’t worry too much about ~5.4% deviation at 245 MHz on a 200 MHz DSO…



--- Quote from: gf on March 19, 2024, 12:30:26 pm ---The alternatig polarity of the pulses does not matter for this use case. It works, too.
I really would avoid abs(). It is a nonlinear function and introduces harmonic distortion.
It does not only invert every 2nd pulse, but it also corrupts the post ringing of each pulse.

--- End quote ---
Good objection! I didn’t expect the post-ringing to play a major role here. Of course I’ve tried it without abs() first. Only when I looked at the pulses in the Y-t view, which I have presented in a screenshot, I noticed that the negative pulses were clipped and wanted to show unipolar pulses anyway. And, as mentioned in my posting, I wanted to make it as equal as possible to the real pulses.

Now I’m thinking about the clipping – if this happened to an input channel, it would of course spoil the whole experiment. But for the math channels, these are just viewing parameters, so the clipping was just visual and no real data would have been lost.



--- Quote from: gf on March 19, 2024, 12:30:26 pm ---
--- Quote ---It’s funny; the original pulse as it was seen by the SDS824X HD was almost 1.8 ns wide and had 1.2 ns rise-time. The software generated pulse was clearly faster, yet the FFT-results are so much worse?

--- End quote ---

Maybe try w/o abs().

--- End quote ---
I do not know what’s been different today, but the result most definitely is different:


SDS824X HD_FFT_FR_Square_100ns_diff_int20

At a first glance it looks a little better, even though still not nearly what we got with the real pulses.
100 MHz: -0.549 dB
200 MHz: -2.261 dB
244 MHz: -3.624 dB

Furthermore, there is now a zero at 500 MHz, which shouldn’t be there and is in none of my previous screenshots.



--- Quote from: gf on March 19, 2024, 12:30:26 pm ---The question is: Is the the d/dt algorithm is still the same as on SDS2000? :-// Is it still implemented as a simple finite difference between samples[j+N] and samples[j], where N is configurable, but >= 4? This finite difference approximation is equivalent to applying a boxcar average over N samples, in addition to the differentiation. I.e. it acts as an (undesired) lowpass filter. Then up-sampling is indeed supposed to reduce the unwanted lowpass effect, since N samples at the higher sample rate correspond to a shorter time interval. Also, allowing N=1 (w/o up-sampling) would help to reduce the unwanted lowpass effect (but not so much as with up-sampling).

--- End quote ---
Yes, it works still the same. As I’ve already stated back then for the SDS2000X HD, the resulting pulse shape and parameters do not depend on the dx parameter – well, at least not for a square wave and up to dx = 20. It seems obvious that it would be different on a sine.

I guess that we don’t get n < 4, simply because the operation gets really noisy then. On the 8-bit machines (where the math results were 8 bits as well), differentiation with low dx parameters was next to useless.



--- Quote from: gf on March 19, 2024, 12:30:26 pm ---Btw, may I ask you to post .bin files of your pulse train signal and your square wave signal from the SDG, captured on the SDS800X at full BW and 2GSa/s, and if possible also a captured Bodnar square wave? [ Please not too few samples. If you don't mind, then even 100M points. In case of aliasing, there is a chance that a huge FFT can still separate folded aliases from the spectral lines coming from the 1st Nyquist zone, if the signal frequency does not correlate exactly with the sampling clock. The smaller the frequency deviation, the more FTT points are required for this separation. ]

--- End quote ---
As mentioned several times already, I don’t have a fast pulser like the one from Leo Bodnar. I would order one, but they are sold out at the moment. I would be able to create square waves with faster edges, but only at higher frequencies. But then again, I don’t think that it makes much of a difference for a 200 MHz device.

In fact, the amplitude of the pulse train is already significantly reduced to about 50% by the SDS824X HD frontend.

Well, here you go:

SDS824X_HD_Bin_Pulse_W1n_TR500p_C4

SDS824X_HD_Bin_Square_10M_TR500p_C4


Martin72:
So it really doesn't seem to work like the 2000X HD...
I tried to recreate this, using the bodnar pulser as a signal.
It may be too "steep" with its 40 hp rise time, but I can't get your result - well, I could have overlooked something, but I don't want to rule it out.

gf:

--- Quote from: Performa01 on March 19, 2024, 06:40:36 pm ---Furthermore, there is now a zero at 500 MHz, which shouldn’t be there and is in none of my previous screenshots.

--- End quote ---

Hmmm. A d/dt finite difference approximation with 4 samples interval (w/o up-sampling) is basically expected to have zeros at 500 and 1000 MHz. That's what I meant with "unwanted lowpass". However, with prior 20x up-sampling, I would expect the zeros to shift to 10GHz and 20 GHz. And obviously, you did up-sample. Was the d/dt possibly nevertheless calculated with a 2ns interval instead of 4 samples of the higher (40Gs/s) sample rate?


--- Quote ---and since you seem to prefer spectrum analyzers...

--- End quote ---

I just thought it might be an option, too. Looks a bit rippled, though. Not so nice. Reflections?
You convinced me - it's obviously not the better option.

Thanks for the .bin files. I did take a first look. The differentiated square wave edges (doing my own differentiation) definitively contain more high frequency contents than the impuse train - which was to be expected. The difference is roughly what to be expected from a 1ns impulse width if I assume that the signals have been generated by applying the same ~500ps edge shaper to a) an ideal 1ns pulse train, and b) to an ideal square wave.

EDIT:


--- Quote ---I guess that we don’t get n < 4, simply because the operation gets really noisy then. On the 8-bit machines (where the math results were 8 bits as well), differentiation with low dx parameters was next to useless.

--- End quote ---

n=1 works nicely with your data. Welch's method estimates a confidence interval of less than 0.1dB up to 500 MHz. So it is not very noisy for this particular use case. Also tried to truncate the data to 8 bits. Still worked nicely.

EDIT:

Added images (calculated from your data):
- figure1.png: comparison pulse train vs. differentiated square wave
- figure{3,4,5}.png: comparison pulse train vs. differentiated square wave, zoon-im to 100, 200, 244 MHz
- figure2.png: comparison of different d/dt methods w/o upsampling

About -3.1dB @244MHz with the square wave seems to be almost spot on :)

gf:

--- Quote from: Martin72 on March 19, 2024, 07:30:42 pm ---So it really doesn't seem to work like the 2000X HD...
I tried to recreate this, using the bodnar pulser as a signal.
It may be too "steep" with its 40 hp rise time, but I can't get your result - well, I could have overlooked something, but I don't want to rule it out.

--- End quote ---

Yes, does not look right :( But no idea what might be wrong.
Does it work better with a slower timebase? (just a random guess)

Navigation

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod