Products > Test Equipment
A High-Performance Open Source Oscilloscope: development log & future ideas
rhb:
@nctnico
Here's the same information from another author who also provides Matlab scripts, though I've not downloaded them yet.
Elsie calculates the same result:
In any case you can do a first order trapezoid approximation as the convolution of a pair of boxcar(f) functions. One boxcar whose width depends upon the length of the ramp and another that corresponds to length of the flat section of the trapezoid. That's a bar napkin math problem and the result is sufficiently accurate to make the problem of the aliased sidelobes obvious.
I showed the minimum phase impulse response for a 50% and 80% of Nyquist corners using a trapezoidal approximation a long time ago. That extra 75 MHz of BW going from 50% to 80% comes at the expense of a lot of ringing in the time domain.
A high order Bessel-Thomson filter has an impulse response which asymptotically approaches a delayed Gaussian spike. That's the best possible band limited representation of a Dirac function. That is the best we can do.
I have a 100 ps pulse generator from Leo Bodnar. What do you think that is supposed to look like on a DSO sampling at 1 ns? I want a symmetric Gaussian spike. That corresponds to the least waveform error for the BW available. If you want to argue it should be different, I don't care to discuss it. Do whatever you like.
Edit: The server borked the figure file naming.
gf:
--- Quote from: Marco on December 14, 2020, 11:18:31 pm ---If you do Chebyshev for the capture ... how well can you correct the group delay with a high order digital filter?
--- End quote ---
Sure, not everything can be compensated. E.g. a multiplication with 0 cannot be undone.
But dou you think that Chebyshev is a realistic assumption for an AFE's frequency response?
Marco:
--- Quote from: gf on December 15, 2020, 12:08:56 am ---But dou you think that Chebyshev is a realistic assumption for an AFE's frequency response?
--- End quote ---
It can be implemented at RF frequencies, I don't think it rings too badly on a step response that you need to sacrifice too much dynamic range.
So if the quantization and other noise doesn't make high order digital group delay compensation unstable, it's an option. That's the big if.
tom66:
The biggest issue I see with digital filters is do we do them in real time or on post-captured data?
The DSP48E1 blocks in the Artix-7 fabric are useful up to around 300MHz in the standard speed grade. Assume maybe 250MHz to be safe. Each block does a MAC operation with a 48-bit result, so with a symmetric filter that gives us one tap per DSP block. We'd only need 12 or 14-bit result data, IIRC the blocks have configurable rounding logic so that will be fine, we can probably truncate results with little harm.
To process 1GSa/s raw data you would need to run four parallel streams of DSP blocks in ~40 tap filter chains, which would create a lot of logic complexity and I don't exactly know how that would work when you switch to multichannel modes, there's a data dependency headache to be resolved.
Whereas if it was done post-processed, assuming 1232 points (100ns/div setting) at 50k waves/sec, that's only 61.6 MSa/s to process. Plenty comfortable to do this after capture by reading back from the RAM and writing into another buffer before rendering (once the 32-bit interface is in place so we have sufficient bandwidth to do this; or using an FPGA-side MIG with a small external RAM, the exact architecture needs to be worked out.)
In raw bandwidth terms there's enough DSP to do ~200 tap filters in a 7020 at around 250kwaves/sec, or e.g. 400 taps at 125kwaves/sec or even 2000 taps at 25kwaves/sec..., although memory bandwidth might start being an issue if samples are stored in an unfavourable order so that needs to be considered. How much correction could you do with a 200 tap filter on post-captured data? How much benefit would there be in going up to something like a 7030 with 400 DSP slices and a faster Kintex fabric; or an UltraScale?
gf:
If the ADC always runs at full speed, and the currently selected sampling rate is lower, then at least the decimation filtering needs to be done in real time, before storing the samples.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version