Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!gatech!hao!husc6!mit-eddie!ll-xn!ames!oliveb!sun!pepper!cmcmanis From: cmcmanis%pepper@Sun.COM (Chuck McManis) Newsgroups: sci.electronics,rec.music.synth Subject: Re: DCO's revisited - an inquiry into hardware implementation Message-ID: <22755@sun.uucp> Date: Mon, 6-Jul-87 20:46:09 EDT Article-I.D.: sun.22755 Posted: Mon Jul 6 20:46:09 1987 Date-Received: Wed, 8-Jul-87 01:49:51 EDT References: <235@cogent.UUCP.> Sender: news@sun.uucp Reply-To: cmcmanis@sun.UUCP (Chuck McManis) Distribution: world Organization: Sun Microsystems, Mountain View Lines: 48 Keywords: now for the real work... Xref: mnetor sci.electronics:902 rec.music.synth:1031 In article <235@cogent.UUCP.> mark@cogent.UUCP (Mark Steven Jeghers) writes: .> .>I recently posted an article discussing the design of a totally digital .>oscillator for use in a musical synthesizer. It was posted in the .>"rec.music.synth" group, I forget what the distribution was. If anyone .>did not receive it and wishes for a copy, email me. Anyway, in an attempt .>to actually work out the hardware implementation, I have run into a problem. .> .>The key part of the DCO is the adder-latch feedback loop. Theoretically, .>as my article described, you can run it at a clock rate of your choosing and .>use the number of bits of your choosing, in order to achieve the desired .>range and accuracy. The problem, however, is getting circuitry that will .>run fast enough. Specifically: .> .>The only binary adder that I can locate that is reasonably simple and .>readily available is the 7483 IC. For faster speed, the CMOS version, .>the 74HC283, is available (slightly different pinout, but same stuff). .>The 74HC283 is plenty fast, BUT it is only 4 bits wide. To handle a .>large number of bits (between 20 and 32), this means cascading a bunch .>of them (so their carry-bits can be connected together). The propogation .>delays for the carry bits add up to a large amount. The bottom line is .>this: the adder gets REAL slow due to the required rippling of so many .>carry bits. The secret (one of them) is to use an adder with carry 'look ahead' so that each adder only adds one gate delay to the loop. The second secret is to use smaller wave tables. A DCO built with a 256 byte lookup table needs a clock rate of 5.12 Mhz to generate a 20Khz tone. Since 20K is at the top of the audio spectrum and 5.12 Mhz is well with in TTL limits you can do reasonably well at that rate. Now for generating music (with frequencies accurate to say three decimal digits) you will need to 'overclock' the circuit to get the appropriate frequencies. Waving the hands here and throwing out some math, lets see, add three orders of magnitude to 20K, which gives you 20Meg, multiply by 256 and wow we're up to 5 gigahertz. Fortunately if you are using the DCO for music you can cheat because you 'know' that A in one octave is half the frequency of the next octave up, or twice the frequency of the next octave down. And for that means you simply set up 12 oscillators that have the desired frequencies and switch between them depending on the note. Say your top note is a *very* high A at 28,160Hz then your A oscillator would be running at 7.208960 Mhz. And although that particular value may be hard to find you can find one close and use a trimmer capacitor to detune it to the appropriate frequency. --Chuck McManis uucp: {anywhere}!sun!cmcmanis BIX: cmcmanis ARPAnet: cmcmanis@sun.com These opinions are my own and no one elses, but you knew that didn't you.