Bei zwei DACs, von denen einer D0-D7 und der andere D8-D15 sendet, sollte bei einer Stromversorgung von 5 V, wenn 5 V zum Ausgang des 2. DAC addiert und dann die beiden DAC-Ausgänge summiert werden, ein 16-Bit-DAC resultieren bestehend aus zwei 8-Bit-DACs.
Das einzige Problem ist, dass, wenn der zweite DAC einen 0x00-Eingang hat, die 5-V-Addition aufgehoben werden muss, was ich nicht sicher bin. Die Summierung kann durch einen Summierverstärker erfolgen. Die Schaltung muss nur bis zu einigen 10 kHz arbeiten.
Ist an dieser Idee etwas grundsätzlich falsch?
Es ist möglich, aber es wird nicht gut funktionieren.
Erstens gibt es das Problem, die beiden Ausgänge zu kombinieren, wobei einer genau 1/256 des anderen skaliert ist. (Ob Sie das eine um 1/256 dämpfen, das andere um 256 verstärken oder eine andere Anordnung, z. B. *16 und /16, spielt keine Rolle).
Das große Problem ist jedoch, dass ein 8-Bit-DAC wahrscheinlich auf etwas besser als 8 Bit genau ist: Er kann eine „DNL“-Spezifikation von 1/4 LSB und eine „INL“-Spezifikation von 1/2 LSB haben. Dies sind die „Differential“- und „Integral“-Nichtlinearitätsspezifikationen und sind ein Maß dafür, wie groß jeder Schritt zwischen benachbarten Codes wirklich ist. (DNL bietet eine Garantie zwischen zwei beliebigen benachbarten Codes, INL zwischen zwei beliebigen Codes über den gesamten Bereich des DAC).
Im Idealfall entspricht jeder Schritt genau 1/256 des Skalenendwerts; aber eine 1/4LSB DNL-Spezifikation zeigt an, dass benachbarte Stufen von diesem Ideal um 25 % abweichen können – dies ist normalerweise ein akzeptables Verhalten in einem DAC.
Das Problem ist, dass ein 0,25-LSB-Fehler in Ihrem MSB-DAC zu einem 64-LSB-Fehler (1/4 des gesamten Bereichs) in Ihrem LSB-DAC beiträgt!
Mit anderen Worten, Ihr 16-Bit-DAC hat die Linearität und Verzerrung eines 10-Bit-DAC, was für die meisten Anwendungen eines 16-Bit-DAC nicht akzeptabel ist.
Wenn Sie jetzt 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 herzustellen, daher ist der einzige Weg, einen zu bekommen, anzufangen mit einem 16-Bit-DAC!
Eine andere Antwort schlägt "Softwarekompensation" vor ... die genauen Fehler in Ihrem MSB-DAC abzubilden und sie durch Hinzufügen des inversen Fehlers zum LSB-DAC zu kompensieren: etwas, worüber Audioingenieure in den Tagen, als 16-Bit-DACs teuer waren, lange nachgedacht haben. ..
Kurz gesagt, es kann bis zu einem gewissen Grad zum Laufen gebracht werden, aber wenn der 8-Bit-DAC mit der Temperatur oder dem Alter driftet (er wurde wahrscheinlich nicht dafür entwickelt, ultrastabil zu sein), ist die Kompensation nicht mehr genau genug, um sich zu lohnen Komplexität und Kosten.
Ein 8-Bit-DAC kann ausgeben verschiedene Werte.
Ein 16-Bit-DAC kann ausgeben verschiedene Werte.
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 Ausgänge summieren würde, was wären die möglichen Werte?
Antwort: 0, 1, 2, ..., 256, 257, 258, ....511, 512 und fertig !
Ein 16-Bit-DAC kann 0,1,2 ...,65535, 65536, das ist viel mehr!
Theoretisch ist das möglich, aber dann müssen Sie die Ausgabe 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!
Die Technik ist praktikabel, wenn die Vollskalenspannung des "inneren" DAC größer als die Schrittweite des äußeren DAC ist und man eine Möglichkeit hat, die von verschiedenen Ausgangscodes erzeugten Ausgangsspannungen genau (wenn auch nicht unbedingt schnell) zu messen und anzuwenden geeignete Linearitätsanpassungen in der Software. Wenn die Vollskalenspannung des inneren DAC kleiner sein könnte als die schlimmstmögliche Schrittweite zwischen zwei Spannungen am äußeren DAC (wobei zu berücksichtigen ist, dass die Schritte selten absolut vollkommen gleichförmig sind), kann es zu Spannungen kommen, die mit keinem erreicht werden können Kombination von Innen- und Außen-DAC-Werten. Stellt man jedoch sicher, dass sich die Bereiche überlappen, kann die Verwendung einer Software-Linearitätskorrektur gute Ergebnisse ermöglichen.
Übrigens emuliert das alte PSOC-Chipdesign von Cypress (neuere kenne ich nicht) einen Neun-Bit-DAC mit zwei Sechs-Bit-DACs, die relativ zueinander skaliert sind. Es verwendet keine Software-Linearitätskorrektur, sondern versucht nur, einem Sechs-Bit-DAC drei Bit Präzision hinzuzufügen. Der Versuch, einem beliebigen DAC mehr als 3-4 Bit Präzision hinzuzufügen, ohne eine Softwarekompensation zu verwenden, wird wahrscheinlich nicht sehr gut funktionieren.
Vor 21 Jahren, als ich ein armer College-Student war (und mir nur 8-Bit-DACs leisten konnte), verwendete ich diese Technik, 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, weil von integraler Nichtlinearität (INL) und differentieller Nichtlinearität (DNL). DNL auf dem höchstwertigen Byte-DAC ist in diesem Fall der Killer; Wenn Sie INL haben, ist die Ausgabe verzerrt, aber immer noch glatt. DNL diktiert die Größe von einem DAC-Schritt zum nächsten, und wenn sie genug variiert, sehen Sie Diskontinuitäten oder Umkehrungen, wenn Sie 8-Bit-Grenzen überschreiten: 0x07ff <-> 0x0800 zum Beispiel, wenn sich der MSB-DAC von 0x07 <-> ändert 0x08, könnte es sich nicht um die idealen 256 Zählwerte des LSB-DAC ändern, sondern um 384 Zählwerte oder 128 Zählwerte (±1/2 seines eigenen niedrigstwertigen Bits). Ein guter DAC wird nur 1/2 LSB DNL haben, ein mittelmäßiger DAC wird eine schlechtere DNL haben, obwohl es schwieriger wird, je höher die Auflösung ist, also sollte es ziemlich einfach sein, 1/2 LSB DNL in einem 8-Bit-DAC zu finden, aber nicht in einem 16-Bit-DAC.
Ich erinnere mich nicht, was 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.
Ich habe dies in der Praxis auf einem HPLC-UV-Detektor gesehen, um den Dynamikbereich zu erhöhen. Einer der DACs ist um die benötigte Menge versetzt. Sprich der 1. DAC handhabt 0 bis 10 V und der 2. handhabt 10 bis 20 Volt.
Ich habe eine andere Meinung dazu ... Verwenden Sie einfach einen 8-Bit-DAC. Sie haben erwähnt, dass es nur bis zu einigen 10 Hz funktionieren muss, sodass Sie nur einen DAC (der wahrscheinlich bis zu 100 kHz arbeiten kann) verwenden und als Modulator verwenden können. Die Grundidee besteht darin, 256 Zyklen des MSB-Werts plus das Ein-Bit-Überlauf-/Übertrags-Flag von einem 8-Bit-Akkumulator auszugeben, zu dem das LSB in jedem Zyklus hinzugefügt wird. Sie erhalten nur 254 als maximales MSB wegen des zusätzlichen „modulierenden Bits“ vom LSB, aber das reduziert die Reichweite nicht sehr.
Beispiel: Wenn Sie den Zyklus mit 30 kHz ausführen, wiederholen sich die 256 Zyklen mit 117 Hz, sodass Sie einen 50-Hz-Tiefpassfilter am Ausgang anbringen könnten, um ein ziemlich glattes und genaues Signal zu erhalten, das bis zu der von Ihnen gewünschten Rate arbeiten kann.
Die Genauigkeit dieser Methode hängt ziemlich stark von der Größe der Bitschritte ab, aber nicht mehr als bei jeder anderen Methode. Ich habe es in der Vergangenheit zur Erzeugung von Referenzspannungen verwendet, und es funktioniert überraschend gut.
Das ist möglich und wurde auch schon gemacht. Sehen Sie sich diese hervorragende Implementierung auf EDN.com http://www.edn.com/design/analog/4329365/Combine-two-8-bit-outputs-to-make-one-16-bit-DAC an
Ich habe versucht, mit dem ESP32 einen DAC für die positive Hälfte der einzelnen 0 bis + 3 V und über den zweiten DAC durch den Operationsverstärker zu verwenden, um die untere negative Hälfte der einzelnen 0 bis -3 V zu erhalten. Dies funktionierte, aber die Synchronisierung war sehr schwierig, da auch DMA verwendet wurde.
PDuarte
PDuarte
uint128_t
Vicente Cunha
Bimpelrekkie
Foo-Bar
Sarah G
Richard Smith
Sarah G