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


16

对于两个DAC,电源为5V时,一个发送给D0-D7,另一个发送给D8-D15,如果将5V加到第二个DAC的输出上,然后将两个DAC的输出相加,则结果应为16位DAC由两个8位DAC组成。

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

这个想法有根本的错误吗?


11
您的想法从根本上没有错,但是您需要处理相对复杂的设计。首先,不只是将模拟信号的结果相加即可。在求和之前,您需要将MSB DAC放大到256倍,因为MSB DAC的每一位都等效于LSB DAC的256位。比您需要以LSB DAC满量程伏特来抵消此值,然后才可以将两者相加。
PDuarte '16

7
更不用说噪音,失真,供电能力……
PDuarte

4
如果那么简单,那么每个人都会这么做...从理论上讲,是的,您可以组合两个DAC(不过您需要乘法而不是加法)。实际上,就性能而言,您不会获得接近16位的任何东西。只需购买一个16位DAC。
uint128_t

2
如果256x乘积值太大,则需要偏移。假设8位DAC的满量程输出为1V。将其乘以256可得到256V。不太实用;-)。使用DAC提供电流会更容易,然后您可以简单地将电流输出并联连接(前提是有一个负载可以将电压保持在正确的值,虚拟接地等)。
Bimpelrekkie

1
如果不是将信号划分为高8位和低8位,而是将其实现为两遍渐进逼近(例如渐进JPG或PNG渲染的方式),而DAC1提供(大致)偶数位,而DAC2以奇数位的功率(再次)。数学将是混乱的,但我认为您可以获得15位的信号精度。
Foo Bar

Answers:


28

有可能,但效果不佳。

首先,存在将两个输出进行组合的问题,其中一个输出精确地按比例缩放为另一输出的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随温度或年龄而漂移(它可能并非设计为超稳定的),则补偿将不再足够精确,因此不值得复杂性和费用。


1
您关于漂移的观点是一个很好的观点,会使该方法不可行,无法通过组合两个8位DAC来尝试获得20位精度。我认为尝试从2x8中获取13-14个可用位是可行的。
超级猫

19

28=256

216=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。但是,如果准确性和线性度受到损害,请不要感到惊讶!


嗯,我明白了。我没有意识到……
Quantum231 '16

1
如果使用的乘数小于256,则可以补偿软件中的非线性。差分非线性将至少等于较小DAC的步长,但如果使用两个8位DAC的人可以准确确定要应用的补偿因子,则可以实际管理一个单调的14位DAC
Supercat

2
如果您遇到数学上的难题,即找出将哪个值发送到哪个DAC以获得给定的总输出,则还可以将一个DAC的输出乘以257/256并求和。否则,callenges是相同的:)
霍布斯

@hobbs:我认为效果不佳。如果一个DAC以256的步长输出0到65280,而另一个DAC以257的步长输出0到65535,则一个DAC可以达到65280到65535之间的所有输出值,但不能达到该范围内的任何一个值。介于32639和32768之间。这实际上并没有比单个8位DAC更好。
超级猫

@supercat你是对的,我不懂数学。我认为,如果您可以否定的话,会有一个版本可以使用,但是它不能像我所写的那样起作用。无论如何,主要是尝试幽默。
霍布斯

6

如果“内部” DAC的满量程电压大于外部DAC的步长,并且该方法可以准确(尽管不一定很快)测量由不同输出代码产生的输出电压并施加在软件中进行适当的线性调整。如果内部DAC的满量程电压可能小于外部DAC上两个电压之间的最坏情况步长(请注意,步长很少绝对完全均匀),则可能存在任何电压都无法获得内部和外部DAC值的组合。但是,如果确保范围内有重叠,则使用软件线性校正可以达到良好的效果。

顺便说一句,赛普拉斯PSOC的旧芯片设计(我不知道较新的芯片设计)使用两个相互缩放的六位DAC模拟一个九位DAC。它不使用软件线性校正,而只是试图将六位DAC的精度提高三位。尝试在不使用软件补偿的情况下为任何一种DAC增加3-4位以上的精度可能效果不佳。


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位,我不得不用电位器手动调节第二级的增益。


2

我已经在HPLC UV检测器中看到了这一点,以增加动态范围。其中一个DAC的需求量很大。假设第一个DAC的电压为0至10 V,第二个DAC的电压为10至20V。


1
这会不会只增加一点?
Szidor

是的,这仅增加一位。但是,就音频而言,这可能是一个非常成功的折衷方案。“直” DAC在一半规模上存在一个巨大的问题,即所有16位都立即切换-MSB打开,所有其他位关闭,这就是最大的单个DNL误差所在。在音频信号上,最大的错误也是在最坏的地方-过零-甚至破坏最安静的声音。现在,如果一个DAC处理正信号而另一个处理负信号,则可以完全避免此问题。传奇的Burr-Brown PCM-63 DAC很好地利用了这一点。
布赖恩·德拉蒙德


0

我对此有不同的看法...只需使用一个8位DAC。您提到它只需要工作高达几十个Hz的频率,因此您可以只使用一个DAC(可能工作到100kHz),并将其用作调制器。基本思想是从一个8位累加器输出256个周期的MSB值加上一个位溢出/进位标志,每个周期添加LSB。由于来自LSB的额外“调制位”,您只能得到254作为最大MSB,但这并不会大大减小范围。

示例:如果您以30kHz运行一个周期,则256个周期以117Hz重复,因此您可以在输出端放置一个50Hz低通滤波器,以获得相当平滑,准确的信号,并可以达到所需的速率。

该方法的准确性确实很大程度上取决于位步长的大小,但仅比其他任何方法都重要。过去,我已将其用于生成参考电压,并且效果惊人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.