I have a pulse signal with frequency f(t) And i want to generate from it a sine signal with frequency f(t) (f(t) doesn't vary a lot in time) Is there a method to do it directly with a function generator ? If no, How can i acheive this?

  • $\begingroup$ Are you looking for a frequency modulator? $\endgroup$
    – MBaz
    Mar 7 at 22:49
  • $\begingroup$ I think no, a frequency modulator will generate a sine signal with a frequency f(t) proportional to the amplitude of the pulse signal. What i need is a sine signal with the same frequency of the pulse signal. $\endgroup$
    – mahboul 3
    Mar 7 at 22:53
  • $\begingroup$ Besides using a PLL as Marcus suggests, it might be worth it to see if the first harmonic of the pulsed signal also has frequency $f(t)$. If that is so, a simple low-pass filter would suffice. $\endgroup$
    – MBaz
    Mar 8 at 13:59

1 Answer 1


Sounds like a very classical application of a PLL to me, aiming for the positive-going zero crossings of the sine wave emitted by a controllable oscillator to align with the position of these pulses

Assuming you ask this in an electronics, continuous-time context, implementation would look something like this:

  1. Have a VCO running at roughly the right frequency¹.
  2. Have a transmission gate (or analog mux, whatever) that gets activated for a controlled short time by every second of your input pulses (divide-by-2 with a flipflop), and which only then lets through the instantaneous value output by your VCO
  3. Have an integrator / low pass filter to convert these pulses to the control voltage of your VCO

Alternative approaches that can be more power-efficient and faster to build in CMOS technology² would instead

  1. Have your VCO
  2. convert your pulse train to a binary square wave (e.g., only 0 V and +1 V) by means of a toggle flip-flop
  3. convert your VCO's sine to a similar square wave by comparing it to its average voltage (0 V)
  4. combine the two with an XOR gate: if they are both at exactly the same frequency and phase-aligned, it will always output 0
  5. when the XOR output is
  • low / 0: output zero
  • high/ not 0: either output a positive or negative voltage, depending on the state of the flip-flop output
  1. use an analog integrator on that
  2. use the integrator's output as VCO control voltage

If you know the rough frequency range sufficiently well, it's not too high and you don't care too much about harmonics in your produced sine wave:

The Fourier transform of an impulse train is, surprisingly at first, an impulse train of the inverse spacing (so, a DC component, the oscillation at the same frequency, and every multiple of it). A simple band-pass filter can select the fundamental you want from that mixture. But that bandpass filter will not be perfect – you'll see your sine, but with harmonics, depending on how well your filter suppresses all unwanted harmonics.

¹ you can get roughly the right frequency by initially just counting the number of pulses in a time window, e.g. with a microcontroller, FPGA, or actual high-speed counter, depending on your application's needs.

² but don't trust me on this too much: I'm very much not a silicon designer. This is what I read in much older lectures.


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.