Build a really fast pulse generator (50ps rise time) using an ultra fast SiGe comparator.


If you purchase a new or used scope you will probably need a way to test its advertised bandwidth. One way to test the bandwidth of the scope is to feed a really fast pulse into the oscilloscope and measure its rise time.  The reason why this makes sense is because a square wave contains many higher frequency harmonics. The frequency of its highest harmonic will determine the steepness of its falling or rising edge. If you look at a sinusoid wave of 1Ghz and one of 1Khz – the 1Ghz wave will have a steeper slope than the 1Khz sinusoid. A square wave or a pulse consists of the sum of many sinusoids, your scope bandwidth limitation will discard or attenuate the higher frequencies components and thus will alter the steepness of the wave that you see on your screen.

The bandwidth of the scope will be then given by the formula:

Bw = 0.35 / Tr      (Note: 0.4 / Tr  is sometimes used for modern digital scopes)

where Tr is the measured rise time of the pulse on the oscilloscope. This formula only stands when Tr >> Tra (Tr is much larger, usually at least 10 times than Tra)  , where Tra is the actual rise time of the pulse. I will describe a quick circuit for building a fast pulse generator with a Tra of 50ps. 50ps corresponds to a  bandwidth of  0.35/50ps  = 7Ghz, so you should be safe to evaluate bandwidth of scopes up to 700Mhz. For scopes with larger bandwidths you can still use same method but you need to take into account Tra, the formula becomes then:

Bw = 0.35/SQRT(Tr^2 – Tra^2)


The Circuit

The circuit uses a single chip, ultra fast comparator ADCMP580 available from Analog Devices.




For this circuit you will need a dual rail power supply (+5/-5V) , if you don’t have one you can use an ATX power supply from a computer case – it has both +5V and –5V rails. You will also need a way to generate a (slow rising) input pulse that the circuit above will convert to a fast rising (50ps) pulse.

The input pulse must not exceed +3V/-2V according to ADCMP580 datasheet. Keep this in mind If you’re using your Arduino  or a 555 timer circuit to feed in the input pulse , you will probably want to feed the pulse through a voltage divider if it exceeds these levels. Take into consideration that the ADCMP580 already has an internal 50Ohm resistor that you might use for your voltage divider.  Also please note that if you signal goes only from 0V to 5V , Vn will need to be somewhere in-between, again you can form a voltage divider to set it at about 2.5V. The outputs Q/Qb will toggle when your signal crosses the threshold set by Vn. In my case since I have a pulse generator that feeds a pulse from –1.25V to 1.25V (2.5Vpp) I am setting my Vn  threshold to ground. I am also using the internal 50Ohm termination just to place some “weight” on the circuit and filter out any noise pickup.

Rh is the hysteresis resistors this can be  anywhere between 0 to 10Kohm. I found that a value of 100Ohm worked great for me . Let’s say your signal is going up but then because of the noise it decides to go a little down, hysteresis feature of ADCMP580 protects against the output reacting to that noise, the output signal will only go back down when the voltage will fall Vhys below the point that made it go up. Below is a chart that describes the relationship between Vhys and Rh. You can see that in my case since I am using a 100Ohm resistor I have about 55mV of a buffer zone, so my output will not fluctuate if the noise level is less than roughly 55mV, in other words it will always take more than 55mV change in signal to toggle the comparator back in opposite state.



The Build and Results

Luckily Analog Devices offers an inexpensive ADCMP580 demo board, I picked mine from Mouser for around 50 dollars. The board is basically a breakout of the ADCMP580 chip with some decoupling capacitors and 2.9mm connectors for signals and standard 4mm banana sockets for the power supplies. Fear not the 2.9mm connectors , they are generally compatible with SMA connectors so I used some SMA-M to BNC-M cables to connect the signals to my scope and signal generator. (Some people will warn you that if you have some very expensive equipment do not use SMA connectors with 2.9mm connectors – the tolerances might be different and you might break the connectors on your expensive equipment). I also used some 50Ohm SMA terminators, on the QB, LE and VN connectors. The schematic above calls for LE and VN to be connected to ground via wire, however I found that a 50Ohm cap did the job. In case of QB connector it must be terminated with 50Ohm to ground, even if you’re not using its output so the 50Ohm terminator is required. LEB is connected to VEE (-5V) via a 1Kohm resistor and you might notice in the picture I have a 100 ohm resistor in the HYS slot (see between the black Q and red VEE cable).  You can see that the VTF_F, VTP_F, VTT, VCC0, CGND are left unconnected (the necessary connections are made by the blue jumpers on the board). Please note that although VCC1 may appear unconnected on the picture there’s an alligator clip under the board that connects it to the +5V rail of the power supply.




Once I completed the setup above I fed in a 2.5Vpp(@50Ohm load)  1Khz square wave into  VP,  my Q output was connected to my 500Mhz bandwidth oscilloscope, below is the result of this experiment:




The rise time of my input signal (Ch4) is 16.57ns while the rise time of the output (Ch1)  is 536ps (average) with a dispersion of 36ps, the momentary reading when the screenshot was taken was 590ps. So let’s calculate the bandwidth of the scope, I am taking a conservative approach using the worst number of 590ps:

Bw = 0.35 / 590ps =  0.35 / (590* 10^-12) = 0.000593 * 10^12 Hz = 593 * 10^6 Hz = 593 Mhz

So my scope has a bandwidth of no less than 593Mhz on Channel 1.  This is above it’s rated bandwidth of 500Mhz.


Conclusion and some notes

For around $50 I created a very fast pulse generator setup that allowed me to evaluate the bandwidth of my scope. 

Please note that if you read the ADCMP580 datasheet you will find a Rise/Fall Time of 37ps, however this is the rise time from 20% to 80%, the scope measures the rise time from 10% to 90%. I simply prorated this number  37ps * (90-10) / (80-20)  = 49.3ps ~ 50ps to get the rise time from 10% to 90%.

You will also see in datasheet the advertised equivalent rise time bandwidth of 8Ghz , I believe this comes from the formula 0.4/50ps = 8Ghz that applies to many modern digital scope. In my calculations I used the “old” conservative formula of  0.35/Tr instead of 0.4/Tr.

Finally please note that the output of ADCMP580 uses CML levels of  0V(High) and –0.4V(Low) according to datasheet. I found these levels to be actually lower in my setup (-0.472V High and -0.868V low), but with same difference of about 400mV as you can see in the scope screenshot below. If you have an explanation for this please leave a note in the comments section.





ADCMP580/ADCMP581/ADCMP582 Datasheet:

EVAL-ADCMP580BCPZ Evaluation Board

Evaluating Oscilloscope Bandwidths for Your Application

Digital Oscilloscope Bandwidth Measurement – direct and using risetime

Basics of Analog Oscilloscope Bandwidth

Analog Oscilloscope bandwidth considerations

EEVblog #306 – Jim Williams Pulse Generator

EEVblog #311 – Jim Williams Pulser Followup

EEVblog #316 – More PFANG, More 13GHz Scope, & More Pulser


Parts List


SMA-M Bnc Cable

SMA Terminator 50Ohm

Triple Power Supply

Function Generator




17 thoughts on “Build a really fast pulse generator (50ps rise time) using an ultra fast SiGe comparator.

  1. HankP100 Reply

    Regarding the DC offset in your output, be sure that 'CGND' (TP10 banana jack on evaluation board) is connected to 'GND PLANE' (TP3 banana jack). Please let me know if that corrects the issue.

  2. NoelB Reply

    I used your tutorial and HankP100 suggestion. Have my pulser working like a champ.

  3. Mohammad Hossain Reply


    I have read how to generate fast rising pulse but my question is will it affect the pulse width. I need to generate fast rising pulse in ghz range. will you be able to tell me something that I can use to do my task. I need to generate 200 pulses and pulse width should be incremented every time. for example 200ps, 250ps, 300ps and so on. these should be pulse width so rising time need to be smaller than those. 

    It will be great help if you can hlep me in this matter.



    Mohammad Hossain

    • starlino Post authorReply

      ADCMP580 can generate pulses with rise time of  50ps so it might work for you.

      These are just some theoretical assumptions, you need to test them out though …

      The output pulse length will be less than the input pulse length by   (Trin  – 50ps), where Trin is the rise time of the input pulse. 

      So for example if  your Trin =  500ps, you must feed in a pulse of    200ps + ( 500ps – 50ps) =  650ps to get a pulse of  200ps with 50ps rise/fall times.


  4. Roger Evans Reply

    I would love to build one of these to test some Tektronix sampling heads but the ADCMP demo boards seem to be around 220 UK pounds ($330) from Mouser, Farnell etc.  This puts the cost in a rather different league unless I am looking at the wrong board.  The bare chip is reasonably priced but so small I doubt I could make connections to it by hand.

    Any suggestions are welcome!

    • starlino Post authorReply

      Yes, the price of the demo board went up from $50 to almost $300 !!! Unbelievable. With such an appreciation in price I might consider selling mine :))  Luckily you can still buy the bare chip (ADCMP580 ) and build your own board , but since this is all RF stuff you will need the skills to lay it out properly. Also scan on the Ebay they come up sometimes !

  5. Alec Fischer Reply

    Is there a way to produce a square signal with 50ps rise/fall times, 1GHz frequency and output voltage of 0-10V?

    How different would it be from your design?

    • starlino Post authorReply

      A 50ps rise time with 10V peak-to-peak would translate roughly to a 200000 V/us slew rate. Most 10V+ supply op/amps you’ll find are in 8000V/us slew rate range.  ADCMP580 can do only  4V peak-to-peak output, but if you paralel/daisy chain 3 of them with the bottom supply of first being the top supply of next and so on, you could in theory achive a 12V peak to peak that you could bring down to 10V with a voltage divider. I would use another (forth) ADCMP580  to feed a signal into these 3 just to make sure they are synchronized.  Finally at the frontend you could use any 1Ghz signal generator. This is just some food for thought , I have not tryed this although it would be an interesting experiment.

  6. root Reply

    Hello there and thank you for the prompt report. I have the question regarding CGND (comparator GND) and GND (the similar to Q1). In the datasheet AD recommends connect them via banana jack. Have you use such connection during the measurement? Anyway many thanx for sharing your experience!

    • starlino Post authorReply

      Yes CGND should be connected to GND  see HankP100  comment #1.

  7. Jimmy Reply

    Excellent article and this was very educational to help me learn more about electronics and the use of oscilloscopes. Thank you,



  8. Ammar Reply


    I was wondering if I can use thic circute to generate picosecond pulses with high current(1-10A) and connect it with high power semiconductor laser noting that the the threshold current is around 3A, 

    • starlino Post authorReply

      You can use an Avalanche transistor   just google ‘Avalanche transistor Pulse Generator’

  9. Reinhard Metz Reply

    I built the pulse tester and of course it works perfectly. However – I have a question – have you ever tried to look at the pulse output on a sampling scope to see what the actual rise time is? I can’t seem to get a usable trace, likely due to the jitter in the driving source. Sampling I think expects relatively low jitter and a solid repetition rate, as the displayed “waveform” is a composite of sample of presumably the “same” signal but across many successive versions in time. I’m trying to figure out a way to get a stable rendition on my sampler of the pulser output to see the actual rise time. Thoughts?

  10. Jack Reply

    I recently bought a 50pS fast rise time generator module from in the UK for GBP50 for testing the rise time of my LeCroy 4104HD 1GHz scope.

    It is a quality build on a 1in x 1in multilayer PCB. Output is a 1 Vpp 10MHz square wave with <50pS rise/fall time to a BNCm on one side that plugs directly into the scope BNC jack set to Rin=50ohms to eliminate measurement artifacts that could occur when connecting cables to a test board. On the other side of the PCB is an SMAf that outputs a sync trigger from the 10MHz oscillator for a stable display. Power is from any 5V dongle (5V/200mA) through a USB-B jack also on the backside.

    Plugged into a spectrum analyzer it produces measurable harmonics from 10MHz past the 3.2GHz top end of the SA I use.

    Plug in, power up and measure without having to worry about probing/connection technique. A useful tool for high frequency RF testing applications including TDR.

    This is a good tutorial for how to measure scope rise time

  11. Ernest Reply

    Thanks for posting this interesting article. Recently I did some simple testing with a DIY generator based on 74AC14. Rise-time is about 2ns.

    1) I don’t really understand the formula above Bw = 0.35/SQRT(Tr^2 – Tra^2), that needed to be used when the Tr (measured rise-time) is not at least 10x the Tra (actual rise-time of the pulse).
    For the case they are the same value we would get Bw = 0.35/0 ! I suppose this is a typo and there should be a + sign in the formula?
    2) As already mentioned above in the comments, I was also wandering how the amplitude of the test signal plays a role in the testing method (as this is a substitution test for the actual test with a sinewave)? Say that we would have a test pulse of a larger (or smaller) amplitude. How does the slew-rate of the scope (input section and beyond…) plays a role? BW and SlewRate are different things (specifications) but are interconnected when we look at a test pulse…

Leave a Reply

Your email address will not be published. Required fields are marked *