是否可以将两个 8 位 DAC 组合在一起以创建一个 16 位 DAC,应将 16 位字的一个字节发送给它们中的每一个

电器工程 运算放大器 解码器 求和
2022-01-03 08:08:36

对于两个DAC,一个送D0-D7,一个送D8-D15,电源为5V,如果将5V加到第2个DAC的输出上,然后将两个DAC输出相加,应该得到一个16位DAC由两个 8 位 DAC 组成。

唯一的问题是,如果第二个 DAC 有 0x00 输入,那么需要取消 5V 加法,我不知道该怎么做。求和可以通过求和放大器来完成。该电路只需要在几十 kHz 的时间内工作。

这个想法有什么根本错误吗?

4个回答

这是可能的,但它不会很好地工作。

首先,存在将两个输出组合在一起的问题,其中一个的比例恰好是另一个的 1/256。(无论您将一个衰减 1/256,将另一个放大 256,还是其他一些排列,例如 *16 和 /16,都无关紧要)。

然而,最大的问题是 8 位 DAC 可能比 8 位更准确:它可能具有 1/4 LSB 的“DNL”规范和 1/2LSB 的“INL”规范。这些是“微分”和“积分”非线性规范,是衡量相邻代码之间每一步的实际大小的量度。(DNL 提供任何两个相邻代码之间的保证,任何两个代码之间的 INL 跨越 DAC 的整个范围)。

理想情况下,每一步都应该是满量程值的 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 可以输出 \$2^8= 256\$ 不同的值。

一个 16 位 DAC 可以输出 \$2^{16} = 65536\$ 不同的值。

请注意它是如何相乘的,它不是加法(当您将两个 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 芯片设计(我不知道较新的)使用两个相对于彼此缩放的 6 位 DAC 来模拟一个 9 位 DAC。它不使用软件线性校正,但它只是试图将三位精度添加到六位 DAC。试图在不使用软件补偿的情况下为任何类型的 DAC 添加超过 3-4 位的精度可能效果不佳。

21 年前,当我还是一名贫困大学生(只能买得起 8 位 DAC)时,我使用这种技术将两个 8 位 DAC 组合成一个更高位 DAC,我知道我不会获得 16 位精度,因为积分非线性 (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 位,我不得不用电位器手动调整第二级的增益。