[sdiy] Digital VCO

Paul Maddox P.Maddox at signal.QinetiQ.com
Mon Apr 24 14:30:28 CEST 2006


Eric,

> My first project is a voltage-controlled digital oscillator, which I've 
> gotten working on the breadboard today.

Yay!

> The current design has a 24-bit DDS with a 62.5 kHz sample rate, driven by 
> an exponential lookup table and an 8-bit ADC. This gives me a 20Hz - 20kHz 
> frequency range with a 1V/oct response and about 3% error from ideal over 
> the entire range. Output is a sine waveform from  a 9-bit DAC, which gives 
> a fairly clean signal - there are a few birdies (aliases) audible, but 
> they're really far down and probably manageable.

A good start!

> The current design is sinewave output only. Other waveforms are possible 
> (square/triangle/sawtooth), but the PSoC doesn't have the computational 
> horsepower to do bandlimited waveforms, so there will be some audible 
> aliases if these are used. Also, the 8-pin PSoC I'd like to use only has 2 
> unused pins, so the number of realtime control options are limited.

8pin?
blimey, that's kinda limiting.

> Turning this into a usable VCO module should be pretty simple. Add an 
> accurate voltage divider to get the CV from 10V range to 5V range. Add a 
> filter & output driver to hack off the 40 kHz images and boost the output 
> from 0-5V to +/-5V. Voltage regulation & filtering, CV summation & I/O 
> jacks. Since the PSoC chip cost < $4 this should be a pretty inexpensive 
> package.

yep, that's pretty cheap.

> I'm interested in any thoughts / suggestions from the list on this idea. 
> Is this worth pursuing, or am I deluded? :)

everything is worth trying :-)

one course to consider, Assuming the output of the PSoC is a voltage, is to 
take this into an 8bit ADC and use this to drive an EPROM and give yourself 
a lookup table. As you say though, aliasing is an issue.

What I did with the monowave was to use a 12Mhz Atmel AVR (AT90s1200) as an 
NCO, which drove the lower 8bits of an EPROM to give me waveforms. as the 
sample rate of the AVR was around 900Khz, you couldn't hear any aliasing.

One thing I had planned to do, if I still had my modular, was to build a 
VCDO, based on a similar trick to the monowave, but break it down into two 
parts, like this ;-
1st Micro does the NCO+Waveform lookup (the AVR family has got bigger and 
better since)
A second micro does the ADC conversion and feeds the correct value to the 
NCO.

The reasons for using two seperate micros are ;-
1) the NCO can JUST do the NCO, it need not do any LPF of 
ADC/conversion/etc, so you can maintain a HIGH sample rate (>1Mhz should be 
easily acheivable).
2) AVRs are pretty cheap :-)

Paul 



More information about the Synth-diy mailing list