I have a weak pulse signal, rise time 1us, fall time 10us, 0.01 to 200 pulses per second, dead time between pulses is random, along with mostly ‘white’ noise.

The system has two goals of extracting information which is peak pulse amplitude among a noise background.

For the first goal, if I have unlimited budget, I would use a fast ADC, says 40 mega samples per seconds, to digitize the waveform and get the peak amplitude of the raw un-processed signal. Mission accomplished.

For cost limited DIY project, I would like to use either a 'pulse stretcher' (low pas filter of some type), or Op-Amp integrator, to lengthen the pulse width so that it can be digitized by low cost MCU built-in ADC.

I am hoping that the ADC 'area under the curve' of the 'lengthen' signal will be proportional to the peak pulse amplitude of the original signal.

That is, instead of measuring peak amplitude of the raw signal, it is measured 'indirectly'. Test signals can be used to 'per-calibrated' and establish relationship between the 'area under the curve' against peak amplitude of the original raw signal.

For the second goal, first, I would like to measure frequency domain spectrum of the raw signal using DSO as high speed ADC. Then, filter out 'out of band signal' to improve SNR.

Hardware has not yet built but from literature research, signal characteristics are as follow:

Signal is a few times higher than noise.

I want to raise the signal to noise ratio to, says reduce noise to 1 to 5% of signal amplitude.

The filtered signal is then feed to a passive RC or LC low pass filter or active OP-Amp integrator to 'stretch' the pulse width to, says 1ms, so that it can be digitized by build in ADC of MCU at, says, 44k to 192k samples per second (PC sound card rate).

Would appreciate pointers on how to:

  1. Buy a digital oscilloscope (like ‘DIY affordable’ Rigol at 1G samples per second).

What sample rate should I set it to? What file format to save the captured pulse to USB drive.

  1. Use a software spectrum analyzer on PC to find out the frequency contents of the signal.

There are settings like, fft window size and others. How these setting related to the signal to be analyzed? What should I set them to?

Apparently, there are many PC software designed to work with PC sound card.

How can I edit the ‘file header’ on says, sampling rate, to ‘fool’ the software that the signal is audio range other than the real sampling rate and signal frequency of a few MHz.

Which software is suitable for DIY, free and/or open source?

  1. Design a passive LC filter to filter out off-band noise. Should I use band pass, low pass or others?

At frequency of around 1.5MHz, is it cheaper and easier to choose passive LC over active OP-Amp filter needing high gain bandwidth product OP-Amp?

For keeping minimum distortion of signal pulse waveform, should I use Butterworth, or other filter type?

What is the ‘suitable range’ of filter order?

Which LC filter design software can create Butterworth and several other configurations, plot curve and is more suitable for DIY, free and/or open source?

  1. Is ‘Resistor shape coil’ or SMD chip coil more suitable for this particular application?

I tried Coilcraft filter designer version 3.4 for 1.5 MHz low pass design of 5th order low pass Elliptic.

Changing SMD coil size, but not inductance value, caused significant change on filter curve. I am surprised to see that, other parameters apart from inductance, have such a strong influence at relatively low frequency of 1.5MHz. Or I missed something?

  1. What is the appropriate load impedance for filter driven by low cost OP-Amp?

Design tools, like this, allow setting of impedance. Presumably, there is no point to use 50 ohms as it would be too heavy to be driven by OP-Amp, right? What impedance should it set it to? example passive LC filter design tool

  1. Should I use passive RC or LC low pass filter or active OP-Amp integrator for pulse width stretching?

Many thanks in advance

  • \$\begingroup\$ are we to assume your noise BW and that it is Gaussian? Are we ignore the potential to improve your signal capture method? \$\endgroup\$ Commented May 5, 2017 at 4:00
  • \$\begingroup\$ Never start a design until you define all the critical specs that may be relevant in my answer. I can answer all your questions if you do. \$\endgroup\$ Commented May 5, 2017 at 13:04
  • \$\begingroup\$ @Tony Many thanks for input. Question edited to reflect my line of thinking which may not be 100% correct. I do not yet have the hardware built so do not have full details on the signal parameters. \$\endgroup\$
    – EEd
    Commented May 9, 2017 at 13:12

3 Answers 3


There are a lot of false assumptions in your question, which I won't get into right now, but it depends on what your end-game is. 50% pulse width detection with low jitter or max SNR with area under the pulse or maybe peak timing detection for Doppler tracking with multiple antenna.?"

Like.. Op Amps have a 0 Ohm output impedance due to Zout=Zol/Aol= 300R/1e6 for unity gain. But for a BJT type with 300 ohm effect ive ESR from current limiting, the slew rate is limited to signal amplitude by current limit on capacitance loading and not Zout or the higher GBW.

@analogsystemsrf has the right idea with a "matched filter" but again it depends on above.

But I have a slightly different approach looking at the pulse width at 50% peak V or PW50 as we call it, the noise resolution and the group delay. If pulse delay is bad then a high order filter is bad as group delay increases with order of magnitude.

So I decided to use Falstad since it had built in filters for 10th order Elliptical and Butterworth LPF at 1kHz which may be scaled to 1MHz for the scope traces converting ms to us.

The scope traces ought to speak volumes if you understand the above concepts.

enter image description here

Falstad.com simulator also has a PSRG noise generator called "Antenna" which I scaled the gain to get the rough description of your SNR. It may be a little worse than your signal shown below as Signal plus Noise. which feeds 3 filters for comparison from an Op Amp 0 Ohm source impedance.

If you give specs for PW50, SNR, Noise Spectrum, group delay, delay distortion and PW50, then I can tell you which approach is best.

Until then which one do you like best?


If you want to preserve the waveform of your pulses then you want filters that have good time domain performance .Such filters are not sharp in the frequency domain .Bessel is probably the best for you to try .Butterworth has some overshoot so it is not as good as bessel .At low orders the time domain penalty of butterworth is not too bad.The sharp cutoff types like chebychev or elliptic or cauer are not for you.A gaussian filter might work but I have not built one.These more gradual filters will be more tolerant of low Q SMD coils and component value spreads .

  • \$\begingroup\$ au contraire... High Order Butterworth LPF can have NO overshoot and will have a more square f response than Bessel but certainly do not have flat group delay. Then energy and peak signal will be higher in the Butterworth a bit (5%) but the will the PW50 pulse width but the shape of the peak will change a bit. \$\endgroup\$ Commented May 5, 2017 at 5:49

To best recover pulses from noise, in white (broadband flat) Gaussian noise, a matched filter is theoretically best. If your noise is much wider bandwidth than the pulse/harmonics, then a simple 1-pole LPF gives you an insight into possible result.

[edit] If you know ---- EXACTLY ----- the pulse shape, then implement a time-delay-correlator using delay-lines (pieces of coax cable) and analog multipliers to provide weight of the samples; I saw this done, decades ago, on 150 MegaBit/second bit-synchronizers for telemetry-data recovery. Using today's methods, you can sample a number of times per Trise and Tfall, then implement the correlator in multiply-accumulate algorithm. With what accuracy do you wish to "measure" the pulse amplitude?

Here is a fast pulse into a slow filter, with NO NOISE. I used this setup, so you can see numerous lobes of sin(x)/x in "input spectrum(mag)". Notice the top button "phase spectrum" is not enabled; if it were enabled, we'd see 8 plots. This tool uses FFT computation, combining spectrum of input waveform with system spectrum to compute output spectrum (mag/phase), then using IFFT to compute output time waveform.

The Trise is 25 nanoseconds, Tfall 225, with 250nS deadtime until next pulse. The "system" is 1MHz RC LPF, thus Filter Tau is 1/6.28 = 160nanoseconds.

clean pulse

Now examine the pulse with +10dB SNR (noise bandwidth is out to the Nyquist rate). I'll show the SNR_control setup in 3rd PNG.

The output is much slower than input (Trise pulse is 25nS, Trise filter is 160) which reduces the amplitude from 1volt to 0.4 volt while greatly reducing the noise. For different noise waveforms, simply press "Run" another time; noise is randomly generated.

Compare the "input spectrum" to the "output spectrum" and notice the higher frequencies of "output" are cleaned up of noise.

 +10dB SNR pulse

And here is how you can adjust the SNR [the lower left "noise" box]

 input pulse description/setup

I used the RC LPF as example. Another choice is the LC (2_pole) with selectable dampening (Quality Factor).

Your fast-rise slow-fall pulse is the challenge. Most of your energy is slow. Here is setup for LC filter (Q of 1)

enter image description here

Here is pulse response for LC filter. For purpose of efficient FFT modeling (Signal Waveform Explorer uses FFT models of input waveform and of the system), I've used only small time separation of the pulses; your separation is 5,000uS, and your output waveforms will be separated.

enter image description here

Looks like 2MHz LC filter (Q=1) would be better....but your pulses are 5,000uS apart.

Notice the substantial delay of the LC (lowpassLRC in Signal Wave Explorer).

NOTE from data-recovery-projects: in bit-synchronizer design (nowadays called modems), the noise was specified in half-bit-rate bandwidth for NRZ data. Thus a 1MegaBit/second data stream, or 1uS/bit, would be filtered at 500KHz.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.