Theo Verelst Analog Synthesizer blocks page
Some of the maini ingredients in prototype form, remember I have
only my memory to work from, and not all is up to (my) standards,
but I made this stuff work.
------- | | |
|-----------------| |---->| | Rp1 Resonance |
| ------- | | |
| |\ R4 --- |
------ | | \ | |
Audio >--- R2 -----| >-------- --- |
in | ------ | | / | ------...------ |
| | |/ Opamp | (Ccouple) | | | Filter 2 | |
--- | |--------------| |------> ...| through |---|-->
| | R3 | | | | | | Audio | 4 |
| | |-----| |-----| out ------...------
--- | | | C1 | |
| | | |
| | ------- | |
---- ------- R1 ---- |
| | ------- |
| cmos switch (1/4 4066 (or 74HC equiv?)) |
PWM Clock in
Rougly R1=R2 (unity gain, for oscilating filter make sure overal
gain is slightly higher than 1).
2pixC1xR2 is rougly the lower cutoff frequency.
R3/R2 = rougly the variation of the cutoff frequency, I even tried
3 decaded to get a 20 Hz to 20 KHz range, which of course makes the
high frequency voltage control input highly susceptible to noise and
Evidently the opamps should have their non-inverting input at the desired
A voltage control PWM generator
To control the above filter from a voltage instead of a pulsewidth,
a simple triangle of sawtooth generator and comparator will do.
Roughly like this:
This will give a linear cutoff frequency dependence on the
control voltage. Alternatively, a capacitors chargin curve can be
used to give the filter a logarithmic respons, lets say an
equivalent of the 1 Volt/octave standard, by making an
exponential oscilator by replacing the current source by a
The sensitivity of the above design for capacitor and resitor
values is small, ordinary parts will do fine, for high quality
the parts could be matched or high precision.
Because of the pulse width controlled voltage input, offset
and multiplicative errors are circumvented, and a processor
or microcontroller or some random logic can reasonable easy
be used to make a highly accurate pulse width modulation index.
Various possibilties exist to tackle the offset (+ noise) and
absolute voltage control range problems, mainly by observing
that linking the capacitor decay rate with PLL can fix the
absolute error, and that charge coupling of the comparator
circuitry can virtually compensate for its offset.
Cheap and fast DA
Din0 | |
---->| |----| Rx |------| 2Rx |---------
| | |------------- |
Din1 | | | ---
---->| |----| Rx |------| Rx |----
| | |
. . | |
. . | | Rx
Din7 . . .
---->| |----| Rx |------| 2Rx |---------
| | | |
Clock | | | |---- ---
---->| | ------- |
Enable | | \+ -/ | Hi Zin Opamp
---->| | \ / |
| | | V |
--- ---------- | |
It should work until 10 to 12 bits or so using precision resistors,
possibly more. I used a set of R's from one series of 3k3, because
I happeded to have them. Converion time (apart from opamp):
easily in the <.1 uSec range. The reason this works with ordinaryu
and cheap parts is that cmod outputs (unlike their ttl counterparts
almost clamp to the supply rails with very small and constant
Accuracy considerations and alternatives
Alternatively, time division can be used to produce relatively
simple da (and ad) converters. The main idea I programmed on the
Z80 board mentioned elsewhere with a simple software triangle
generator and comparison to generate a single pulse width
modulated IO bit, for instance for driving a power FET
to nicely dim a car head light (without the need for heat sinks).
A six bit version could produce audio at sufficiently high sample
rate in software.
Using the same idea in hardware, "single bit" CD sampling rate
conversions are possible (44kHz x 256 = ca. 10 MHz). More
interestingly te abovementioned circuit can be combined
to do 16 bit conversions, with probably reasonaby good specs
(didn't have a chace to check it). Multiple channel versions
would take little more than a few SH circuits.
The multiplying dac idea can also be used either by storing
a da-ed value in a capacitor whose decay curve (of desired
shape, started by the clocking in of another datword) can be
input to a comparitor driving the enable output of the 573.
Works fine for synthesizer dca functionality and mixing of
generator outputs by simply gathering up the results in
a resetable integrator linked with a sample and hold and
filter output circuit. The multiplying accuracy can be quite
good and yields accurate small signal behaviour, and
alleviates the need for another form of multiplication,
either digitally or analogwise.
Sample and hold, selectors and multiplexers
Selectors and multiplexers are the easiest, they mainly consist
of standard, preferably fast decoding logic for instance 1 to 16
decoders from 74HC series, driving a cmos based bilateral switch.
Several chips exist which combine this functionality, for
instance in an 8 channel fashion, but as I remember using
seperate decoupled gates gives better cross talk figures.
I recently noticed that Analog Devices has similar (and bigger,
even matrix versions) devices with quite good specs.
A logical extension of analog switches is a sampe and hold
circuit, for instance usefull for multiplexing DA outputs
to multiple channels. I tried some straightforward circuits
(opamp input buffer, fet opamp output buffer, single CMOS switch,
and a 50 pF capacitor) and found that they can have set times of
at least roughly 1uS, and 8 bit accuracy compatible hold times
In other word a switched integrator: basically the above with a
C in the opamp feedback, and another switch to decharge it.
Interesting possibilities for preventing offset problems
exist (I took some tome to consider this and will write more
as I recollect the results) by also using a switch to
compensate for the opamps offset by reversing a remaining
offset voltage. Nice material for accurate a DA or AD converters.
Of course using currents instead of voltage is also a good idea,
the main point is that these cmos switches have near perfect
properties when lightly loaded.
An analog alternative for DA conversion would be to use the
exponential decay curve
of a capacitor in combination with a switched integrator.
Offset problems would easily spoil the fun, but I'll try to
dig up some ideas that some time ago seemed valid to
make this work.
A da converter and roughly the number of required bits times
the desired conversion rate, a fast enough comparator, and
some bit shifting and buffer logic suffice to make a
ad converter, preferably preceded by niquist filter and
sample and hold (even better: integrating SH) unit.