I need to generate a train of rectangular pulses, with positive and negative arbitrary amplitude. Ideally, I would like to have the generation electronics connected with a computer, and I would like to generate a flow of values that would decide the amplitude of each pulse. (This is for a telecom project, so think of it as a stream of data, but I need to fine tune the amplitudes.)

Is an FPGA a good tool to do this?

The parameters are:

  • a rise time of 10 or 20 ns
  • a pulse duration of 100 or 200 ns
  • a repetition rate of 500 KHz or 1 MHz.
  • the max amplitudes should be +/- 1 V
  • the amplitude resolution should be of 1 mV
  • 3
    \$\begingroup\$ an FPGA might be a good part of the solution, for timing, for generating logic pulses, sequences, maybe even cntrolling things, but you'll need something analogue for the amplitude control, say a DAC and amplifier. \$\endgroup\$
    – Neil_UK
    Commented Jun 20, 2019 at 15:31
  • 1
    \$\begingroup\$ Precise amplitude control of those is going to be the tricky bit, and it's entirely analogue. Perhaps one of the "PSOC" parts? \$\endgroup\$
    – pjc50
    Commented Jun 20, 2019 at 15:53
  • 2
    \$\begingroup\$ Without specifying the load your rise-time spec is useless. The hardest part will be the analog design...getting precise pulse voltages that are both positive and negative, with a 10MHz update rate. \$\endgroup\$ Commented Jun 20, 2019 at 16:59
  • 2
    \$\begingroup\$ Consider the similarity of your problem to an analog video card's. \$\endgroup\$ Commented Jun 20, 2019 at 17:07
  • 3
    \$\begingroup\$ @ChrisStratton you're on to something that works pretty well and is extremely cheap: osmo-fl2k is based on USB3 VGA adapters :) \$\endgroup\$ Commented Jun 20, 2019 at 17:35

1 Answer 1


An FPGA driving a reasonably fast DAC could work well for this application. 100 ns pulse width and 1 mV resolution with 1 V range implies a 10 Msps 10 bit DAC may be sufficient. Do you need to adjust the pulse width, or is the pulse width fixed? If you need to adjust it, what sort of resolution do you need? How about the time between pulses? If you use a 100 Msps DAC, then you can adjust both of those with 10 ns resolution. You might also be able to do that like that with a slower DAC. A 100 Msps DAC is also more likely to give you the 10 ns rise time figure you're looking for.

  • 1
    \$\begingroup\$ The range is actually +/-1V so I think at least 11 bits are needed for the DAC. Of course, that assumes that the DAC has a reference voltage of no more than 1.024V \$\endgroup\$ Commented Jun 20, 2019 at 22:32
  • 1
    \$\begingroup\$ Ah, good point, maybe get a 12 or even 14 bit DAC, then. \$\endgroup\$ Commented Jun 20, 2019 at 22:33
  • \$\begingroup\$ Thank you Alex. No, I don't need to adjust the width of the pulses, or the time between them; but I do need to apply a delay, in order to find the right synchronization. I would say a time resolution of the order of 10 ns will do. \$\endgroup\$
    – Fabio
    Commented Jun 21, 2019 at 9:01
  • \$\begingroup\$ @alex.forencich do you think this is still the case, after a couple of years? \$\endgroup\$
    – Fabio
    Commented Aug 9, 2021 at 12:04

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.