Ist es möglich, zwei 8-Bit-DACs zu einem 16-Bit-DAC zu kombinieren, wird jeweils ein Byte des 16-Bit-Wortes an jeden von ihnen gesendet

16

Bei zwei DACs, von denen einer an D0-D7 und der andere an D8-D15 gesendet wird, sollte eine Stromversorgung von 5 V zu einem 16-Bit-DAC führen, wenn 5 V zum Ausgang des zweiten DAC addiert werden und dann die beiden DAC-Ausgänge summiert werden bestehend aus zwei 8-Bit-DACs.

Das einzige Problem ist, dass, wenn der zweite DAC einen 0x00-Eingang hat, die 5-V-Addition gelöscht werden muss, was ich nicht sicher bin, wie es zu tun ist. Die Summierung kann durch Summierverstärker erfolgen. Die Schaltung muss nur bis zu einigen 10 kHz arbeiten.

Stimmt etwas grundlegend mit dieser Idee nicht?

quantum231
quelle
11
An Ihrer Idee ist grundsätzlich nichts auszusetzen, aber Sie müssen mit einem Design von relativer Komplexität umgehen. Erstens geht es nicht nur darum, die Ergebnisse in einem analogen Signal zu summieren. Vor der Summe müssen Sie den MSB-DAC um den Faktor x256 verstärken, da jedes Bit des MSB-DAC 256 Bit des LSB-DAC entspricht. Dann müssen Sie diesen Wert in LSB DAC Fullscale Volt ausgleichen, bevor Sie beide addieren können.
PDuarte
7
Ganz
4
Wenn es so einfach wäre, würde es jeder tun ... Theoretisch können Sie zwei DACs kombinieren (Sie benötigen jedoch eine Multiplikation anstelle einer Addition). Realistisch gesehen werden Sie in Bezug auf die Leistung nicht annähernd 16 Bit erreichen. Kaufen Sie einfach einen 16-Bit-DAC.
uint128_t
2
Das Versetzen wird benötigt, wenn der 256-fach multiplizierte Wert zu groß wird. Angenommen, die 8-Bit-DACs geben 1 Volt im vollen Umfang aus. Multiplizieren Sie das mit 256 ergibt 256 V. Nicht so praktisch ;-). Mit einem DAC, der Strom liefert, ist es einfacher, die Stromausgänge einfach parallel zu schalten (vorausgesetzt, es gibt eine Last, die die Spannung auf dem richtigen Wert hält, eine virtuelle Masse oder dergleichen).
Bimpelrekkie
1
Was ist, wenn Sie das Signal nicht in 8 Bits oben und unten unterteilen, sondern es als progressive Näherung mit zwei Durchgängen implementieren (wie bei progressiven JPG- oder PNG-Rendern), wobei DAC1 (ungefähr) die geraden Bits liefert und DAC2 mit halbe Potenz mit (wieder ungefähr) den ungeradzahligen Bits. Die Mathematik wäre chaotisch, aber ich denke, Sie können 15 Bit Signalgenauigkeit erzielen.
Foo Bar

Antworten:

28

Es ist möglich, aber es wird nicht gut funktionieren.

Erstens besteht das Problem, die beiden Ausgänge zu kombinieren, wobei einer genau 1/256 des anderen skaliert ist. (Ob Sie eine um 1/256 dämpfen, die andere um 256 verstärken oder eine andere Anordnung, zum Beispiel * 16 und / 16, spielt keine Rolle).

Das große Problem ist jedoch, dass ein 8-Bit-DAC wahrscheinlich eine Genauigkeit von etwas besser als 8 Bit aufweist: Er kann eine "DNL" -Spezifikation von 1/4 LSB und eine "INL" -Spezifikation von 1 / 2LSB aufweisen. Dies sind die "Differential" - und "Integral" -Nichtlinearitätsspezifikationen und sind ein Maß dafür, wie groß jeder Schritt zwischen benachbarten Codes tatsächlich ist. (DNL bietet eine Garantie zwischen zwei benachbarten Codes, INL zwischen zwei beliebigen Codes über den gesamten Bereich des DAC).

Im Idealfall entspricht jeder Schritt genau 1/256 des Skalenendwerts. Eine 1 / 4LSB-DNL-Spezifikation gibt jedoch an, dass benachbarte Schritte um 25% vom Ideal abweichen können - dies ist normalerweise in einem DAC akzeptabel.

Das Problem ist, dass ein 0,25-LSB-Fehler in Ihrem MSB-DAC einen 64-LSB-Fehler (1/4 des gesamten Bereichs) in Ihrem LSB-DAC verursacht!

Mit anderen Worten, Ihr 16-Bit-DAC weist die Linearität und Verzerrung eines 10-Bit-DAC auf, was für die meisten Anwendungen eines 16-Bit-DAC nicht akzeptabel ist.

Wenn Sie nun einen 8-Bit-DAC finden, der eine 16-Bit-Genauigkeit garantiert (INL und DNL besser als 1/256 LSB), dann machen Sie weiter: Sie sind jedoch nicht wirtschaftlich, und der einzige Weg, um einen zu erhalten, ist der Start mit einem 16-Bit-DAC!

Eine andere Antwort lautet "Software-Kompensation" ... um die genauen Fehler in Ihrem MSB-DAC zu ermitteln und zu kompensieren, indem Sie den inversen Fehler zum LSB-DAC hinzufügen. ..

Kurz gesagt, es kann bis zu einem gewissen Grad zum Funktionieren gebracht werden, aber wenn der 8-Bit-DAC mit der Temperatur oder dem Alter abweicht (er wurde wahrscheinlich nicht als ultra-stabil ausgelegt), ist die Kompensation nicht mehr genau genug, um den Wert zu erreichen Komplexität und Aufwand.

Brian Drummond
quelle
1
Ihr Standpunkt zur Drift ist gut und würde diese Methode unpraktisch machen, wenn Sie versuchen möchten, z. B. eine 20-Bit-Genauigkeit durch Kombinieren von zwei 8-Bit-DACs zu erzielen. Ich würde jedoch denken, dass der Versuch, 13-14 verwendbare Bits von 2x8 zu erhalten, machbar wäre.
Supercat
19

28=256

216=65536

Beachten Sie, wie sich das multipliziert, es ist keine Addition (wie es passieren würde, wenn Sie die Ausgänge von zwei 8-Bit-DACs summieren).

Wenn ich zwei 8-Bit-DACs nehmen und ihre Ausgaben summieren würde, welche Werte sind möglich?

Antwort: 0, 1, 2, ..., 256, 257, 258, ... 511, 512 und das war's!

Ein 16-Bit-DAC kann 0,1,2 ..., 65535, 65536, das ist viel mehr!

Theoretisch ist es möglich, aber dann müssen Sie den Ausgang eines der 8-Bit-DACs mit genau 256 multiplizieren und die LSB-Bits mit dem 1x-DAC und die MSB-Bits mit dem 256x-DAC verbinden. Aber wundern Sie sich nicht, wenn Genauigkeit und Linearität darunter leiden!

Bimpelrekkie
quelle
Hmm, ich verstehe. Ich wusste nicht, dass ...
quantum231
1
Wenn man einen Multiplikationsfaktor von weniger als 256 verwendet, kann man die Nichtlinearität in der Software ausgleichen. Differentielle Nichtlinearität wird zumindest gleich die Schrittweite des kleineren DAC, sondern ein mit zwei 8-Bit - DACs könnte man realistisch einen monotonen 14-Bit - DAC verwalten , wenn man genau , was Kompensationsfaktoren bestimmen kann , anzuwenden
supercat
2
Sie können die Ausgabe eines DAC auch mit 257/256 multiplizieren und summieren, wenn Sie die mathematische Herausforderung genießen, herauszufinden, welche Werte an welchen DAC gesendet werden müssen, um eine bestimmte Gesamtausgabe zu erhalten. Ansonsten sind die callenges gleich :)
hobbs
@hobbs: Ich denke nicht, dass das ganz funktioniert. Wenn ein DAC 0 bis 65280 in Schritten von 256 ausgibt und die anderen 0 bis 65535 in Schritten von 257, kann er alle Ausgabewerte zwischen 65280 und 65535 erreichen, kann jedoch keine im Bereich erreichen zwischen zB 32639 und 32768. Das ist nicht viel besser als ein einzelner 8-Bit-DAC.
Supercat
@supercat du hast recht, ich habe die Mathematik durcheinander gebracht. Ich denke, es gibt eine Version, die funktioniert, wenn Sie negativ werden können, aber sie funktioniert nicht so, wie ich sie geschrieben habe. War sowieso meistens ein Humorversuch.
Hobbs
6

Die Technik ist praktikabel, wenn die Spannung im Vollbereich des "inneren" DAC größer als die Schrittgröße des äußeren DAC ist und man die Möglichkeit hat, die durch verschiedene Ausgangscodes erzeugten Ausgangsspannungen genau (wenn auch nicht unbedingt schnell) zu messen und anzuwenden geeignete Linearitätseinstellungen in der Software. Wenn die Spannung im vollen Bereich des inneren DAC unter der ungünstigsten Schrittgröße zwischen zwei Spannungen am äußeren DAC liegt (wobei zu berücksichtigen ist, dass die Schritte selten absolut gleichmäßig sind), kann es zu Spannungen kommen, die mit keinem erzielt werden können Kombination von inneren und äußeren DAC-Werten. Wenn man jedoch sicherstellt, dass die Bereiche überlappen, kann die Verwendung der Software-Linearitätskorrektur gute Ergebnisse ermöglichen.

Übrigens emuliert das alte Cypress-PSOC-Chip-Design (ich kenne keine neueren) einen 9-Bit-DAC mit zwei 6-Bit-DACs, die relativ zueinander skaliert sind. Es wird keine Software-Linearitätskorrektur verwendet, sondern nur versucht, einem 6-Bit-DAC eine Genauigkeit von drei Bit hinzuzufügen. Der Versuch, einem DAC mehr als 3-4 Bit Präzision zu verleihen, ohne die Software-Kompensation zu verwenden, funktioniert wahrscheinlich nicht sehr gut.

Superkatze
quelle
4

Als ich vor 21 Jahren ein schlechter College-Student war (und mir nur 8-Bit-DACs leisten konnte), habe ich diese Technik verwendet, um zwei 8-Bit-DACs zu einem höheren Bit-DAC zu kombinieren, da ich wusste, dass ich keine 16-Bit-Genauigkeit erhalten würde der integralen Nichtlinearität (INL) und der differentiellen Nichtlinearität (DNL). DNL auf dem DAC mit dem höchsten Stellenwert ist in diesem Fall der Killer. Wenn Sie INL haben, ist die Ausgabe verzerrt, aber immer noch glatt. DNL gibt die Größe von einem DAC-Schritt zum nächsten vor. Wenn diese ausreichend variiert, werden beim Überschreiten von 8-Bit-Grenzen Diskontinuitäten oder Umkehrungen angezeigt: 0x07ff <-> 0x0800, da sich der MSB-DAC von 0x07 <-> ändert 0x08, es ändert sich möglicherweise nicht durch die idealen 256 Zählwerte des LSB-DAC, sondern durch 384 Zählwerte oder 128 Zählwerte (± 1/2 seines eigenen niedrigstwertigen Bits). Ein guter DAC hat nur 1/2 LSB DNL, ​​ein mittelmäßiger DAC hat eine schlechtere DNL. Je höher die Auflösung, desto schwieriger wird es. Daher sollte es ziemlich einfach sein, 1/2 LSB DNL in einem 8-Bit-DAC zu finden, nicht jedoch in einem 16-Bit-DAC.

Ich erinnere mich nicht, wie hoch die effektive Auflösung in meinem Fall war, vielleicht 12 oder 13 Bit, und ich musste die Verstärkung der 2. Stufe manuell mit einem Potentiometer einstellen.

Jason S
quelle
2

Ich habe dies in der Praxis an einem HPLC-UV-Detektor gesehen, um den Dynamikbereich zu erhöhen. Einer der DACs ist um den benötigten Betrag versetzt. Sagen wir, der 1. DAC handhabt 0 bis 10 V und der 2. handhabt 10 bis 20 Volt.

purza
quelle
1
Würde dies nicht nur ein Bit hinzufügen?
Szidor
Ja, das fügt nur ein Bit hinzu. Audio gesehen kann dies jedoch ein sehr erfolgreicher Kompromiss sein. Ein "gerader" DAC hat auf halber Skala ein großes Problem, wenn alle 16 Bits gleichzeitig geschaltet werden - das MSB wird eingeschaltet, alle anderen werden ausgeschaltet, und dort wird der größte einzelne DNL-Fehler auftreten. Bei einem Audiosignal ist dieser größte Fehler auch am schlechtesten Platz - dem Nulldurchgang - und stört selbst die leisesten Geräusche. Wenn nun ein DAC positive Signale und der andere negative Signale verarbeitet, können Sie dieses Problem vollständig vermeiden. Der legendäre Burr-Brown PCM-63 DAC hat dies gut ausgenutzt.
Brian Drummond
0

Ich habe eine andere Sichtweise ... Verwenden Sie einfach einen 8-Bit-DAC. Sie haben erwähnt, dass es nur bis zu einigen 10 Hz arbeiten muss, sodass Sie nur einen DAC (der wahrscheinlich bis zu 100 kHz arbeiten kann) verwenden und ihn als Modulator verwenden können. Die Grundidee besteht darin, 256 Zyklen des MSB-Werts zuzüglich des Ein-Bit-Überlauf- / Übertrags-Flags von einem 8-Bit-Akkumulator auszugeben, zu dem das LSB in jedem Zyklus hinzugefügt wird. Sie erhalten nur 254 als maximales MSB aufgrund des zusätzlichen 'Modulationsbits' vom LSB, aber dies verringert die Reichweite nicht wesentlich.

Beispiel: Wenn Sie den Zyklus bei 30 kHz ausführen, wiederholen sich die 256 Zyklen bei 117 Hz, sodass Sie dem Ausgang ein 50-Hz-Tiefpassfilter hinzufügen können, um ein recht gleichmäßiges und genaues Signal zu erhalten, das die von Ihnen gewünschte Rate erreicht.

Die Genauigkeit dieser Methode hängt sehr stark von der Größe der Bitschritte ab, jedoch nicht mehr als bei jeder anderen Methode. Ich habe es in der Vergangenheit zur Referenzspannungserzeugung verwendet und es funktioniert überraschend gut.

Simon Tillson
quelle