[sdiy] Digital VCO

Eric Brombaugh ebrombaugh at earthlink.net
Tue Apr 25 01:02:14 CEST 2006


I wish I had enough processor cycles to implement dithering in this 
application. The PSoC 9-bit DAC is rather quirky since it is implemented 
as 2 blocks of switched cap ratiometric charge-steering. The 9-bit value 
needs to be split into 6-bit and 3-bit sections, and doing that with the 
limited available bit manipulation instructions takes too much time, so 
the sine table is stored pre-split. About all I have time for in my ISR 
is to update the current DAC values, increment the DDS phase and look up 
and save the DAC values for the next cycle. This takes about 60% of the 
overall processor bandwidth. The rest is taken up in servicing the ADC 
and computing the exponential frequency.

Note that some enterprising individual has an appnote on how to 
implement an 11-bit DAC, but that technique requires hacking the XML 
which defines the PSoC user modules, as well as run-time calibration to 
ensure monotonicity. I think I'll save that for later. Much later. :-P

For an LFO the sampling rate could be reduced significantly which would 
allow more time for fancy-pants DSP stuff. :)

Eric


ASSI wrote:
> You can increase the phase resolution, improve the interpolation and 
> dither the output very easily in this case. In fact a relatively easy 
> 2-bit or 3-bit dither could likely improve the apparent resolution in 
> Eric's current design for audio frequencies. For an LFO design it may be 
> possible to replace the wave LUT with a table of Walsh coefficients.
>   



More information about the Synth-diy mailing list