The most straightforward way to generate a ramp waveform is to drive a capacitor from a constant current source. Then we can integrate that into a linear ramp generator.

The most straightforward way to generate a ramp waveform is to drive a capacitor from a constant current source. If the constant current source is ideal, meaning that its source impedance is infinity, the voltage across the capacitor will rise linearly versus time. There are all kinds of ways to make a current source, a topic that has been previously addressed (please see "Current Pumps" at the IEEE Consultants’ Network of Long Island).

Using one of the sources from the article above, we can make a linear ramp generator along the lines of the following idealized sketch.

**Linear ramp generator with R1 - R2 = R3 = R4.**

Figure 1

Figure 1

The requirement for linearity is that the current source consisting of two ideal op-amps and resistors R1 thru R5 present an infinite source impedance as seen by capacitor C1. Nominally, this is achieved by balancing R1 thru R4 such that R2/R1 = R4/R3. Here, we make all four of those resistors equal. R5 sets current scaling. As shown, the scale factor is 10 mA of current via R5 flowing into C1 for each volt of V1.

Next, we deliberately unbalance the quartet of balanced resistors. We will address R3 and R4, but we could easily do the same things we're about to look at via adjustments of R1 and R2.

**Non-linear ramp generator with R4 > R3.**

Figure 2

Figure 2

When we make R4 larger than R3, the source impedance of our current source drops from infinity to some positive number of ohms. The ramp waveform takes on a time constant and exhibits a concave down form. The second derivative during the voltage rise is negative.

**Non-linear ramp generator with R3 < R4.**

Figure 3

Figure 3

If instead, we reduce R3 to being smaller than R4, but keep the same resistance ratio as above, the effect on the ramp waveform is exactly the same. The ramp waveform takes on a time constant and exhibits a concave down form.

However, things get interesting if we move the ratio of R3 versus R4 in the other direction!

**Non-linear ramp generator with R4 < R3.**

Figure 4

Figure 4

When unbalancing the resistors in this direction by lowering R4, the source impedance of the current source comes down from infinity __but__, it is now a __negative__ value. The effect is to make the ramp waveshape take on a concave __up__ form. The second derivative during the voltage rise is positive.

**Non-linear ramp generator with R3 > R4.**

Figure 5

Figure 5

Just as before, adjusting the resistance ratio, via R3 instead of R4, has exactly the same effect, a concave __up__ form.

It may help to visualize all of this by examining all three waveshapes together.

**Waveshape comparison**

Figure 6

Figure 6

If you make R3 and/or R4 variable, you can use that arrangement as a linearity adjustment. That capability might be of use if you need to compensate for non-linearity in some other part of your system design.

*John Dunn is an electronics consultant, and a graduate of The Polytechnic Institute of Brooklyn (BSEE) and of New York University (MSEE). *