Trying to display bandwith via Math on Siglent SDS2k+/2kHD/800X HD - Page 1
Forum section: electronics / testgear

author: Martin72
author_rank: Super Contributor
timestamp: May 14, 2022, 09:08:21 pm
content: Hi all,As mentioned (and suggested by 2N3055) in the Siglent SDS2000X plus thread, I´m starting a dedicated one for this "problem".Actually in questionmarks because it´s not really clear if this is a problem sitting in front of the scope...What was happen ?In the siglent thread the question came up if you can´t display the bandwith (frequency response) by using the math functions.You can:https://www.eevblog.com/forum/testgear/siglent-sds2000x-plus-coming/msg4156720/#msg4156720I´ve tried to reproduce it on my sds2504x+ but it failed somehow:https://www.eevblog.com/forum/testgear/siglent-sds2000x-plus-coming/msg4157086/#msg4157086Then 2N3055 took another scope from siglent, it works.And so on, and so on, see the following posts there.The expression used in the first time by 2N3055 is FFT(d(Channel)/dx).At work I checked this with three different scopes from lecroy.-Waverunner 9054, 500Mhz, 20GSa/s-HDO6034A, 350Mhz, 10GSa/s-Wavesurfer WS3024Z, 200Mhz, 4GSa/sOn all the models you can´t do very much on the FFT adjustments(like memorypoints, markers and so on the siglent got).Max. resolution was 10ns/div, above (5ns and more) the ws3024z didn´t display the function proper(No problem for the Waverunner)Today I used the same settings at home on my siglent for comparison all the scopes directly.Tomorrow I´ll follow the questions/suggestions from gf:Quotehttps://www.eevblog.com/forum/testgear/siglent-sds2000x-plus-coming/msg4171216/#msg4171216Goal of this new thread is to find out, if this is a bug to fix or if this siglent model is simply not capable to do this.Or it´s me who is not capable to do this...The last is no problem, I´m always willing to learn.EDIT : Title changed.

author: Martin72
author_rank: Super Contributor
timestamp: May 14, 2022, 09:10:16 pm
content: Pics from the "big" scopes..

author: rf-loop
author_rank: Super Contributor
timestamp: May 15, 2022, 08:24:05 am
content: I do not have same kind of signal available now.But because these are just partially for fun, I use SDS1104X-E oscilloscope Trig out for get edge what is still possible to measure with this scope, so it is suitable signal for this scope when it works 2GSa/s real samplerate. (if use 1GSa/s this signal rise is too fast). This all is not meaningful at all in this case.But then this what was @gf ask (originally in other thred)Quote from: gfWhen I look your images I can not find Interpolation.Here I have used SDS2504X HD- FFT(d(Intrp(C1))/dt)- 20x interpolation- dx 4 (as short as possible)- FFT Flat Top window function1st image (1)a is 0-2GHz span (iterpolated samplerate 40GSa/s)2nd image (2)a is full 0-20GHz span (iterpolated samplerate 40GSa/s)Full span based to real samplerate is of course 0-1GHz

author: Martin72
author_rank: Super Contributor
timestamp: May 15, 2022, 10:11:16 am
content: Hi,QuoteIt´s because I didn´t it so far - Until now...QuoteHere it is, dx is 4 and can´t be lowered.I´ve saved all timebases between 2µs and 2ns, here a selection.

author: gf
author_rank: Super Contributor
timestamp: May 15, 2022, 11:10:07 am
content: What was the exact math expression here? I just see that it starts with "FFT(Intrp(..."I think I aked for:FFT(d(Intrp(Cx))/dt).I.e. interpolate first, then d/dx, and finally FFT.

author: Martin72
author_rank: Super Contributor
timestamp: May 15, 2022, 11:18:11 am
content: QuoteDamned..See settings pic...Will repeat it later

author: rf-loop
author_rank: Super Contributor
timestamp: May 15, 2022, 12:11:32 pm
content: Just a small margin note (Settings.png)Naturally if select Menu Style , it does not cover the signal area.Sometimes when take document images, it can be useful to keep some desired settings menu visible, without loosing any part of signal. (in some cases signal rendering for display may be better with Menu Style )

author: tautech
author_rank: Super Contributor
timestamp: May 15, 2022, 01:32:10 pm
content: Quote from: rf-loop on May 15, 2022, 12:11:32 pmThis only works if the user has fully explored Display settings and set Hide Menu = OFF .....not some setting of 10s that Siglent think best for newbies to this scope....where's my menu gone ?

author: Martin72
author_rank: Super Contributor
timestamp: May 15, 2022, 02:48:57 pm
content: Thank you,It was my hope that the real siglent-knowers join this thread after they were very calm in the original one and indeed, the solution was the menu style..Back to topic..@gf:Now the corrected ones and you´ll see, nothing hast changed in relation to the expression before.

author: gf
author_rank: Super Contributor
timestamp: May 15, 2022, 04:05:50 pm
content: Not good. Seems like dx=4 were interpreted as dx=80, when d/dx is applied to 20x interpolated data. At timebase >= 50ns/div, this makes this d/dx implementation more or less useless for frequencies above say 100MHz1)[ I'd rather expected that dx=4 means 4 samples of the actual sample rate of the given data, i.e. 4 samples @40GSa/s when the data fed to d/dx is 20x interpolated. ]1)There is no clear border, of course, but it depends on the tolerated error.The diagram below show the amplitude error (in the frequency domain) of a 2-point finite difference approximation of the 1st derivative, for delta x = 2ns.

author: Martin72
author_rank: Super Contributor
timestamp: May 15, 2022, 08:11:15 pm
content: In the manual, dx can be selected between 2 and 20.In real, it starts with 4, higher you can only get when using the keypad - the knob does nothing.And: When you choose "max" on the keypad, dx has the value 256..Tomorrow I´ll look at the adjustments the lecory scopes offers on d/dx and FFT.I expect nearly "nothing", because "somehow" it works as expected without doing anything special.

author: gf
author_rank: Super Contributor
timestamp: May 16, 2022, 05:48:56 am
content: Quote from: gf on May 15, 2022, 04:05:50 pmMore exactly I should add "... for timebase >= 50ns/div" to this statement.At <= 20ns/div the flat spectrum is not plausible either, but this seems to be a different issue.

author: Martin72
author_rank: Super Contributor
timestamp: May 16, 2022, 03:16:34 pm
content: Hi,What else can we do to manifest that this is a bug ?

author: tv84
author_rank: Super Contributor
timestamp: May 16, 2022, 05:52:53 pm
content: Quote from: Martin72 on May 16, 2022, 03:16:34 pmA placard??

author: Martin72
author_rank: Super Contributor
timestamp: May 16, 2022, 06:16:40 pm
content: Later...

author: gf
author_rank: Super Contributor
timestamp: May 16, 2022, 06:22:32 pm
content: Quote from: Martin72 on May 14, 2022, 09:08:21 pmThe spectrum in the WS... image also looks a bit strange in the 900-1000 MHz region. I wouldn't expect it to ascend again.Since you just display FFT(C1), there is no d/dx in the play which could garble the spectrum. I suggest to check how it looks up to 2GHz (half sample rate).And the time domain trace shows some ripple as well (~10 cycles / div => ~1GHz), which is too regular to be random noise.

author: gf
author_rank: Super Contributor
timestamp: May 16, 2022, 06:38:11 pm
content: Quote from: Martin72 on May 16, 2022, 03:16:34 pmOne key aspect seems to be the definition of a "point".Quote from: HandbookOn the one hand it talks aboutpixel points, on the other hand it talks aboutsampled points(which I would associate with samples). So what is really a "point"At 1us/div, 4 "pixel points" were 40ns, and at 2us/div, 4 "pixel points" were 80ns (according to the definition in the handbook: 1 div = 100 pixel points).But that's not what we see. The spectrum with the two big lobes tells us that the actual dx was 2ns, at all timebases >= 50ns/div. And 2ns are 4 samples @2GSa/s.So the implementation obviously assumes that dx isin samples, and the stuff in the handbook regarding div and pixel points seems to be wrong an just leads to confusion.Nevertheless, "number of samples" is still an incomplete time specification if the sample rate of these samples is not specifed as well.For your experiments at > 50ns/div, the scope obviously assumed the raw sample rate of 2GSa/s, even if the d/dt operator is applied to interpolated samples @40GSa/s.While this could be considered correct, if it were unambiguously documented, I still find it a significant limitation, since It hiders you to do what I intended to do.[ Similiar to a camera in "auto" mode, which does whatever it thinks -- just not what the photographer wants it to do]For <= 20ns things still need more investigation. Could you please capture a single shot of say 4,000,000 raw samples (@2GSa/s) of this signal (I guess 200µs/div gives you that many points?), save them to an ASCII file, and post a link to the file? I would like to get a feeling for what can be extracted from these data, and what to expect.

author: Martin72
author_rank: Super Contributor
timestamp: May 16, 2022, 07:19:25 pm
content: Now I got a appx 125MB csv. file on the stick..What your post with the WS concerns, I want to repeat this thing, because a day before it was different(FFT, last pic from the first post here):(see pic below)Can´t believe it´s only because the samplerate was 2GSa/s at this time (nice "trap" : Measure-paras were active...).

author: Martin72
author_rank: Super Contributor
timestamp: May 16, 2022, 07:27:00 pm
content: https://drive.google.com/file/d/1vUSKhswd9ki8PlOd07ZWp-cu3aet98cf/view?usp=sharingcsv-file

author: gf
author_rank: Super Contributor
timestamp: May 17, 2022, 06:54:24 am
content: Thank you. I'll take a look. It can take a while until I find some free time...

author: Performa01
author_rank: Super Contributor
timestamp: May 17, 2022, 08:52:53 am
content: The “stuff in the handbook” is most likely a (copy&paste) leftover from prehistoric manuals dating back to long forgotten times, when math and measurements were performed on screen data.The “Dx” parameter in the SDS2000X Plus math refers to sample points and we actually need to take the sample rate into account whenever we want to convert it to an absolute time.However, this is a deep memory scope; a sensible setting for the max. record length is 10/20 MPts, which results in a constant sample rate up to 1 ms/div, i.e. a record length of 10 ms. Heck, if the need should be, this could even be extended to 100 ms by selecting 100/200 MPts in the Acquire menu. I very much doubt that many users will have the need for the derivative function on slow waveforms <10 Hz and then at frequently changing horizontal time bases.The little but more advanced brother SDS2000X HD already offers a constant sample rate setting just like the SDS6000. This can solve any problems and situations, where a function depends on the sample rate.Regarding the attempts to get the frequency response from a fast risetime pulse, there are a number of reasons, why it doesn’t work as expected on the SDS2000X Plus right now.1. The scale is wrong. The FFT-sample rate is increased by two orders of magnitude whenever the argument is a derivative. This bug seems to be exclusive to the SDS2000X Plus.2. The input field of the formula editor is limited, so we just cannot add the average function there. But this is mandatory to get a nice and clean frequency response graph. On the other Siglent scopes we can use the average acquisition mode, so the lengthy expression “average()” does not eat up precious formula space.A longer formula string has already been requested. I’ve also reported the FFT bug today.

author: Performa01
author_rank: Super Contributor
timestamp: May 17, 2022, 09:08:51 am
content: Here’s a demonstration what the SDS2504X HD looks like with a moderate ~500ps risetime pulse coming from the SDG7102A. 32x averaging before up-sampling.

author: gf
author_rank: Super Contributor
timestamp: May 17, 2022, 10:57:58 am
content: Quote from: Performa01 on May 17, 2022, 08:52:53 amAt 20ns/div and 10ns/div, FFT(Cx) shows a sample rate of 50GSa/s, and at 5ns/div it shows a sample rate of 200GSa/s.This is obviously the interpolated sample rate, and it seems that interpolation joins in automatically at <= 20ns/div.What is dx=4 now supposed to mean at (say) 10ns/div? Still 2ns (4 / 2 GSa/s), or 80ps (4 / 50 GSa/s)?EDIT: Looking at the image in your previous message it must be (significantly) less than 2ns, otherwise the spectrum would look different. But is it 80ps then?

author: rf-loop
author_rank: Super Contributor
timestamp: May 17, 2022, 02:50:01 pm
content: Quote from: Performa01 on May 17, 2022, 09:08:51 amPerhaps marker 1 horizontal position is better in ≥ 1/2 Δf(also looks weird your marker 2 vertical position looks like below trace level)

author: gf
author_rank: Super Contributor
timestamp: May 18, 2022, 06:14:41 am
content: Related to the frequency response calculation I also wonder:Is it possible to add/subtract/multiply/divide freqency domain traces (results of FFT) with math functions?If yes, in which space is the operation carried out? Complex, linear magnitude, log magnitude (dB)?Is it possible to load an (externally and synthetically generated) trace from e.g. USB stick, and use it as argument to math functions?

author: Performa01
author_rank: Super Contributor
timestamp: May 18, 2022, 07:02:48 am
content: Quote from: gf on May 17, 2022, 10:57:58 amWell, that’s the problem. An SDS2504X HD for instance doesn’t show this weird behavior. FFT sample rate remains 2 GSa/s all the way down to 500 ps/div – and so does the SDS2000X Plus, as long as there is no d/dt expression as argument for the FFT.Quote from: gf on May 17, 2022, 10:57:58 amI’ve checked the d/dt operation for the SDS2000X Plus – width and delay of the numerically generated pulse remain constant for any given Dx setting, regardless of the time base, hinting on a constant sample rate.You are certainly right in that there is an interpolation kicking in at time bases where the number of samples is too low to fill the screen buffer. For the screen display this is selectable linear (x) or Sinc (sin(x)/x) or off (dots mode), but for automatic measurements it is always there in the background. This enables time measurements with much better resolution than what could normally be expected from 2 GSa/s. I don’t have the details, yet I think the math usually doesn’t use the interpolated data.It just so happens that we’ve already identified a bug regarding the interpolation. It operates quite differently than on other Siglent scopes and it is obviously wrong, if only because the interpolation method x or sin(x)/x still affects dot mode. All in all, I strongly suspect that this current bug with the FFT(d(X)/dt) math is just another symptom of this very bug. Anyway, my report about incorrect FFT sample rate has already been confirmed by Siglent by now, so we can expect a fix for the next FW update.Quote from: gf on May 17, 2022, 10:57:58 amAccording to my investigations, it strongly looks like it’s always operating at the original (true) sample rate. Consequently, a Dx parameter of 4 means dt = 2 ns in half channel mode.Quote from: gf on May 17, 2022, 10:57:58 amThis is certainly true but has a different cause. The math for this test is FFT(Intrp(d(C4)/dt)); applying an upsampling coefficient of 20, we get an FFT bandwidth of 40 GSa/s and the result isn’t very convincing yet.See attached screenshot. The upper window shows the original pulse edge at 10 ns/div and math channel F1 that processes just d(C4)/dt, hence showing the pulse from the differentiated transition.SDS2504X HD_Math_FR_10ns_NormalOnly the averaging in the acquisition menu makes things work, see the second screenshot:SDS2504X HD_Math_FR_10ns_Avg16The FFT-bandwidth has increased by a factor of ten and you can also compare the properties of the pulse that results from math function F1. The additional data gained from averaging are true samples and not interpolated redundant data as with Intrp(), therefore the d/dt operation with Dx = 4 now actually works with a 200 ps step. Since this is similar to RIS (Random Interleaved Sampling), some resampling/interpolation is still required to translate the additional data into an evenly spaced sample stream. This could also be the reason why the increase in sample rate does not conform with the number of averages (16 in this example).

author: Performa01
author_rank: Super Contributor
timestamp: May 18, 2022, 07:14:31 am
content: Quote from: rf-loop on May 17, 2022, 02:50:01 pmThanks for the hint – this is when we get a creature of habit…Yes, the accuracy is severely affected and I already wondered, why the frequency response appears better than it actually is.Regarding the position of marker 2, there is nothing I can do about it. Might look into this later and see if the accuracy is affected by this. If so, I’ll file a bug report.I have attached a cursor measurement and now the result is as expected, i.e. the measured bandwidth is only 520 MHz whereas it’s actually 570 MHz.

author: gf
author_rank: Super Contributor
timestamp: May 18, 2022, 11:44:49 am
content: Quote from: Performa01 on May 18, 2022, 07:02:48 amHow is this actually implemented? Does it change the ADC clock phase for each acquisition being "averaged"?RIS - asdocumented by LeCroy- rather requires a TDC and an analog trigger.Or is it just a fractional sample time shift, in order to align the (interpolated) trigger points of the traces, after up-sampling?

author: 2N3055
author_rank: Super Contributor
timestamp: May 18, 2022, 10:11:48 pm
content: Quote from: gf on May 18, 2022, 11:44:49 amIt is interpolated trigger time alignment. But there is no upsampling. Scope has it's internal "mathematical" timebase that is needed to be able to interpolate and align the triggers that is much finer than sample rate. Samples are mapped into that space.So it reconstructs many points of the curve from repeated acquisitions, and retriggering timing that is not fully monotonic and fact that sampling clock and external signal are not synchronised, performs same function that sequential/random sampling does.Apart from excellent contributions by Performa01, I would also add that after you average and differentiate, such created dataset will have some size that will not be same as a number of FFT bins. Number of FFT bins will be a power of 2 number that will fit into dataset size.That makes for an interesting contribution to this behaviour.Namely, FFT should be performed only on a dirac pulse part of differentiated data, in such a way that the pulse is time centered in a data set.Ideally a time gate should be used to pick a part of differentiated data that we want to FFT.Sometimes you have a lot of data on screen but FFT picks just first 512 points.If you then take horizontal position for time domain signal knob, and move that signal edge is to the left (or right) of the center, FFT will change. Of course it would, because it is looking only on part of the time of the data we see on the screen. FFT algorithm picks data on the beginning of the buffer from the left (from the start) and takes what it decided it needs. Rest of the data to the right of that point is not taken into calculation.That can be taken to the extreme such that if you start moving the edge to the right of the centre of the screen, at some setting you can make FFT plot showing nothing, because it looks only on the flat part of the curve to the left of the edge.Complex math can get complex...

author: gf
author_rank: Super Contributor
timestamp: May 19, 2022, 08:34:16 am
content: Quote from: 2N3055 on May 18, 2022, 10:11:48 pmOK, just that (i.e. no special hardware support).QuoteThe major difference is how the trigger time is determined.A trigger point interpolation still suffers potentially from aliasing when the trigger is implemented fully digital.OTOH, RIS overcomes the Nyquist limit with an analog trigger and TDC circuit, in addition to the ADC.QuotePerforma01 got a 10x higher "virtual sample rate", though, in the screenshots above, when averaging acquisition was enabled.I actually don't see how points with different arbitrary time could be averaged, so a re-sampling to a common regular grid (at higher resolution, say 1/10 sample) makes sense to me.Then each of the the 10 bins per sample can be averaged. Some bins may still remain empty if the trigger point of no trace happens fo fall into their time slot.In order to be suitable as input to operations that need a regular, non-sparse time grid (e.g. FFT), additionaly the empty bins need to be estimated/interpolated and filled-in.QuoteIf the FFT window starts at the left edge of the screen, and if its size is not visualized (graphically) on-screen, then it is indeed difficult to center the signal of interest in the FFT window w/o manually calculating its size first [in seconds, or div].Picking the FFT points from the center of the screen were IMO a more natural choice - then it were sufficient to center the data of interest on the screen.Even better were a user-adjustable FFT window position, with proper graphical visualization.

author: tv84
author_rank: Super Contributor
timestamp: May 19, 2022, 09:26:41 am
content: Quote from: gf on May 19, 2022, 08:34:16 amThat would be the best solution! Shouldn't be any rocket science and it would be very educational (for all users).As it's usually implemented (without any of that info/choices) only experts like you guys are able to talk about it and have a real critic opinion of what is being shown. And as we been reading, even for you guys it's not easy to understand the factors behind what you are seeing.

author: 2N3055
author_rank: Super Contributor
timestamp: May 19, 2022, 03:17:07 pm
content: Quote from: gf on May 19, 2022, 08:34:16 amI would call upsampling a interpolation of additional points between real sampled data by virtue of some interpolating math functions from single set of original data.Siglent Averaging acquisition mode will take samples from several (even thousands) of separate trigger events and overlap them on top of each other. It is repetitive interlaced sampling so higher sample rates are very real. As I explained, trigger interpolation IS used to map sampled data to much higher resolution time grid and that is what scope internally has. So sampled data are simply realigned in time and placed in a time grid that is much more granular that ADC sample rate. Such aligned sets of data can be then overlapped on top of each other and averaged.If data is sparse in some places, local to that point averaging will not be as good and there will be larger apparent noise there, worse than for the parts of curve where data is more dense.... But still very useful and big improvement.You are not resampling but simply reassembling the full buffer from separate triggers that are taken with certain offsets from trigger point.. that is why I said "upsampling" is not exactly correct..Trigger time is not determined. Trigger timeistime zero. Exact point of trigger is determined by interpolation and samples are then adjusted to fit in time domain where they belong. Trigger simply starts the process of acquisition, samples are stored in memory, and exact time of trigger event is calculated, and timing of sample points is adjusted. Meaning that timing info of some point in curve relative to trigger point is accurate on a single picosecond level, much less than the sampling period.

author: 2N3055
author_rank: Super Contributor
timestamp: May 19, 2022, 03:41:37 pm
content: Quote from: tv84 on May 19, 2022, 09:26:41 amYes, that would be ideal. Unfortunately not even all high ends scopes have all the controls...In ideal world, a markers should be shown what is being FFT-ed and those markers could be set left and right...I'm not sure how realistic is to expect that on this scope...But it can be optimized to have more predictable behaviour..It is reported...

author: Martin72
author_rank: Super Contributor
timestamp: May 19, 2022, 07:00:20 pm
content: QuoteHmmm......If I got the time tomorrow, I´ll have a look on the wr9054.Afaik as I´ve played with the fft, I saw "suddenly" 2 dashed lines and wondered because I didn´t had the cursors activated.

author: 2N3055
author_rank: Super Contributor
timestamp: May 19, 2022, 09:51:48 pm
content: Quote from: Martin72 on May 19, 2022, 07:00:20 pmAs I said, that is a Waverunner 9000..It should support gated FFT...

author: Martin72
author_rank: Super Contributor
timestamp: May 23, 2022, 10:18:11 pm
content: Hi,QuoteToday I got a phone call with someone from lecroy* and now it´s clear to me.These are helplines to show you what will be "ffted" in the screen, it varies with the modes truncated, non-truncated and zero-filled.You can´t set them manually as a gate.Nevertheless it helps to understand.Martin*) This is the lecroy service...I´ve mailed them because of the lines and more or less immediately (from friday to monday) I´ll get a phone call.Together with the hint, call us everytime you have a question, you bought a lecroy scope so you also bought our directly support.This is what the A-brands separates them from the rest, today.

author: tautech
author_rank: Super Contributor
timestamp: May 23, 2022, 10:51:39 pm
content: Has the new FW fixed this ?Quote

author: Martin72
author_rank: Super Contributor
timestamp: May 23, 2022, 10:56:58 pm
content: Hi Rob,Didn´t try because it seems that this is an update for the models with "different" hardware, like the update 1.3.9R10 before was.

author: tautech
author_rank: Super Contributor
timestamp: May 23, 2022, 11:01:46 pm
content: Quote from: Martin72 on May 23, 2022, 10:56:58 pmPlease don't accept release notes word for word.Let's make it easy for you to check to be 100% sure.https://int.siglent.com/upload_file/zip/firmware/Oscilloscope/SDS2000X%20Plus_V1.3.9R12_EN.zip

author: Martin72
author_rank: Super Contributor
timestamp: May 24, 2022, 09:28:10 pm
content: Don´tyouhave a sds2k+ anymore ?

author: Martin72
author_rank: Super Contributor
timestamp: May 26, 2022, 12:20:44 pm
content: QuoteNothing has changed except the displaying version number of the firmware..Did this upgrade at last in the hope, the stupid axis-labeling was corrected, but it wasn´t.Martinedit pic attached.

author: hpw
author_rank: Frequent Contributor
timestamp: May 27, 2022, 05:06:47 pm
content: So run now the R12 FW and did get some nice plots... sometimes the Config/Full Span or Peak To Center has to be clicked again....do not understand why the center is at 5GHz...hp

author: Martin72
author_rank: Super Contributor
timestamp: July 20, 2023, 09:48:38 pm
content: Edit: Threadtitle changed.Quote from: Performa01 on May 17, 2022, 09:08:51 amHi.....In the meantime I also own a SDS2504XHD and remembered this thread.So I wanted to recreate Performa01 measurement, this is what I get(see picture).Am I doing something wrong ?Looks not so linear for now, also my bandwidth is far from the 500Mhz.I took the interpolation from rf-loop (20, Dx 4) and like Performa set the FFT to AVG 32.Same time base.Is it possibly the signal from the bodnarpulser ? Is it "too steep" ? Performa01 and rf-loop did not use it for their measurements.Additionally a picture of the risetime of the pulse.If you use the formula, this is also not 500Mhz.

author: gf
author_rank: Super Contributor
timestamp: July 21, 2023, 05:59:32 am
content: Quote from: Martin72 on July 20, 2023, 09:48:38 pmIt certainly is too steep for 2GSa/s. The key to benefit from fractional sample trigger points and to obtain "RIS-like" sampling seems to beAveraging acquisitionmode:Quote from: Performa01 on May 17, 2022, 09:08:51 amI think you did not turn it on, did you?

author: Martin72
author_rank: Super Contributor
timestamp: July 21, 2023, 11:06:31 am
content: Thankyou gf!In fact, I overlooked it, or thought that it was the averaging of the fft.Now the situation looks completely different...edit forget the second marker...

author: Performa01
author_rank: Super Contributor
timestamp: July 22, 2023, 07:38:34 am
content: Quote from: Martin72 on July 21, 2023, 11:06:31 amForget the first marker too. You made the same mistake as I did back then (rf-loop pointed it out). You cannot place a marker at 1 MHz when the FFT frequency step is 24.41 MHz...

author: gf
author_rank: Super Contributor
timestamp: July 22, 2023, 01:32:49 pm
content: Quote from: Performa01 on July 22, 2023, 07:38:34 amBtw, I don't know where this comes from, but the 0.5 dB drop in the DC bin doesn't look right either. So I would not use this bin as reference level.

author: Martin72
author_rank: Super Contributor
timestamp: July 22, 2023, 08:55:06 pm
content: I´ll repeat the measure...

author: Martin72
author_rank: Super Contributor
timestamp: July 23, 2023, 08:33:21 pm
content: Am I just about to...Quick question:It was interpolated 20-fold according to the entered formula.Before I set the acquisition mode to average, 40GSa/s came out, see the pictures before the last one.Now that I have last set to average 32, it is 400GSa/s (see last picture) is that correct ?

author: Martin72
author_rank: Super Contributor
timestamp: July 23, 2023, 09:49:13 pm
content: OK, finished for today...This time I used the cursors for finding the -3dB frequency, that should be "allowed" for this.1.5Ghz span and 5dB/div settings, 515Mhz....QuoteI´ve "zoomed in" using a span of 500Mhz, when the Delta f is a bin (?), than it "happens" in exact the first one, 0Hz..24.41Mhz.From 24.41(24.5 marked)Mhz down to 0 it´s -3dB.(possibility to change the axis-labeling left/right would be very, very useful for a better viewing.)

author: gf
author_rank: Super Contributor
timestamp: July 24, 2023, 06:25:37 am
content: Quote from: Martin72 on July 23, 2023, 09:49:13 pm-3dB? Then I think it displays the power spectrum and not the FFT spectrum "as is".This means that negative frequencies are discarded and instead the power of positive frequencies (f > 0) is doubled.Consequently, the power spectrum of an impulse response does not reflect the corresponding frequency response at/near DC, but only at higher frequencies.EDIT: The problematic nature of DC in conjunction with power spectrum calculation (with rectangular and other window functions) is nicely discussedhere(chapters 11 and 9).

author: Performa01
author_rank: Super Contributor
timestamp: July 24, 2023, 07:14:28 am
content: Quote from: Martin72 on July 23, 2023, 09:49:13 pmDelta-f, frequency step, frequency bin ... it's all the same.Quote from: Martin72 on July 23, 2023, 09:49:13 pmWhy not just get the cursor info out of the way? Like I did it on all my screenshots?In some rare cases I even had to move the FFT info in order to tidy up the screen.

author: Martin72
author_rank: Super Contributor
timestamp: July 24, 2023, 07:37:24 am
content: Hi....With the axis-labeling on right side you could see it better what "happens" on the left side of the FFT window, has nothing to do with the cursors or the cursor info.Btw, lecroy put the cursor-infos into the channelboxes.

author: Martin72
author_rank: Super Contributor
timestamp: July 24, 2023, 11:57:27 am
content: Quote from: gf on July 24, 2023, 06:25:37 amAnd it is independent of which window you use, I had just tried it out.

author: Martin72
author_rank: Super Contributor
timestamp: March 16, 2024, 11:05:49 pm
content: I'm digging up this thread so as not to clutter up the other 800X thread.It didn't work with the 2000Xplus back then, with the 2000X HD it was OK, now with the 800X HD...Using the "known" formula in the editor, the following is output, which has nothing to do with the frequency response I previously recorded using Sweep and FFT-Max hold.

author: Martin72
author_rank: Super Contributor
timestamp: March 17, 2024, 07:47:26 pm
content: By request, img10 shows F2 with 20xinterp, img11 all together.I am currently trying to find out for myself what is still missing in contrast to the result of the 2504X HD, at the moment these are the same inputs.

author: Martin72
author_rank: Super Contributor
timestamp: March 18, 2024, 01:21:33 pm
content: I haven't done it yet, it would make things "nicer", but in principle it should look like this without averaging:https://www.eevblog.com/forum/testgear/math-problems-on-sds2k-(trying-to-display-bandwith)/msg4971457/#msg4971457

author: 2N3055
author_rank: Super Contributor
timestamp: March 18, 2024, 02:16:45 pm
content: Quote from: ebastler on March 18, 2024, 01:57:58 pmUse the scroll Luke...It is below..

author: Performa01
author_rank: Super Contributor
timestamp: March 18, 2024, 09:46:53 pm
content: Unfortunately, this isn’t unproblematic. The frequency of affordable pulsers is usually fixed at 10 MHz. The resulting pulse train generated in software would be even twice this frequency – but we don’t want that. We rather want a low frequency, like 1 MHz or even lower, so that we can get better frequency resolution and enable frequency response measurements down to the single-digit megahertz.A while back I’ve done it with the SDS2504X HD, it didn’t work well, but enabling Average acquisition mode helped. Today I’m inclined to consider the results back then more as a coincidence than anything else.I have now taken the time to investigate this a little bit more, step by step.I’m starting with the obvious: the spectrum of a 1 MHz pulse train should reveal the frequency response of the SDS824X HD. Since I don’t have an ultra-fast pulse generator, I had to make do with 1 ns wide pulses from the SDG7102A:SDS824X HD_FFT_FR_Pulse_W1ns_M1usThat doesn’t look too far off. The deviations are as follows:100 MHz: -0.376 dB200 MHz: -0.961 dB244 MHz: -1.093 dBI would attribute this to the non-ideal pulse shape – with this signal, the generator is already working outside its specifications.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):https://www.eevblog.com/forum/testgear/siglent-sdg7000a-350-500-mhz-and-1-ghz-awgs-coming/msg5101176/#msg5101176So while the “real pulse” method might not be accurate (at least not as long as there are no perfect pulses available), it is certainly good enough for a quick overview.The next step would be to make our own pulses, at least mathematically, by numerical differentiation of a 500 kHz square wave. It’s only 500 kHz because now we get two pulses per signal period, and I wanted to stay as close as possible to the previous conditions.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.SDS824X HD_Math_Square_2ns_abs_diff_dx4For this screenshot, I’ve changed the square wave with a duty cycle of 50% to a 10 ns wide pulse, just to show both edges at high time resolution in one screenshot. They are absolutely identical and the measurements hint on pulse width of ~1.65 ns and ~1 ns rise and fall times.Here is the FFT with the pulses – this time from a 50% duty cycle square wave again:SDS824X HD_FFT_FR_Square_1us_abs_diffThat’s significantly worse than before. The deviations are as follows:100 MHz: -1.557 dB200 MHz: -3.727 dB244 MHz: -5.035 dBWe have already looked at the generated pulse from the differentiation, now let’s compare with the generator pulse from the first test:SDS824X HD_PR_W1ns_RT500psIt’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?Now for the (20 times) interpolation – which shouldn’t be strictly necessary, as the initial test with the pulse train has proven.SDS824X HD_FFT_FR_Square_1us_abs_diff_int20As expected, that’s only marginal better than without interpolation. The deviations are as follows:100 MHz: -1.527 dB200 MHz: -3.675 dB244 MHz: -5.016 dBAlso as expected, the pulse shape and measurements are almost exactly the same as without interpolation.We can select a faster time-base in order to get a smoother graph, yet at least at high sample rates this is not recommended as it significantly increases the frequency step of the FFT, thus reducing the frequency resolution, shifting up the lowest measurable frequency and finally compromising the measurement accuracy (if there was any in the first place, that is). For the original 2 GSa/s, it works reasonably well, even though the measurement accuracy has yet suffered even further:SDS824X HD_FFT_FR_Square_200ns_abs_diff

author: Martin72
author_rank: Super Contributor
timestamp: March 18, 2024, 10:35:38 pm
content: And why can't it be reproduced with the previous formula, as with the 2000X HD?What I have just seen when looking at the old screenshots of the 2000X HD:While the 800X HD shows a sample rate of 40GSa/s with 20xint, the 2000X HD shows 400GSa/s.

author: gf
author_rank: Super Contributor
timestamp: March 19, 2024, 12:30:26 pm
content: Quote from: Performa01 on March 18, 2024, 09:46:53 pmIn order not to suffer from any frontend frequency response, you could of course also measure it with a spectrum analyzer.QuoteThe 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.QuoteMaybe try w/o abs().QuoteThe 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, where N is configurable, but >= 4? This finite difference approximation is equivalent to applying a boxcar average over N samples,in additionto 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. ]

author: Performa01
author_rank: Super Contributor
timestamp: March 19, 2024, 06:40:36 pm
content: Quote from: gf on March 19, 2024, 12:30:26 pmI’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_RT500psAs 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 pmGood 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 pmI do not know what’s been different today, but the result most definitelyisdifferent:SDS824X HD_FFT_FR_Square_100ns_diff_int20At a first glance it looks a little better, even though still not nearly what we got with the real pulses.100 MHz: -0.549 dB200 MHz: -2.261 dB244 MHz: -3.624 dBFurthermore, 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 pmYes, 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 pmAs 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_C4SDS824X_HD_Bin_Square_10M_TR500p_C4

author: Martin72
author_rank: Super Contributor
timestamp: March 19, 2024, 07:30:42 pm
content: 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.

author: gf
author_rank: Super Contributor
timestamp: March 19, 2024, 08:48:39 pm
content: Quote from: Performa01 on March 19, 2024, 06:40:36 pmHmmm. 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?QuoteI 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:Quoten=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 upsamplingAbout -3.1dB @244MHz with the square wave seems to be almost spot on

author: gf
author_rank: Super Contributor
timestamp: March 19, 2024, 10:09:01 pm
content: Quote from: Martin72 on March 19, 2024, 07:30:42 pmYes, does not look rightBut no idea what might be wrong.Does it work better with a slower timebase? (just a random guess)

author: Martin72
author_rank: Super Contributor
timestamp: March 19, 2024, 10:19:02 pm
content: No....F1 is the (20x) interpolation of Ch1, F2 is the diff of F1(4), F3 is the FFT of F2.At least that's how I interpreted Performa01's settings.Of course, this may not be entirely correct and I may have overlooked something.Edit:The formula that was "correct" for the 2000X HD was FFT(int(d(C1)/dt)), plus average 32 in the acquisition.The result (without Avg32) of the 800X HD, see second picture.

author: Performa01
author_rank: Super Contributor
timestamp: March 20, 2024, 12:57:23 pm
content: Quote from: gf on March 19, 2024, 08:48:39 pmYes, there is most definitely something wrong.I’ve filed a bug report and talked to Siglent R&D this morning. Here’s in brief what’s going on:The math works with the original sample data, except for the Averaging acquisition mode, where there is no Dots display available, hence the interpolated data at time bases <50 ns/div have to be used. This is where the advantage for the SDS2000X HD came from.Since the various Acquisition modes should behave identical when used as a math source, this is a platform bug and is already fixed (math will always use the interpolated data at fast time bases), so we’ll get that sorted with the next FW releases.The other issue is that the Intrp() math function changes the visual appearance of the data on the screen (a lot more points), but quite obviously doesn’t make any difference when used as an argument for d(x)/dt. This is under investigation right now – maybe it’s already fixed as well…Quote from: gf on March 19, 2024, 08:48:39 pmMany thanks for the effort!Yes, as I said, the SDS800X HD frontend cut the pulse train amplitude to one half already. And even so, a 10-90% rise time of 500 ps doesn’t quite fit a pulse width of 1 ns. Apart from that, I can only repeat one more time that with rise times below 1 ns, I’m operating the generator outside its specifications, which might also result in increased overshoot.Quote from: gf on March 19, 2024, 08:48:39 pmWell, yes. I’ve looked up my old notes and the test back then has been with slow edges, like from a triangle wave. No wonder I’ve required a rather high dx parameter value to get a reasonable result. It worked beautifully in case of generating pulses from a square wave though, even with the old 8-bit SDS1104X-E.Maybe I will suggest a lower limit of 1 to Siglent – even if it’s noisy in some use cases, there is still no harm done as we still have the full range up to 20 available.Quote from: gf on March 19, 2024, 08:48:39 pmIt’s always nice when theory meets exercise, isn’t it? 😉

author: Martin72
author_rank: Super Contributor
timestamp: March 20, 2024, 01:04:44 pm
content: Last attempt:Can you please name the settings that produced the result on your 824 ?If my result looks so clearly different, I must have set something wrong.

author: Performa01
author_rank: Super Contributor
timestamp: March 20, 2024, 03:23:58 pm
content: Quote from: Martin72 on March 20, 2024, 01:04:44 pmSorry, I have thought it should be obvious by now.As stated in my last posting, it cannot work as it should, because there is a platform problem: upsampling (interpolation) quite obviously doesn't have any effect on the d(x)/dt math function. It still did work somehow on the SDS2000X HD, but only for time bases faster than 50 ns/div and Average acquisition mode, because the latter forced the math to use interpolated data - this time not coming from the intrp() function but from the acquisition engine directly. With the already confirmed fixes, this would work on the SDS800X HD too, because we'd get interpolated data and increased sample rate even in normal acquisition mode.The other problem is that intrp() has not the desired effect on math functions that use it as argument. We get a higher sample rate on the FFT, but the result is not any different from differentiating the input channel directly. If this can be solved, then the method discussed here will also work at slower time bases.My test worked somehow, albeit with huge errors, but that is only the result from 2 GSa/s, even when he FFT states 40 GSa/s, but this isn't true, at least not for the differentiation. Consequently, the result is like it was with just 2 GSa/s and this is also why we get the null at 500 MHz. And all this ruins accuracy of course.I never had any special settings, everything is in plain view. Most striking difference: the time base. What abut trying 100 ns/div or even slower, like I did with all my previous attempts?

author: Martin72
author_rank: Super Contributor
timestamp: March 20, 2024, 08:53:13 pm
content: With your settings* I´ll get these results, depending on the timebase..I could try it again with the fast pulse (approx. 400ps risetime, approx. 200khz) from the batronix demoboard, but I don't believe that this will change anything.* =https://www.eevblog.com/forum/testgear/math-problems-on-sds2k-(trying-to-display-bandwith)/msg5401265/#msg5401265

author: gf
author_rank: Super Contributor
timestamp: March 20, 2024, 10:26:58 pm
content: Quote from: Martin72 on March 20, 2024, 08:53:13 pm100ns and 50ns look basically OK, the others not.[ In order to see more details, vertical scale adjustment would be nice, say 5dB/div and ~150db (?) reference level. ]EDIT: When I look at the levels of the peaks, then they seem to suffer from the same problem as Performa01's plot.QuoteThe lower the frequency, the denser the spacing of the teeth of the comb spectrum. But that needs more FFT points, too.Do you mean a square wave, or a train of narrow impulses? (if the latter, what's the pulse width?)

author: Martin72
author_rank: Super Contributor
timestamp: March 20, 2024, 10:48:43 pm
content: Afaik its a square wave, will look at it tomorrow.I wonder why I don't get the same result with the same settings.However, there are 2 things that are different with my attempts than with Performa01.First of all the signal, which comes from the 40ps/10Mhz bodnar pulser.Secondly, and you can definitely think this through, the scope model.Performa01 has a "real" 824X HD, I have an 804X HD, which was turned into an 824 by a "trick".That shouldn't really matter.Actually.

author: gf
author_rank: Super Contributor
timestamp: March 20, 2024, 11:34:15 pm
content: Look at Performa01's square wave frequency -> 20x lower.EDIT: When I look at the levels of your peaks, then they seem to suffer from the same problem as Performa01's plot.

author: Martin72
author_rank: Super Contributor
timestamp: March 21, 2024, 08:18:45 pm
content: Today with a much lower frequency (197kHz, the demo board can send different frequencies to the fast schmitt-trigger), this looks quite different - apparently it does not seem to "work" with "high" frequencies/smaller time bases.The following is interesting:I wanted to make the other signals visible for the screenshot, which were hidden by the marker window and turned the timebase to the left outside zero, nothing else changed...

author: Performa01
author_rank: Super Contributor
timestamp: March 22, 2024, 07:38:16 am
content: Quote from: Martin72 on March 21, 2024, 08:18:45 pmWhat you see is probably the effect of windowing.I hate it to say, but for this kind of special measuement, the Rectangle window is the right choice. Try it and the position-dependance should be gone.In general you need to keep in mind that the FFT doesn't process the entire screen width. In your example it is 8192 out of 10000 points, hence ~82%. But there are many scenarios where it's just 51.2%.Therefore, whenever you want to analyze a single event like e.g. a transition, be aware that the FFT might be completely blind for the right half of the screen. As a consequence, do the following:1. place the event between 20-30% of the screen width.2. to get identical resuts independent of the position, use the Rectangle window.EDIT: to get a smooth line, try a faster time base, like 200 ns/div.

author: gf
author_rank: Super Contributor
timestamp: March 22, 2024, 12:01:25 pm
content: For a single impulse (differentiated edge) inside the FFT window, definitively use a rectangular window function.If multiple periods of the pulse train are within the FFT window, you still need to use a non-rectangular windowing function. And you need to make sure that you have at least (say) 10 periods of the pulse train inside the FFT window to keep the amplitude error of the resulting comb teeth within the scalloping loss of the window function. A rectangular window is not suitable in this case. See attachment.EDIT: With a huge number of FFT points, the leakage of the rectangular window no longer has such a strong effect as demonstrated, but the scalloping loss remains, and it is still worse than with a flattop window.

author: Martin72
author_rank: Super Contributor
timestamp: March 22, 2024, 06:51:58 pm
content: I found an application note by Lecroy that is enlightening for me, at least on the first three pages.I'm slowly understanding more and more, it takes a while, but still.

author: gf
author_rank: Super Contributor
timestamp: March 24, 2024, 10:56:24 am
content: Quote from: Performa01 on March 19, 2024, 06:40:36 pm@Performa01, I was thinking about that again.The spectrum of rectangular impulses is not flat, but is expected to have a sinc-shaped roll-off. And the tapering of the edges introduces additional roll-off. So they are not well suited for an application that requires a flat stimulus spectrum (unless they are so narrow that the roll-off can be neglected -- but then they can no longer be generated by the AWG).What do you think about using a train of sinc-like pulses instead of rectangular pulses? They are bandwidth limited (so they can be reproduced by an AWG based on Shannon-Nyquist reconstruction from samples), and they still have a flat spectrum up to a certain frequency (with a sharp roll-off beyond this corner).Plots of two example pulses are attached, designed for a 950-1000MHz transition band and for a 1000-1250MHz transition band. According to the specs, I assume that the SDG7000A should be able to reproduce these waveforms well. [By the way, does the SDG7000A promise 0.3dB amplitude flatness up to 1GHz?]

author: Performa01
author_rank: Super Contributor
timestamp: March 24, 2024, 04:17:55 pm
content: Quote from: gf on March 24, 2024, 10:56:24 amIt certainly is a good idea and I have done a few experiments with this, as described below.Quote from: gf on March 24, 2024, 10:56:24 amThanks a lot for your effort again! The SDG7102A “promises” +/- 0.3 dB flatness up to 1 GHz, you can find an actual frequency response measurement (SDG7102A_1000MHz_-10dBm) attached.This is for sine waves though; we cannot expect the spectrum of a pulse to be that accurate.I had a quick go at it and found a pre-defined Sinc pulse amongst the built-in arbitrary waveforms. This is 32768 points though and the pulse width is some microseconds. Of course, I can downsample it, yet the shortest possible length is 64 points. At 2.5 GSa/s, the resulting frequency was much too high at ~39 MHz, yet I still did a first check with the SA:SDG7102A_AWG_Sinc_64ptsThis is the corresponding peak table:1,39.071413 MHz,-15.08 dBm,0.000000 Hz,0.00 dB2,78.128540 MHz,-15.39 dBm,39.057127 MHz,-0.32 dB3,117.185668 MHz,-15.49 dBm,78.114255 MHz,-0.42 dB4,156.271366 MHz,-15.38 dBm,117.199953 MHz,-0.30 dB5,195.299922 MHz,-15.42 dBm,156.228509 MHz,-0.35 dB6,234.357050 MHz,-15.49 dBm,195.285637 MHz,-0.42 dB7,273.442748 MHz,-14.99 dBm,234.371335 MHz,0.09 dB8,312.499876 MHz,-15.38 dBm,273.428463 MHz,-0.31 dB9,351.557003 MHz,-14.72 dBm,312.485590 MHz,0.36 dB10,390.642702 MHz,-14.80 dBm,351.571289 MHz,0.28 dB11,429.699829 MHz,-14.60 dBm,390.628416 MHz,0.47 dB12,468.728385 MHz,-14.61 dBm,429.656972 MHz,0.47 dB13,507.814084 MHz,-14.80 dBm,468.742671 MHz,0.28 dB14,546.871211 MHz,-15.11 dBm,507.799798 MHz,-0.04 dB15,585.928338 MHz,-15.06 dBm,546.856925 MHz,0.02 dB16,625.014037 MHz,-16.12 dBm,585.942624 MHz,-1.05 dB17,664.071164 MHz,-15.14 dBm,624.999751 MHz,-0.07 dB18,703.128292 MHz,-16.35 dBm,664.056879 MHz,-1.28 dB19,742.185419 MHz,-15.12 dBm,703.114006 MHz,-0.04 dB20,781.271118 MHz,-22.15 dBm,742.199705 MHz,-7.08 dBIt can be seen that the harmonics should be accurate to 0.5 dB up to at least 586 MHz. Generally, the pretty accurate odd harmonics up to 742 MHz are quite striking, just like the fact that even the 64 points sinc-pulse at 2.5 GSa/s can still produce such strong harmonics up to 742 MHz.Of course, there is no point in trying to display bandwidth with a high frequency like 39 MHz. Even though it would have been tempting to generate my own version of a Sinc pulse, maybe getting the real pulse a little faster with still enough “padding” samples to achieve a reasonably low repetition frequency when played back, I’ve rather utilized the sequence-function of the AWG, by just adding 2436 samples of a zero signal to the 64 points Sinc.With this, the time domain signal looks like this:SDS6204_Pro_H12_Sinc_PulseThe pulse width is 772 ps and the rise time should be around 360 ps (assuming ~230 ps rise time of the SDS6204).With the padding, the pulse is now played back at a rate of 1 MHz at 2.5 GSa/s.The result on the SDS800X HD is not too bad – certainly much better than all the previous attempts to measure its bandwidth using a pulse train.SDS824X HD_FFT_Sinc_1MHzThis looks about right, including the cable reflections because of less than perfect impedance matching.

author: Martin72
author_rank: Super Contributor
timestamp: March 24, 2024, 04:25:38 pm
content: QuoteAccording to your picture, this is once again a typical siglent understatement.Nice generator btw....

author: gf
author_rank: Super Contributor
timestamp: March 24, 2024, 11:22:47 pm
content: Quote from: Performa01 on March 24, 2024, 04:17:55 pmWhy? if it can reproduce sine waves up to 1GHz, then I would expect that it can reproduce any bandwidth limited signal up to 1GHz. Why is a sine wave special in this regard? Would be interesting, though, if AWG vs. AFG makes a difference.QuoteI tried to make custom .csv files. The data are flat (0.1%) up to 950 MHz. One is for AWG mode, with 2500 samples for 1:1 output @2.5GSa/s, and the second one with 32k AFG samples which is supposed to be sent at a repeat rate of 1MHz, and which needs to be resampled by the DDS (unavoidable if the AFG wants a wavetable with exactly 32k samples for a period).I just don't know if I got the CSV format correct.QuoteI also got only 183 AWG samples for the FIR, the rest up to 2500 samples are zero-padding. AFG has more samples, due to the higher effective sample rate of 32768MSa/s for the wavetable.Octave code:Code:pkg load signalfunction generate(sample_rate, transition_band, filename)[n,Wn,beta,ftype] = kaiserord(transition_band,[1 0],[0.001 0.001],sample_rate)impulse = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');impulse *= 1/max(impulse);% zero-pad to get 1MHz repeat ratesamples = [ impulse zeros(1,sample_rate-length(impulse)) ];% quantizesamples = floor(samples*8192+0.5)/8192;% time axist = [0:length(samples)-1]/sample_rate/1e6;% write CSV filef = fopen(filename, "w");fprintf(f,"data length,%d\n", length(samples))fprintf(f,"frequency,1.0E+6\n")fprintf(f,"amp,2\n")fprintf(f,"offset,0\n")fprintf(f,"phase,0\n")fprintf(f,"\n\n\n\n\n\n\n")fprintf(f,"xpos,value\n")fprintf(f,"%.8E,%15.13f\n",[t; samples])fclose(f);figureplot(1e9*t(1:length(impulse)), impulse);grid on; xlabel("ns")figure[H,f] = freqz(impulse/sum(impulse),1,100000,sample_rate);plot(f,(abs(H))); grid on; xlabel("Mhz")endfunctionclose alltransition_band = [950 1000] % MHzgenerate(2500,transition_band,"AWG.csv")generate(32768,transition_band,"AFG.csv")

author: Performa01
author_rank: Super Contributor
timestamp: March 25, 2024, 09:28:27 am
content: Quote from: gf on March 24, 2024, 11:22:47 pmI agree with that, yet my statement was meant more general. The much more popular DDS-technique (which Siglent’s AFG-mode effectively is) is well known for its problems with pulse reproduction, particularly jitter. It should be obvious that a jittery pulse will waste energy in sidebands, hence its harmonics cannot be accurate.Being aware of this, I’ve used Siglent’s AWG-mode and the tools offered by the instrument (decimating, padding) to tweak the internally stored arbitrary waveform (Sinc).Quote from: gf on March 24, 2024, 11:22:47 pmExcellent work, thank you very much! Both files worked beautifully right away – but then again, what else to expect from someone who figured out Siglent’s binary format without further assistance – just with the not so fool-proof documentaton?I tried the AFG version of the Sinc pulse first and I think it is not much different from the internal one.As expected, your AWG version of the Sinc pulse is quite a bit better than the decimated internal version, just look at the parameters:SDS6204_Pro_H12_PR-Sinc_Gf-AWGThe pulse width is even narrower at just 650 ps now, and the rise time is less than 250 ps! I think this is going to be at the absolute limit of what to expect from an SDG7000A output.Of course, I was curious how well the theory meets practice this time and did a FFT with the SDS6204, to check the frequency response of the generated pulse.SDS6204_Pro_H12_FFT_Sinc_Gf-AWGThe frequency response pretty much meets the expectations. Of course, we don’t get 0.1% accuracy even for DC, let alone up to 1 GHz, yet max. 0.31 dB deviation up to 500 MHz and <0.7 dB up to 1 GHz is not bad, taking the combined tolerances of both the AWG and (particularly) the DSO into account.We actually see a steep cut-off beyond 950 MHz, but the noise floor is already pretty close at about 25 dB below. This is just because of the very low energy in the wanted signal. We need to acknowledge that this is a 650 ps wide 1 volts high pulse occurring once every microsecond, hence the duty cycle is just 0.065%.

author: gf
author_rank: Super Contributor
timestamp: March 25, 2024, 01:34:49 pm
content: Quote from: Performa01 on March 25, 2024, 09:28:27 amThe one sample period edge jitter of some DDS generators (when they generate pulses or square wave) is usually analiasingartifact. It happens if the samples in the wavetable are not properly bandwidth-limited for the down-sampling done by the DDS. It does not happen with properly bandwidth-limited samples. You cannot fill the wavetable with [ -1 -1 ... -1 -1 1 1 ... 1 1 ] and expect a jitter-free resampling at any frequency, but you must pre-filter the wavetable according to the desired waveform repeat rate and DDS sample rate. Then this jitter is gone.The phase truncation errors of a traditional DDS are a different issue, but they are usually much lower, and they can be reduced to a negligible amount by either using a huge wavetable (say > 1Mpts), or by interpolationg the wavetable instead of truncating the phase to the nearest wavetable entry. With a 32k wavetable, linear interpolation is quite sufficient. And I would expect a €€€€€ AWG to do that. So DDS does not need to be bad per se. But TrueArb (or however it is called by different manufacturers) offers more flexibility, of course.QuoteYou did play it with 1MHz, right? Up to which frequency was it spectrally flat? If it starts rolling off below 950MHz, then the generator was obviously rather "conservative" when it did pre-filter the wavetable.QuoteWe could go up to say 1200MHz with a steep transition band to 1250MHz. Then you could see the generator's intrinsic roll-off up to 1200 MHz.For measuring a scope's frequency response (which is the topic of this thread), it's IMO better to keep the impulse bandwidth below the half sample rate of the scope in order to avoid aliasing (just in case). That's why I did choose 950MHz in this example, leaving 50MHz for the transition band, and virtually no power beyond 1GHz.Btw, I find it interesting that the impulse is no longer symmetric. So the phase response already suffers somewhat at 950MHz. I guess that's mostly due to the analog reconstruction filter.QuoteThe performance of this gear is amazingWith 0.1% I just meant that the impulse was designed for 0.1% (0.01dB) passband ripple and -60dB stopband ripple. The samples are indeed within these limit. I did not expect the analog reproduction to be within this limit as well. The impulse is, btw, not an exact sinc, but it is truncated and windowed to achieve the given ripple and transition band width with a finite number of samples.QuoteSure, peak-to-average power ratio (PAPR) is almost 2500. You could of course use a larger FFT size to lower the noise floor, but then you'll see the individual comb teeth again. You can't have everything in life

author: Performa01
author_rank: Super Contributor
timestamp: March 25, 2024, 06:19:17 pm
content: Quote from: gf on March 25, 2024, 01:34:49 pmWell, yes, I’ve seen early DDS-generators, with 10 bits resolution, 10 MHz bandwidth and max. 1024 Samples memory for the ARB-mode, which didn’t sound too optimistic with regard to the predefined waveforms either. That was also the time when embedded systems used some 8051/2 MCU derivates at best, whose performance couldn’t even match a today’s Arduino.These things have burned into my brain and of course I’ve not seen any serious problems of this kind with the Siglent SDG6052X and SDS7102A that I have here. Yet I’m still a bit wary whenever I’m using an AWG in DDS-mode close to its limits.Quote from: gf on March 25, 2024, 01:34:49 pmSorry, I’ve been sloppy once again. I just loaded the AFG-version while the generator still was in AWG-mode and got the usual ~76.3 kHz. For the reasons given above, I didn’t look more closely but hurried to get the AWG-version of the Sinc pulse instead. Yes, there is indeed a huge difference, as I will show later.Quote from: gf on March 25, 2024, 01:34:49 pmMaybe you feel like providing such a waveform, so we could have a go at it?Quote from: gf on March 25, 2024, 01:34:49 pmThat was already the case with the decimated version of the internal waveform. But not with the unmodified original at 2.5 GSa/s, where I’ve now measured 400 ns pulse width and 216 ns rise time...Quote from: gf on March 25, 2024, 01:34:49 pmYes, of course. And I forgot to mention another source of inaccuracies at higher frequencies – it is the impedance matching. The output impedance of the SDS7102A isn’t particularly close to a pure 50 Ω resistor, so there we could lose the occasional tenth of a dB at certain frequencies.Speaking of accuracy, I’ve of course wondered if I could improve the result by providing a better match at the generator output. At first I just grabbed a cheap 6 dB BNC-inline attenuator and connected it directly at the generator output. This degraded the frequency response quite a bit – no wonder, these attenuators most likely have ½ W through hole resistors inside, so we cannot expect 0.1 dB accuracy up to 1 GHz.Okay, I have much better attenuators, rated for up to 18 GHz, but of course they are SMA. So I’ve tried such an attenuator together with several SMA-cables, one of them the same quality as the previous BNC-cable, just 100 cm instead of 50. Unfortunately, all these experiments led to nothing. If anything, accuracy was at least 0.3 dB worse.In the end, the original setup, i.e. a short (50 cm) low-loss Hyperflex 5 BNC-cable between generator and DSO worked best after all.Quote from: gf on March 25, 2024, 01:34:49 pmHow true! 😉Now for a closer look at the AFG-variant of the Sinc pulse. First in the time domain to obtain the precise measurements:SDS6204_Pro_H12_PR-Sinc_Gf-AFGWe can conclude that the measurements are essentially the same as the AWG-version. One would expect there are also no differences in the frequency domain, yet there were some, with the AFG-version of the Sinc pulse performing slightly worse by at least 0.1 dB.I noticed that there were still minor fluctuations of the measurements in the marker table, so I decided to repeat the measurements with both versions of the pulse, this time with 1024x averaging to get really stable readings.First the AFG-version:SDS6204_Pro_H12_FFT_Sinc_Gf-AFGThis is up to 0.2 dB worse than the measurement in the previous posting with AWG-version and 64x averaging.And now the AWG-version with 1024x averaging:SDS6204_Pro_H12_FFT_Sinc_Gf-AWGThe results are even better than in the first run.So we actually have deviations of ~0.4 dB up to 500 MHz and <0.85 dB up to 1 GHz with the AFG version, yet ~0.35 dB up to 500 MHz and <0.65 dB up to 1 GHz with the AWG version. I’m pleased with both versions! 😉

author: gf
author_rank: Super Contributor
timestamp: March 25, 2024, 07:59:13 pm
content: Quote from: Performa01 on March 25, 2024, 06:19:17 pmSure. See attachment.QuoteSo the AFG works nicely too

author: Performa01
author_rank: Super Contributor
timestamp: March 26, 2024, 07:39:31 am
content: Many thanks to member gf, who provides the arbitrary waveforms that give me the opportunity to get the most out of my Siglent gear. I was really curious what we’d get from the 1200 MHz version of the Sinc pulse. And yes, this is going to be spectacular, fasten your seat belts!As always, I’ve analyzed it in the time domain at a fast time base first, to obtain the precise pulse parameters.SDS6204_Pro_H12_PR-Sinc_Gf-AWG1200The pulse width is narrower again and has now finally landed at just 500 ps, while the rise time is less than 200 ps. My calculation says ~188 ps, but this is rather uncertain territory, as the numbers are now even below the rise time of the DSO. Yes, we can still calculate the signal rise time from the measured value and the DSO’s own rise time – as I did, but we cannot absolutely rely on the specification and I suspect that the rise time of the SDS6204 might actually be a little faster than 230 ps. If that’s the case, the signal rise-time is correspondingly higher. For instance, if the DSO rise time actually is just 200 ps, then the generated Sinc pulse would have a rise time of 220 ps. Either way, we’re dealing with pretty fast edges here.Now we expect a rather spectacular result for the frequency domain analysis, and I can state in advance that the result managed to surprise and impress me at the same time…SDS6204_Pro_H12_FFT-Sinc_Gf-AWG1200Above is the frequency response graph with measured values at strategic frequency values from 10 MHz to 1.2 GHz. And this is the summary of it:Up to 200 MHz, the deviations are <0.1 dB.Up to 1.12 GHz, the deviations are <0.3 dB.At 1.2 GHz the deviation is about -3 dB, so that appears to be the actual bandwidth of the generator.I can only repeat over and over again that we see the combined tolerances of AWG, cabling and DSO here.

author: gf
author_rank: Super Contributor
timestamp: March 26, 2024, 09:23:56 am
content: So it is approximately flat up to 1.1 GHzAnother aspect which limits the maximum "usable" frequency is the image rejection in the 2nd Nyquist band. We do not want frequencies beyond 1.25 GHz in the generated signal. Still they are present. The image of 1200MHz (at 1300MHz) is attenuated by ~15dB, and the image of 1100MHz (at 1400 MHz) is attenuated by ~25dB. But that's already the noise floor of your FFT, and that's also the point where your frequency scale ends. Could you connect it also to your SA and swep from say 1GHz to 2.5GHz, hoping that you can get a better dynamic range if you use a small enough RBW? At which frequencies beyond 1.3GHz do we get say -30dB, -40dB, -50dB, -60dB?EDIT: And what's the attenuation at 1500MHz, since this is the image frequency of the nominal 1GHz bandwidth.EDIT: And where does the spur at 1.25GHz come from? Is it from the siggen or from the scope? Iguess the latter. The SA will reveal.

author: Performa01
author_rank: Super Contributor
timestamp: March 26, 2024, 03:53:20 pm
content: Quote from: gf on March 26, 2024, 09:23:56 amI don’t have a high-end spectrum analyzer and while my SA44 is clearly better than average at low frequencies and narrow spans, it doesn’t provide narrow RBW-settings at wider spans, and above 1.5 GHz its noise floor starts rising considerably. Consequently, I can only provide a scan over 1-2.5 GHz with 6.5 kHz RBW:SA44_Sinc_Gf-AWG1200_2-1-2.5GHzThis first scan however already shows pretty much everything relevant. The signal doesn’t seem to get any lower than -45 dBc. I still feel more comfortable with the DSO, even though it has lots of spurs at these low levels. For a more detailed view, I divided the spectrum in several 500 MHz wide sections. First is the critical part around the Nyquist frequency of the AWG at 1.25 GHz:SDS6204_Pro_H12_FFT-Sinc_Gf-AWG1200_1-1.5GHzWe see the first minimum at 1.25 GHz – unfortunately the DSO generates a spurious signal there, so we have to measure the level at a 1 MHz higher frequency and get -36.46 dBc. At 1.29 GHz, the maximum level beyond Nyquist is measured as -13.25 dBV. At a random frequency of 1.462 GHz, the level is -40.7 dBc and we won’t see much less as the initial spectrum has already hinted on.Here is the frequency range around 1.5 GHz:SDS6204_Pro_H12_FFT-Sinc_Gf-AWG1200_1.25-1.75GHzThere is absolutely nothing special to see, except for the pulse spectrum at levels between approximately -42 and -47 dBc extending to 2 GHz.In the range from 1.75 – 2.25 GHz the spectrum decreases in level very slowly, yet not falling below -48 dBc.SDS6204_Pro_H12_FFT-Sinc_Gf-AWG1200_1.75-2.25GHzQuote from: gf on March 26, 2024, 09:23:56 amYes, even without SA I could verify that this stronger spur comes from the SDS6204. But here is the proof from the SA:SA44_Sinc_Gf-AWG1200_1.5GHz

author: gf
author_rank: Super Contributor
timestamp: March 26, 2024, 08:04:32 pm
content: Thanks for trying. My conslusions are:1) We cannot go higher than 1000-1050 MHz if we want to avoid the "hill" between 1250 and10001400 MHz (i.e. we should not see this hill with the previous 950 MHz impulse).2) The stopband attenuation of the digital upsampling/reconstruction filter seems to be not more than about 40 dB.The next point of interest would be the region around 3900 MHz (say +-300 MHz). That's where the analog reconstruction filter is mostly challenged.I think you'll understand what I mean if you look at the attached figure, which shows what the (continuous) staircase output of an ideal DAC is expected to look like after 2x upsampling to 5 GSa/s with a digital reconstruction filter. This staircase is the signal going into the analog reconstruction filter.And the second figure shows the spectrum of this staircase (and yes, it is not bandwidth-limited, but repeats periodically, decaying proportionally to 1/f). The "valley" up to 3600 MHz was already suppressed by the digital reconstruction filter (which is very helpful), but anything we see in this spectrum beyond 3600 MHz must still be eliminated (or sufficiently attenuated) by the analog filter. I have also drawn in orange what the frequency response of an example analog filter might look like.EDIT:Quote from: Performa01 on March 26, 2024, 03:53:20 pmLooks like typical interleaving spurs (offset spurs). Calibration may help, but I guess that the resolution of the calibration is limited to integral ADC codes, while fractional resolution might be required to get rid of the spurs.

author: Performa01
author_rank: Super Contributor
timestamp: March 26, 2024, 08:57:13 pm
content: Okay, we are slowly getting a bit off-topic here (discussing the output filtering in an SDG7000A AWG instead of displaying bandwidth on an entry level DSO), but then again, the problems that led to the actual topic will be solved at one point. In the meantime, we can look at noisy spectra, e.g. from 3.6 to 4.2 GHz for our trusty old Sync pulse, designed by gf:SA44_Sinc_Gf-AWG1200_3.9GHzAs we can see, we can see nothing...