Products > Test Equipment

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

<< < (17/19) > >>

gf:

--- Quote from: Performa01 on March 24, 2024, 04:17:55 pm ---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.

--- End quote ---

Why? 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.


--- Quote ---Even though it would have been tempting to generate my own version of a Sinc pulse, maybe getting the real pulse a little faster

--- End quote ---

I 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.


--- Quote ---...with still enough “padding” samples to achieve a reasonably low repetition frequency when played back

--- End quote ---

I 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 signal

function 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 rate
  samples = [ impulse zeros(1,sample_rate-length(impulse)) ];

  % quantize
  samples = floor(samples*8192+0.5)/8192;

  % time axis
  t = [0:length(samples)-1]/sample_rate/1e6;

  % write CSV file
  f = 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);

  figure
  plot(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")

endfunction

close all
transition_band = [950 1000] % MHz
generate(2500,transition_band,"AWG.csv")
generate(32768,transition_band,"AFG.csv")


--- End code ---

Performa01:

--- Quote from: gf on March 24, 2024, 11:22:47 pm ---
--- Quote from: Performa01 on March 24, 2024, 04:17:55 pm ---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.

--- End quote ---

Why? 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.

--- End quote ---
I 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 pm ---I 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.

--- End quote ---
Excellent 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-AWG

The 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-AWG

The 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%.

gf:

--- Quote from: Performa01 on March 25, 2024, 09:28:27 am ---The much more popular DDS-technique (which Siglent’s AFG-mode effectively is) is well known for its problems with pulse reproduction, particularly jitter.

--- End quote ---

The one sample period edge jitter of some DDS generators (when they generate pulses or square wave) is usually an aliasing artifact. 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.


--- Quote ---I tried the AFG version of the Sinc pulse first and I think it is not much different from the internal one.

--- End quote ---

You 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.


--- Quote ---SDS6204_Pro_H12_PR-Sinc_Gf-AWG

The 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.

--- End quote ---

We 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.


--- Quote ---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-AWG

The 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.

--- End quote ---

The performance of this gear is amazing :-+

With 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.


--- Quote ---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%.

--- End quote ---

Sure, 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 ;)

Martin72:


 ;)

Performa01:

--- Quote from: gf on March 25, 2024, 01:34:49 pm ---
--- Quote from: Performa01 on March 25, 2024, 09:28:27 am ---The much more popular DDS-technique (which Siglent’s AFG-mode effectively is) is well known for its problems with pulse reproduction, particularly jitter.

--- End quote ---
… 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.

--- End quote ---
Well, 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 pm ---
--- Quote ---I tried the AFG version of the Sinc pulse first and I think it is not much different from the internal one.

--- End quote ---

You 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.

--- End quote ---
Sorry, 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 pm ---We 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.

--- End quote ---
Maybe 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 pm ---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.

--- End quote ---
That 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 pm ---With 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.

--- End quote ---
Yes, 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 pm ---Sure, 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 ;)

--- End quote ---
How 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-AFG

We 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-AFG

This 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-AWG

The 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! 😉

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