对于两个DAC,电源为5V时,一个发送给D0-D7,另一个发送给D8-D15,如果将5V加到第二个DAC的输出上,然后将两个DAC的输出相加,则结果应为16位DAC由两个8位DAC组成。
唯一的问题是,如果第二个DAC具有0x00输入,则需要取消5V加法,我不确定该怎么做。求和可以通过对放大器求和来完成。该电路只需要工作几十kHz。
这个想法有根本的错误吗?
对于两个DAC,电源为5V时,一个发送给D0-D7,另一个发送给D8-D15,如果将5V加到第二个DAC的输出上,然后将两个DAC的输出相加,则结果应为16位DAC由两个8位DAC组成。
唯一的问题是,如果第二个DAC具有0x00输入,则需要取消5V加法,我不确定该怎么做。求和可以通过对放大器求和来完成。该电路只需要工作几十kHz。
这个想法有根本的错误吗?
Answers:
有可能,但效果不佳。
首先,存在将两个输出进行组合的问题,其中一个输出精确地按比例缩放为另一输出的1/256。(是否将其中一个衰减1/256,将另一个放大256,或其他某种安排,例如* 16和/ 16都没有关系)。
但是,最大的问题是8位DAC可能比8位精度更高:它的“ DNL”规格为1/4 LSB,“ INL”规格为1 / 2LSB。这些是“差分”和“积分”非线性规范,用于衡量相邻代码之间每个步长的实际大小。(DNL在DAC的整个范围内提供了任何两个相邻代码之间的保证,INL提供了保证)。
理想情况下,每一步将精确为满刻度值的1/256;但是1 / 4LSB DNL规范表明,相邻步距可能与理想值相差25%-这在DAC中通常是可接受的行为。
问题在于,MSB DAC中的0.25 LSB误差导致LSB DAC中的64 LSB误差(整个范围的1/4)!
换句话说,您的16位DAC具有10位DAC的线性度和失真度,对于大多数16位DAC应用而言,这是不可接受的。
现在,如果您找到可以保证16位精度(INL和DNL优于1/256 LSB)的8位DAC,那么请继续:但是,这样做并不经济,所以唯一的方法就是开始16位DAC!
另一个答案是“软件补偿”,它可以将您的MSB DAC中的确切误差映射出来,并通过向LSB DAC中添加反误差来进行补偿:在16位DAC昂贵的时代,音频工程师们一直在思考这一问题。 ..
简而言之,它可以在某种程度上起作用,但是如果8位DAC随温度或年龄而漂移(它可能并非设计为超稳定的),则补偿将不再足够精确,因此不值得复杂性和费用。
请注意,它是如何相乘的,而不是加法(将两个8位DAC的输出相加时会发生这种情况)。
如果我用两个8位DAC求和它们的输出之和,可能的值是多少?
答案:0,1,2,...,256,257,258,.... 511,512就是这样!
一个16位DAC可以完成0,1,2 ...,65535,65536的工作!
从理论上讲是可能的,但是您需要将 8位DAC 之一的输出乘以256,然后将LSB位连接到1x DAC,将MSB位连接到256x DAC。但是,如果准确性和线性度受到损害,请不要感到惊讶!
如果“内部” DAC的满量程电压大于外部DAC的步长,并且该方法可以准确(尽管不一定很快)测量由不同输出代码产生的输出电压并施加在软件中进行适当的线性调整。如果内部DAC的满量程电压可能小于外部DAC上两个电压之间的最坏情况步长(请注意,步长很少绝对完全均匀),则可能存在任何电压都无法获得内部和外部DAC值的组合。但是,如果确保范围内有重叠,则使用软件线性校正可以达到良好的效果。
顺便说一句,赛普拉斯PSOC的旧芯片设计(我不知道较新的芯片设计)使用两个相互缩放的六位DAC模拟一个九位DAC。它不使用软件线性校正,而只是试图将六位DAC的精度提高三位。尝试在不使用软件补偿的情况下为任何一种DAC增加3-4位以上的精度可能效果不佳。
21年前,当我还是一个贫穷的大学生(只能买8位DAC)时,我知道将无法获得16位精度,所以我使用了这项技术将两个8位DAC组合为一个更高位的DAC。的积分非线性(INL)和微分非线性(DNL)。在这种情况下,最高有效字节DAC上的DNL是杀手;。如果您使用INL,则输出会失真,但仍然平滑。DNL规定了从一个DAC步到下一步的大小,如果变化足够大,则跨越8位边界时您将看到不连续或反转:例如0x07ff <-> 0x0800,因为MSB DAC从0x07 <->发生变化0x08,它的变化可能不是LSB DAC的理想256个计数,而是384个计数或128个计数(其最低有效位的±1/2)。好的DAC仅具有1/2 LSB DNL,中等的DAC具有较差的DNL,尽管分辨率越高,难度就会越强,因此在8位DAC中找到1/2 LSB DNL应该相当容易,但没有在16位DAC中
我不记得我的情况下的有效分辨率是多少,可能是12或13位,我不得不用电位器手动调节第二级的增益。
我已经在HPLC UV检测器中看到了这一点,以增加动态范围。其中一个DAC的需求量很大。假设第一个DAC的电压为0至10 V,第二个DAC的电压为10至20V。
这是可能的,并且之前已经完成。请参见EDN.com上的出色实现,网址为http://www.edn.com/design/analog/4329365/Combine-two-8-bit-outputs-to-make-one-16-bit-DAC
我对此有不同的看法...只需使用一个8位DAC。您提到它只需要工作高达几十个Hz的频率,因此您可以只使用一个DAC(可能工作到100kHz),并将其用作调制器。基本思想是从一个8位累加器输出256个周期的MSB值加上一个位溢出/进位标志,每个周期添加LSB。由于来自LSB的额外“调制位”,您只能得到254作为最大MSB,但这并不会大大减小范围。
示例:如果您以30kHz运行一个周期,则256个周期以117Hz重复,因此您可以在输出端放置一个50Hz低通滤波器,以获得相当平滑,准确的信号,并可以达到所需的速率。
该方法的准确性确实很大程度上取决于位步长的大小,但仅比其他任何方法都重要。过去,我已将其用于生成参考电压,并且效果惊人。