# D/A resolution ( was Tempco )

Brian Towles gt7276a at prism.gatech.edu
Thu May 14 00:50:57 CEST 1998

```> Hi
> This would work but you would need to use a high resoluton A/D , D/A
> process to get the pitch resolution required. e.g. an 18bit convertor
> would give a 0.038Hz resolution for a 10Hz to 10kHz oscillator (16
bits
> would only give 0.15Hz resolution).  Could be expensive.  If you could

> run the convertors fast enough you could multiplex the process though.

By multiplexing do you mean some kind of interpolation?  Here's
apotential
algorithm for turning a digital reference into a control voltage:

The D/A might only have a 1Hz resolution, but by modulating the output
between an index and the index + 1, your output voltage would have an
_average_ value between the index and the next index.

ex.  1Hz resolution, want a 200.5 Hz control voltage.

sol'n:  modulate between 200 and 201 Hz outputs with a 50% duty
cycle,
pass this voltage through an averaging ( low-pass )
filter.

By changing the cutoff of the averaging filter you could even get a
glide
effect.  This method would basically take advantage of the extra speed
that
most DAC's have relative to human hearing, and converting that into
resolution.Simple circuit idea:

denote the control voltage as a whole number index - n
denote the fractional step out of some power of 2 - k / 16 (for
example)

So in the previous example, say n indexes the cv for 200Hz.  To get 1/2
of an

index step of 1Hz let k = 8 ( out of 16 ).

Now use a _fast_ counter ( as faster as the particular DAC can handle )
to
increment a 4-bit counter ( 16 values ).  A binary comparitor looks at
the
value of the counter vs. the current value of k.  When the counter is
less
than k it indexes the DAC with n.  When the counter is greater than k it

indexes the DAC with n+1.  On the analog output of the DAC use a
sample-and-hold circuit timed to work with the DAC, followed by the
low-pass filter discussed above. For the tradeoff in speed ( 16 times
slower ) you get an increase in resolution( 16 times better ).

Is this even reasonable?

Brian

```