H
Hal Murray
Guest
I'm interested in getting some analog signals out of and into a FPGA.
The context is fine tuning the frequency of a crystal and measuring
temperature and supply voltages.
I don't need high speed. A 1 Hz response is overkill. I'm thinking of
16-20 bits of resolution.
I don't need absolute calibration on offset or scale, I can compensate
for that in software. I want the low bits to be clean. I want it to
be linear within a local region. I don't care (much) if the slope at
one end of the range is the same as the middle or other end. (I can
correct for that with software.)
Stability over time and temperature (and VCC) would be good. It's
probably OK if I can measure and correct for it.
This is for a hack/hobby project. (Or maybe just a thought experiment.)
One obvious approach is to get a D/A chip and let it do all the work.
Anybody got any favorite chips for this sort of application?
A quick scan on the net finds lots of Audio chips with many bits of
precision in the audio band, but I'm not sure what happens at very
low frequencies. I doubt if they are very stable over temperature
and VCC.
Pulse width modulation is the classic way to do low speed D/A from
digital logic. For this purpose, I think I can do better by spreading
the on bits over the whole time slot rather than clumping them all at
the beginning. (Better low frequency noise.) For example, if I wanted
slightly lower than 1/3 of full scale, I would send 1 on pulse, and 2
or 3 off pulses, adjusting the ratio of 2 and 3 off pulses to get the
best answer. What's the term for this approach? Is there a good
writeup someplace?
If I use 1 megohm and 1 uF as a filter, that's 1 Hz time constant, so
that's the right ballpark. If I run the clock at 1 MHz that's 20 bits
of resolution.
One advantage of this approach is that the output level doesn't depend
upon the value of the resistor (assuming no/tiny load). It's just the
ratio of on time to total time and that is easy to control in the digital
domain. So the temperature coefficient of the resistor doesn't matter.
If I use an op-amp as a buffer, the temp coefficient of the offset
voltage may be the limiting factor on stability.
How would you test/evaluate something like this? Make two and compare
them while you heat one of them?
--
The suespammers.org mail server is located in California. So are all my
other mailboxes. Please do not send unsolicited bulk e-mail or unsolicited
commercial e-mail to my suespammers.org address or any of my other addresses.
These are my opinions, not necessarily my employer's. I hate spam.
The context is fine tuning the frequency of a crystal and measuring
temperature and supply voltages.
I don't need high speed. A 1 Hz response is overkill. I'm thinking of
16-20 bits of resolution.
I don't need absolute calibration on offset or scale, I can compensate
for that in software. I want the low bits to be clean. I want it to
be linear within a local region. I don't care (much) if the slope at
one end of the range is the same as the middle or other end. (I can
correct for that with software.)
Stability over time and temperature (and VCC) would be good. It's
probably OK if I can measure and correct for it.
This is for a hack/hobby project. (Or maybe just a thought experiment.)
One obvious approach is to get a D/A chip and let it do all the work.
Anybody got any favorite chips for this sort of application?
A quick scan on the net finds lots of Audio chips with many bits of
precision in the audio band, but I'm not sure what happens at very
low frequencies. I doubt if they are very stable over temperature
and VCC.
Pulse width modulation is the classic way to do low speed D/A from
digital logic. For this purpose, I think I can do better by spreading
the on bits over the whole time slot rather than clumping them all at
the beginning. (Better low frequency noise.) For example, if I wanted
slightly lower than 1/3 of full scale, I would send 1 on pulse, and 2
or 3 off pulses, adjusting the ratio of 2 and 3 off pulses to get the
best answer. What's the term for this approach? Is there a good
writeup someplace?
If I use 1 megohm and 1 uF as a filter, that's 1 Hz time constant, so
that's the right ballpark. If I run the clock at 1 MHz that's 20 bits
of resolution.
One advantage of this approach is that the output level doesn't depend
upon the value of the resistor (assuming no/tiny load). It's just the
ratio of on time to total time and that is easy to control in the digital
domain. So the temperature coefficient of the resistor doesn't matter.
If I use an op-amp as a buffer, the temp coefficient of the offset
voltage may be the limiting factor on stability.
How would you test/evaluate something like this? Make two and compare
them while you heat one of them?
--
The suespammers.org mail server is located in California. So are all my
other mailboxes. Please do not send unsolicited bulk e-mail or unsolicited
commercial e-mail to my suespammers.org address or any of my other addresses.
These are my opinions, not necessarily my employer's. I hate spam.