[sdiy] Digital VCO

Eric Brombaugh ebrombaugh at earthlink.net
Mon Apr 24 06:39:36 CEST 2006


A few days back I posted to find out if anyone had used Cypress PSoCs 
for a synth-diy application. Since then I've gotten a few chips and a 
programmer and I've had a chance to hack on a couple of ideas I've had. 
My first project is a voltage-controlled digital oscillator, which I've 
gotten working on the breadboard today.

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.

It's pretty straight-forward to improve the ADC. Moving to an 11-bit 
ADC should give me something like 0.5% error from ideal. I also have a 
handful of 32kHz crystals which should improve the stability of the 
62.5 kHz timebase from 2.5% to about 3ppm.  Increasing the number of 
samples in the sine lookup table should help with the aliases

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.

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.

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

Eric



More information about the Synth-diy mailing list