time-nuts@lists.febo.com

Discussion of precise time and frequency measurement

View all threads

Re: [time-nuts] V standards

S
SAIDJACK@aol.com
Tue, Dec 2, 2008 7:18 AM

Hi Bruce,

yup, I thought that circuit and it's claim to 32 bit resolution was over  the
top too, I didn't actually read the details.

Coarsedac changes are an issue as you mentioned, but one can get around  them
by scaling the two dacs in a way to only use a couple of bits from the
coarsedac, and operate most of the time using just the fine dac.

This is similar to a mechanical coarse adjustment (such as on the  10811A)
setting the approximate voltage range, with the EFC done by  the fine dac.

If you use a 16 - 18 bit fine dac, and 6 - 8 bits of a coarse dac then  this
works quite well, and with a low aging SC-cut crystal you may never see a
coarsedac change, while still having over 21+ bits of overall resolution.

It's fairly straight forward to improve the resolution of a good Dac by 2,  3
or even 4 bits using PWM, see Tom's description of how this is done in a
Z3801A on leapsecond.com.

So in short, one could use two identical 16 bit dacs, scale the resistors  so
that only the upper 6 - 7 bits are used as a coarsedac, and use the fine dac
as a 20 bit dac with PWM resolution-enhancement (16 to 20 bits). This would
yield more than 26 bits theoretically from 2 inexpensive 16 bit dacs, and the
noise could be removed by low pass filtering using an analog filter with  say
less than 0.3Hz cutoff frequency similar to the Z3801A circuitry. In this
case the coarsedac can probably even be exchanged for a simple high-stability
pot.

It does require a bit of real time firmware to do the PWM enhancement of
course.

bye,
Said

In a message dated 12/1/2008 22:47:29 Pacific Standard Time,
bruce.griffiths@xtra.co.nz writes:

The  major advantage of such a DAC is the inherent monotonicity which
cannot be  achieved and maintained (around coarse DAC transitions)
without frequent  calibration when the outputs of 2 16 bit DACs are  combined.

Bruce

Hi Bruce, yup, I thought that circuit and it's claim to 32 bit resolution was over the top too, I didn't actually read the details. Coarsedac changes are an issue as you mentioned, but one can get around them by scaling the two dacs in a way to only use a couple of bits from the coarsedac, and operate most of the time using just the fine dac. This is similar to a mechanical coarse adjustment (such as on the 10811A) setting the approximate voltage range, with the EFC done by the fine dac. If you use a 16 - 18 bit fine dac, and 6 - 8 bits of a coarse dac then this works quite well, and with a low aging SC-cut crystal you may never see a coarsedac change, while still having over 21+ bits of overall resolution. It's fairly straight forward to improve the resolution of a good Dac by 2, 3 or even 4 bits using PWM, see Tom's description of how this is done in a Z3801A on leapsecond.com. So in short, one could use two identical 16 bit dacs, scale the resistors so that only the upper 6 - 7 bits are used as a coarsedac, and use the fine dac as a 20 bit dac with PWM resolution-enhancement (16 to 20 bits). This would yield more than 26 bits theoretically from 2 inexpensive 16 bit dacs, and the noise could be removed by low pass filtering using an analog filter with say less than 0.3Hz cutoff frequency similar to the Z3801A circuitry. In this case the coarsedac can probably even be exchanged for a simple high-stability pot. It does require a bit of real time firmware to do the PWM enhancement of course. bye, Said In a message dated 12/1/2008 22:47:29 Pacific Standard Time, bruce.griffiths@xtra.co.nz writes: The major advantage of such a DAC is the inherent monotonicity which cannot be achieved and maintained (around coarse DAC transitions) without frequent calibration when the outputs of 2 16 bit DACs are combined. Bruce
BG
Bruce Griffiths
Tue, Dec 2, 2008 8:14 AM

Hi Bruce,

yup, I thought that circuit and it's claim to 32 bit resolution was over  the
top too, I didn't actually read the details.

Coarsedac changes are an issue as you mentioned, but one can get around  them
by scaling the two dacs in a way to only use a couple of bits from the
coarsedac, and operate most of the time using just the fine dac.

In principle embedded calibration of the errors at coarse DAC
transitions should be possible.

This is similar to a mechanical coarse adjustment (such as on the  10811A)
setting the approximate voltage range, with the EFC done by  the fine dac.

If you use a 16 - 18 bit fine dac, and 6 - 8 bits of a coarse dac then  this
works quite well, and with a low aging SC-cut crystal you may never see a
coarsedac change, while still having over 21+ bits of overall resolution.

It's fairly straight forward to improve the resolution of a good Dac by 2,  3
or even 4 bits using PWM, see Tom's description of how this is done in a
Z3801A on leapsecond.com.

Yes this can be made to work well, as can using sigma delta modulation
however one then needs a good random number generator for dithering the
loop quantiser to eliminate idle tones which are otherwise somewhat
problematic. The effect is very easy to simulate using Matlab or even by
writing some simple code.
Using a synchronous filtering technique simplifies the filtering
considerably. The usual sigma delta modulation techniques advocated to
increase DAC resolution don't work that well due to the idle tones they
generate.

So in short, one could use two identical 16 bit dacs, scale the resistors  so
that only the upper 6 - 7 bits are used as a coarsedac, and use the fine dac
as a 20 bit dac with PWM resolution-enhancement (16 to 20 bits). This would
yield more than 26 bits theoretically from 2 inexpensive 16 bit dacs, and the
noise could be removed by low pass filtering using an analog filter with  say
less than 0.3Hz cutoff frequency similar to the Z3801A circuitry. In this
case the coarsedac can probably even be exchanged for a simple high-stability
pot.

Synchronous filtering of the DAC output would result in much faster
settling times with low modulation artifacts.

It does require a bit of real time firmware to do the PWM enhancement of
course.

bye,
Said

The technique advocated in the article may have fewer artifacts due to
DAC settling time issues.
Its also a lot cheaper since very tight tolerance stable components
aren't required.
The output should also be somewhat quieter.

Bruce

SAIDJACK@aol.com wrote: > Hi Bruce, > > yup, I thought that circuit and it's claim to 32 bit resolution was over the > top too, I didn't actually read the details. > > Coarsedac changes are an issue as you mentioned, but one can get around them > by scaling the two dacs in a way to only use a couple of bits from the > coarsedac, and operate most of the time using just the fine dac. > > In principle embedded calibration of the errors at coarse DAC transitions should be possible. > This is similar to a mechanical coarse adjustment (such as on the 10811A) > setting the approximate voltage range, with the EFC done by the fine dac. > > If you use a 16 - 18 bit fine dac, and 6 - 8 bits of a coarse dac then this > works quite well, and with a low aging SC-cut crystal you may never see a > coarsedac change, while still having over 21+ bits of overall resolution. > > It's fairly straight forward to improve the resolution of a good Dac by 2, 3 > or even 4 bits using PWM, see Tom's description of how this is done in a > Z3801A on leapsecond.com. > Yes this can be made to work well, as can using sigma delta modulation however one then needs a good random number generator for dithering the loop quantiser to eliminate idle tones which are otherwise somewhat problematic. The effect is very easy to simulate using Matlab or even by writing some simple code. Using a synchronous filtering technique simplifies the filtering considerably. The usual sigma delta modulation techniques advocated to increase DAC resolution don't work that well due to the idle tones they generate. > > So in short, one could use two identical 16 bit dacs, scale the resistors so > that only the upper 6 - 7 bits are used as a coarsedac, and use the fine dac > as a 20 bit dac with PWM resolution-enhancement (16 to 20 bits). This would > yield more than 26 bits theoretically from 2 inexpensive 16 bit dacs, and the > noise could be removed by low pass filtering using an analog filter with say > less than 0.3Hz cutoff frequency similar to the Z3801A circuitry. In this > case the coarsedac can probably even be exchanged for a simple high-stability > pot. > > Synchronous filtering of the DAC output would result in much faster settling times with low modulation artifacts. > It does require a bit of real time firmware to do the PWM enhancement of > course. > > bye, > Said > > > The technique advocated in the article may have fewer artifacts due to DAC settling time issues. Its also a lot cheaper since very tight tolerance stable components aren't required. The output should also be somewhat quieter. Bruce
PK
Poul-Henning Kamp
Tue, Dec 2, 2008 8:25 AM

Coarsedac changes are an issue as you mentioned, but one can get around  them
by scaling the two dacs in a way to only use a couple of bits from the
coarsedac, and operate most of the time using just the fine dac.

If you are controlling this with a microcontroller, there is an alternative
you should consider:

Use only a single DAC and then PWM modulate its output, followed
by a low-pass filter.

--
Poul-Henning Kamp      | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG        | TCP/IP since RFC 956
FreeBSD committer      | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.

In message <bef.38541c00.36663b55@aol.com>, SAIDJACK@aol.com writes: >Coarsedac changes are an issue as you mentioned, but one can get around them >by scaling the two dacs in a way to only use a couple of bits from the >coarsedac, and operate most of the time using just the fine dac. If you are controlling this with a microcontroller, there is an alternative you should consider: Use only a single DAC and then PWM modulate its output, followed by a low-pass filter. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.
BG
Bruce Griffiths
Tue, Dec 2, 2008 9:05 AM

Poul-Henning Kamp wrote:

Coarsedac changes are an issue as you mentioned, but one can get around  them
by scaling the two dacs in a way to only use a couple of bits from the
coarsedac, and operate most of the time using just the fine dac.

If you are controlling this with a microcontroller, there is an alternative
you should consider:

Use only a single DAC and then PWM modulate its output, followed
by a low-pass filter.

The trouble with this approach is the very long filter time constants
with  24 bit PWM.
Combining 2 16 bit PWM outputs requires relatively close tolerance
components.
A synchronous filter is far more effective.

Bruce

Poul-Henning Kamp wrote: > In message <bef.38541c00.36663b55@aol.com>, SAIDJACK@aol.com writes: > > >> Coarsedac changes are an issue as you mentioned, but one can get around them >> by scaling the two dacs in a way to only use a couple of bits from the >> coarsedac, and operate most of the time using just the fine dac. >> > > If you are controlling this with a microcontroller, there is an alternative > you should consider: > > Use only a single DAC and then PWM modulate its output, followed > by a low-pass filter. > > The trouble with this approach is the very long filter time constants with 24 bit PWM. Combining 2 16 bit PWM outputs requires relatively close tolerance components. A synchronous filter is far more effective. Bruce
PK
Poul-Henning Kamp
Tue, Dec 2, 2008 1:48 PM

In message 4934FA4B.6040707@xtra.co.nz, Bruce Griffiths writes:

Use only a single DAC and then PWM modulate its output, followed
by a low-pass filter.

The trouble with this approach is the very long filter time constants
with  24 bit PWM.

You don't want 24bit PWM, you want to combine a normal DAC with
PWM modulation.

The disadvantage is that the result is not linear.  But it is
monotonic and approximately the lower 4/5th of the distinct
combinations are practically useful.

Take the Analog Devices ADUC7026 ARM7 microcontroller as example:

It has a 12bit DAC of pretty decent quality and a 16 bit PWM running
at 42 MHz.

If you just use 10 PWM bits, that gives you a PWM frequency of 20kHz,
easily filtered to DC by simple means.

Modulate the DAC output with the PWM and you get 1,353,354 unique
settings of which about the first million is usable.

That's about 6 additional DAC bits with the added advantage, that
if you prioritize the PWM for the low bits, you will get better
step regularity than the DAC would give you.

(Didn't somebody say that Fluke used PWM methods in their voltage
calibrators ?  Would make a lot of sense if they did...)

If you use 14 bit PWM you get a 1281 Hz PWM frequency,
requiring more careful filtering, but giving you 20,384,526
distinct output combinations, with usable linearity up to about
for the first 16 million combinations, so that is approximately
a 24 bit DAC.

Full 16 bit PWM results in 321 Hz PWM frequency which means tricky
and likely impractical filtering, but you get 86,616,948 distinct
output combinations of which you can use approximately 65 million,
so that is around a 26bit dac.

Or 12-20 nanovolts between steps, if you prefer.

The real trouble with this aproach, is that you get "interleaved
gears" like on a bike: you need either a (huge) table or a bit of
code to tell you what the neighboring codes are.

Fortunately, finding a neighboring code is pretty easy, as the
relevant searchspace is pretty limited, so for EFC control of
an OCXO this is not a practical problem.

Poul-Henning

--
Poul-Henning Kamp      | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG        | TCP/IP since RFC 956
FreeBSD committer      | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.

In message <4934FA4B.6040707@xtra.co.nz>, Bruce Griffiths writes: >> Use only a single DAC and then PWM modulate its output, followed >> by a low-pass filter. >> >The trouble with this approach is the very long filter time constants >with 24 bit PWM. You don't want 24bit PWM, you want to combine a normal DAC with PWM modulation. The disadvantage is that the result is not linear. But it is monotonic and approximately the lower 4/5th of the distinct combinations are practically useful. Take the Analog Devices ADUC7026 ARM7 microcontroller as example: It has a 12bit DAC of pretty decent quality and a 16 bit PWM running at 42 MHz. If you just use 10 PWM bits, that gives you a PWM frequency of 20kHz, easily filtered to DC by simple means. Modulate the DAC output with the PWM and you get 1,353,354 unique settings of which about the first million is usable. That's about 6 additional DAC bits with the added advantage, that if you prioritize the PWM for the low bits, you will get better step regularity than the DAC would give you. (Didn't somebody say that Fluke used PWM methods in their voltage calibrators ? Would make a lot of sense if they did...) If you use 14 bit PWM you get a 1281 Hz PWM frequency, requiring more careful filtering, but giving you 20,384,526 distinct output combinations, with usable linearity up to about for the first 16 million combinations, so that is approximately a 24 bit DAC. Full 16 bit PWM results in 321 Hz PWM frequency which means tricky and likely impractical filtering, but you get 86,616,948 distinct output combinations of which you can use approximately 65 million, so that is around a 26bit dac. Or 12-20 nanovolts between steps, if you prefer. The _real_ trouble with this aproach, is that you get "interleaved gears" like on a bike: you need either a (huge) table or a bit of code to tell you what the neighboring codes are. Fortunately, finding a neighboring code is pretty easy, as the relevant searchspace is pretty limited, so for EFC control of an OCXO this is not a practical problem. Poul-Henning -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.
BG
Bruce Griffiths
Tue, Dec 2, 2008 7:04 PM

Poul-Henning Kamp wrote:

In message 4934FA4B.6040707@xtra.co.nz, Bruce Griffiths writes:

Use only a single DAC and then PWM modulate its output, followed
by a low-pass filter.

The trouble with this approach is the very long filter time constants
with  24 bit PWM.

You don't want 24bit PWM, you want to combine a normal DAC with
PWM modulation.

24 bit PWM can work well with synchronous filtering and a high frequency
PWM clock.

The disadvantage is that the result is not linear.  But it is
monotonic and approximately the lower 4/5th of the distinct
combinations are practically useful.

Take the Analog Devices ADUC7026 ARM7 microcontroller as example:

It has a 12bit DAC of pretty decent quality and a 16 bit PWM running
at 42 MHz.

If you just use 10 PWM bits, that gives you a PWM frequency of 20kHz,
easily filtered to DC by simple means.

Modulate the DAC output with the PWM and you get 1,353,354 unique
settings of which about the first million is usable.

That's about 6 additional DAC bits with the added advantage, that
if you prioritize the PWM for the low bits, you will get better
step regularity than the DAC would give you.

(Didn't somebody say that Fluke used PWM methods in their voltage
calibrators ?  Would make a lot of sense if they did...)

eg Fluke 5700A etc.
Fluke have a string of patents relating to PWM as used in their calibrators.
e.g.
US5402082
US4716398
One of which shows how to virtually eliminate integral nonlinearity due
to analog switch on resistance mismatch and on resistance modulation.
Improvements to these techniques are possible. However in an EFC DAC
integral nonlinearity isnt particularly critical, monotonicity is.

If you use 14 bit PWM you get a 1281 Hz PWM frequency,
requiring more careful filtering, but giving you 20,384,526
distinct output combinations, with usable linearity up to about
for the first 16 million combinations, so that is approximately
a 24 bit DAC.

Full 16 bit PWM results in 321 Hz PWM frequency which means tricky
and likely impractical filtering, but you get 86,616,948 distinct
output combinations of which you can use approximately 65 million,
so that is around a 26bit dac.

Adequate filtering relatively easy and practical if one uses a
synchronous filter.

Or 12-20 nanovolts between steps, if you prefer.

The real trouble with this aproach, is that you get "interleaved
gears" like on a bike: you need either a (huge) table or a bit of
code to tell you what the neighboring codes are.

Fortunately, finding a neighboring code is pretty easy, as the
relevant searchspace is pretty limited, so for EFC control of
an OCXO this is not a practical problem.

Poul-Henning

There is a transient EFC voltage error at coarse DAC transitions whilst
the fine DAC is adjusted to compensate for DAC mismatch error.

The reference noise and drift (not important if its slow enough) will
limit the achievable resolution.
In principle software compensation of thermal drift and aging is
possible however flicker noise will still be a limiting factor.
A quieter reference may be needed in critical cases where the OCXO noise
isn't dominant.

Bruce

Poul-Henning Kamp wrote: > In message <4934FA4B.6040707@xtra.co.nz>, Bruce Griffiths writes: > > >>> Use only a single DAC and then PWM modulate its output, followed >>> by a low-pass filter. >>> >>> >> The trouble with this approach is the very long filter time constants >> with 24 bit PWM. >> > > You don't want 24bit PWM, you want to combine a normal DAC with > PWM modulation. > > 24 bit PWM can work well with synchronous filtering and a high frequency PWM clock. > The disadvantage is that the result is not linear. But it is > monotonic and approximately the lower 4/5th of the distinct > combinations are practically useful. > > Take the Analog Devices ADUC7026 ARM7 microcontroller as example: > > It has a 12bit DAC of pretty decent quality and a 16 bit PWM running > at 42 MHz. > > If you just use 10 PWM bits, that gives you a PWM frequency of 20kHz, > easily filtered to DC by simple means. > > Modulate the DAC output with the PWM and you get 1,353,354 unique > settings of which about the first million is usable. > > That's about 6 additional DAC bits with the added advantage, that > if you prioritize the PWM for the low bits, you will get better > step regularity than the DAC would give you. > > (Didn't somebody say that Fluke used PWM methods in their voltage > calibrators ? Would make a lot of sense if they did...) > > eg Fluke 5700A etc. Fluke have a string of patents relating to PWM as used in their calibrators. e.g. US5402082 US4716398 One of which shows how to virtually eliminate integral nonlinearity due to analog switch on resistance mismatch and on resistance modulation. Improvements to these techniques are possible. However in an EFC DAC integral nonlinearity isnt particularly critical, monotonicity is. > If you use 14 bit PWM you get a 1281 Hz PWM frequency, > requiring more careful filtering, but giving you 20,384,526 > distinct output combinations, with usable linearity up to about > for the first 16 million combinations, so that is approximately > a 24 bit DAC. > > Full 16 bit PWM results in 321 Hz PWM frequency which means tricky > and likely impractical filtering, but you get 86,616,948 distinct > output combinations of which you can use approximately 65 million, > so that is around a 26bit dac. > > Adequate filtering relatively easy and practical if one uses a synchronous filter. > Or 12-20 nanovolts between steps, if you prefer. > > The _real_ trouble with this aproach, is that you get "interleaved > gears" like on a bike: you need either a (huge) table or a bit of > code to tell you what the neighboring codes are. > > Fortunately, finding a neighboring code is pretty easy, as the > relevant searchspace is pretty limited, so for EFC control of > an OCXO this is not a practical problem. > > Poul-Henning > > There is a transient EFC voltage error at coarse DAC transitions whilst the fine DAC is adjusted to compensate for DAC mismatch error. The reference noise and drift (not important if its slow enough) will limit the achievable resolution. In principle software compensation of thermal drift and aging is possible however flicker noise will still be a limiting factor. A quieter reference may be needed in critical cases where the OCXO noise isn't dominant. Bruce