The circuit here presents an Oscillator featuring the following attributes:
1.1A guaranteed output current for sine and triangle waves with
thermal shutdown and protection diodes
Variable offset and gain for the sine/triangle output
CMOS-compatible complementary square wave outputs capable of driving
into 50 Ohm with rise/fall times of 30ns at 10V (new in Rev 3).
Frequency range 0.5Hz to 300 kHz (but signal degenerates when approaching
the upper frequency limit)
Single supply operation, 5V to 15V
About 50% duty cycle (non-precision and adjustable via a trim pot)
(This is the 3rd revision dated 09/2004.)
The circuit is a fairly easy design: It consists of the actual VCO
(ICL8038 with supplement parts), the sine and triangle output stage
(LT1210) and the CMOS-compatible output stage using the MOSFET driver
Download function generator circuit schematic
PNG image (854x734 as seen below): funcgen8038-rev3.png
High-quality PDF: funcgen8038-rev3.pdf
Permission to copy and use this schematic is hereby granted provided credit is given where it is due.
The ICL8038 and all parts around on the lower half of the sheet
make up the actual oscillator which is a modified design based on one of
the application examples in Intersil's
data sheet. There is a large 6-stage switch (S1) to
select the major frequency and a logarithmic potentiometer (R2) for
minor frequency selection.
I discourage implementing the oscillator as shown in the above sheet
because most of the other potentiometers turned out to be without significant
enough effect on the output wave form to jusify their application.
Furthermore, duty cycle adjustment will not keep a 50% ratio over all
The switch S2 is used to choose between sine and triangle wave for
the high-current amplifier.
The CD4030 on the left top is used as CMOS-logic signal preconditioning
feeding the MOSFET driver IC ICL7667 as output stage for the
complementary square wave output. The application of the two XOR gates has
the advantage that it can supply a sqare wave and its complement without
time offset between them (because CMOS has balanced raise and fall
times). Use a bypass capacitor near the ICL7667 device as it can draw
quite strong currents and is capable of driving into 50 Ohm up to
at least 10V resulting in rise/fall times of 30ns.
So, I'm now entirely satisfied with the digital output.
The industry-standard LM741 in combination with R11 is used to adjust
the sine/triangle offset level.
(Hint: You should probably use something better here - especially more
output current cannot hurt.)
Since this oscillator is single-supply,
it comes handy that you can change the "zero level" of the wave output;
you will normally adjust that to half of the supply voltage. R11 is
meant to be available to the user.
The actual sine/triangle output amplifier was a bit hard to find because it
should be able to drive 1A while still not degenerating signal wave form
at some hundred kHz. After some searching, I found the ADSL line driver
LT1210 from Linear Technology.
Being an ADSL line driver, it has a high GBP and high slew rate while
providing the required output current (1.1A guaranteed) at all frequencies
in question. The part can be obtained e.g. from
It turned out that this quick current feedback amplifier required very good
DC decoupling/bypassing capacitors in order not to start oscillating of
its own (at frequencies up to 40MHz). It took me a lot of time to get it
work properly; but once that is achieved, the amplifier shows very good
performance. (Note: The current implementation is not yet perfect as I
noted some months later: It may still start oscillating for parts of
the period when driving some special loads.)
R18 is used to trim the VCO output offset from the ICL8038
(about half supply voltage). R12 is meant for the user as gain
adjustment to tune the sine/triangle amplitude from zero to more than
supply voltage (resulting in wave tips being cut off). The maximum gain
is trimmed by R13/R14 and care sould be taken to use proper values
(consult LT1210's data sheet for details).