Some advanced signal filtering #73
drandyhaas
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
For v31.09 there will be a couple new signal filtering features. These can make some nice improvements to the waveform quality.
The first is a FIR frequency response correction filter. The idea is, you input to the scope as perfect a 10 MHz square wave as you can. The scope then analyzes this wave, adjusts for imperfections like DC offset, duty cycle, frequency, etc., and compares the frequency spectrum to that of an ideal square wave. The differences are measured and then corrected for, approximately, by a fast FIR filter. The coefficients for the filter are stored to file so they can be reloaded whenever. It requires about 64 multiplies per sample to then apply the corrections to the waveform, which is done in scipy so it's fast.
The result is a flatter frequency response, boosting the high frequencies a bit, and also some phase equalization to correct for small frequency dependent delays in the front end. There's a separate calibration done for two channel, single channel, oversampling, and interleaving modes. Since the responses of all Haasoscopes is very similar, you can generally just use the corrections from the included haasoscope.fir file. But you could also calibrate yourself for your particular unit.
The effect on the system bandwidth and risetime is non-negligible. The risetime goes from about 0.18 ns in interleaved oversampling mode to about 0.16 ns, meaning the "bandwidth" goes from about 2.2 GHz to 2.5 GHz. Not bad for a software correction. This is all done through the Calibration menu.
The other signal filtering filtering addition is a polynomial window filter, for "smoothing" the data, reducing noise while still preserving the waveform edges and features. You can turn this on in the Advanced... Polynomial filter menu item.
There's also a new upsampling algorithm which promises slightly less ringing from edges, scipy.resample_poly. You can also try this via the Advanced... Polyphase upsampling menu item.
These are in the main branch already if you want to try them out! Let me know what you think!
Beta Was this translation helpful? Give feedback.
All reactions