A sawtooth core DCO with no DAC - How does it work?
The original synths that used this quirky oscillator core are both from Roland, the Jupiter 4 and ProMars (for some reason, Sound On Sound claim that the SPV355 rackmount guitar synth also uses this architecture, but a look at the schematic disproves this).
Roland ProMars/JP-4 VCO operating principles. (Source: Roland ProMars service notes) |
The above block diagram gives a rough overview of how the VCO actually works, but it's a little obtuse, so I'll break it down.
The timing pulses that are presented to the oscillator core need to meet two conditions for the circuit to work properly - They must be of fixed pulse width, independent of input frequency, and must be a power of two higher than the target frequency.
The bottom half of the diagram illustrates how this conditioned clock is transformed into a sawtooth. The fixed pulse width clock is fed into a simple passive frequency-to-voltage converter, essentially little more than a lowpass filter, and the resultant voltage is used to charge an op-amp integrator. As frequency increases, charging rate increases, and vice-versa. Simultaneously, the clock is divided by the same power of two that the timing pulse frequency is multiplied by, thus recovering the target frequency. This is used to discharge the integrator, and due to the fact that the charging voltage is proportional to frequency, the resultant sawtooth amplitude is constant regardless of input frequency. Roland specifies a 4052 dual four-to-one multiplexer before the integrator and reset circuit, to allow for a front panel switch that selects between four octaves. This works by changing both the frequency divisor and resistor value before the integrator in tandem.
Of course, this system is not without its flaws - The waveform starts to deviate away from a sawtooth at low frequencies, which the frequency-to-voltage converter cannot utilise properly, and at high frequencies the waveform collapses in volume as the fixed pulse width approaches the frequency at which it is re-triggered. But as long as you keep the frequency in the 'Goldilocks zone', all is well and the oscillator performs admirably.
The below diagram illustrates the changes made to this scheme to digitise the frequency generation for use in Dechreuad.
Dechreuad frequency generation and oscillator core block diagram. |
This is, of course, highly simplified. In order to increase the oscillator's range as much as possible, the integrator trigger divider and charge rate will be dynamically switched, and a lot of other necessary circuitry and tweaks have been omitted. But the central thesis is there, and so far it works fantastically on breadboard.
For testing purposes so far, the CPU has been a Parallax BASIC Stamp 2p24, but this will be substituted in due course for a microcontroller or microprocessor more suitable for integrating into an actual product. Currently I'm experimenting with a simple 8051-based chip, programmed in assembly.
This is a much more involved design process than Pas-Isel ever was, so I shall try and post more intermediate updates as and when I can. I'm looking forward to seeing where this module takes me, and to sharing more about it in the near future.
This is fantastic! A little insight into how the relationship works between the desired frequency and getting the sawtooth to stay "stable". I look forward to reading more about it.
ReplyDelete