Unerwartet schlechte DNL, ​​INL und ENOB auf einem ADC


8

Ich versuche derzeit, eine MCU und ihre Peripheriegeräte zu charakterisieren, insbesondere den integrierten ADC. Bei den üblichen Testverfahren (dh Sinuswelle für ENOB und Sägezahn für DNL und INL) stelle ich jedoch fest, dass die Ergebnisse eher schlecht sind. Kurz gesagt, der ADC "ist" 12 Bit - was bedeutet, dass man eine Auflösung von etwa 10 Bit erwarten würde. Unabhängig davon, was ich versuche, scheint ENOB ein Plateau von 8,5 Bit zu erreichen. Ähnlich wie bei DNL und INL - die besten Ergebnisse, die ich erzielt habe, sind, wenn das Signal 64 Mal überabgetastet wird. Das Datenblatt auf Seite 44 besagt, dass man einen DNL von etwa ± 3 LSB erwarten kann - dies ist jedoch das, was ich bekomme, wenn ich überabtastet. Das Rohsignal erreicht Spitzenwerte bei etwa 7 LSB. Es gibt einige Dinge, die ich bisher versucht habe:

  • Anbringen eines 10 nF-Kondensators zwischen ADC-Eingang und Masse (was bis zu einem gewissen Grad funktioniert - ohne ENOB beträgt 7,5)
  • Überabtastung 4x, 8x und einige andere bis zu 256x. Dies verbessert - wie zu erwarten - auch die Ergebnisse, wenn auch nicht so signifikant. Ein größeres Oversampling führt zu besseren Ergebnissen, während 4x fast identisch mit keinem Oversampling ist.
  • Verlangsamung des ADC-Modultakts und Vergrößerung des Abtastfensters. Keines davon war besonders effektiv. Die Vergrößerung des Stichprobenfensters hatte einen geringen positiven Einfluss auf ENOB und DNL. Das Verlangsamen der Uhr hatte keine wirklichen Auswirkungen.
  • In ähnlicher Weise schien die Verwendung externer oder interner Referenzen keinen Effekt zu erzielen, obwohl ich nicht viele Experimente mit externen Referenzen durchgeführt habe - vielleicht ist dies die nächste, die in Betracht gezogen werden sollte. Eine kleine Bearbeitung als Referenz für jeden, der sie eines Tages lesen könnte - in meinem Fall die Verwendung einer externen Referenz führte zu schlechteren Ergebnissen. Mit anderen Worten, die interne Referenz auf meiner MCU scheint genauer zu sein - oder die externe Referenz ist nicht so gut wie ich erwartet hatte.

Nun stellt sich die Frage, an welchem ​​Punkt man akzeptiert, dass der ADC nur von schlechter Qualität oder irgendwie beschädigt ist. Welche anderen Tests kann ich versuchen, um die ADC-Eigenschaften zu verbessern? Beachten Sie, dass ich die Eingangssignale mit dem Funktionsgenerator generiere. An diesem Punkt stecke ich einfach fest - dh ich habe keine Forenthreads mehr zum Lesen - und würde mich über jeden Rat wirklich freuen.


Hast du die PS überprüft? Ist es geschalteter Modus? Wenn ja, können Sie ein LDO zwischen PS und ADC einfügen? Haben Sie die Qualität der ADC-Uhr überprüft?
Claudio Avi Chami

Diese Fehler sind wie erwartet. Datenblatt sagt im schlimmsten Fall 6 LSB. Sie können eine Kalibrierung versuchen oder besser einen separaten ADC für präzise Messungen verwenden.

@ClaudioAviChami Ich glaube, meine ist eine lineare Stromversorgung. Es ist Marke ist Rigol DG2041A. Könnten Sie mir einen Hinweis geben, wo ich mit dem Überprüfen der ADC-Uhr beginnen kann - eine schnelle Google-Suche sieht nicht vielversprechend aus :)
Fandor

1
Welche Quellenimpedanz speist den ADC? Möglicherweise benötigen Sie einen Pufferverstärker.
Brian Drummond

@BrianDrummond Ich werde sicherstellen, dass ich das morgen früh messe, wenn ich zu meinem Setup komme und es hier poste. Danke für den Vorschlag!
Fandor

Antworten:


11

Persönlich bin ich kein großer Fan von Faustregeln, aber es gibt einige Regeln, die nur außergewöhnlich genau sind und für die selbst ich eine Ausnahme mache.

Eine dieser Regeln lautet wie folgt:

Mikrocontroller-ADC-Peripheriegeräte sind immer schrecklich.

Immer. Nicht die Art von Schrecklichkeit, die Sie nur herabsetzen. Die Art von schrecklich, die Sie in der fetalen Position in der Dusche weinen lässt.

Ich scherze, aber nur leicht. Um Ihre Frage zu beantworten: Ja, der ADC ist eigentlich nur so schlecht, und ja, Sie sollten ihn akzeptieren. Beachten Sie den großen Haftungsausschluss "Betriebsbedingungen gelten". im Datenblatt.

Sie müssen sich daran erinnern, dass das Datenblatt für bestimmte Teile (wie MCUs) auch Marketingmaterial ist und MCUs im Allgemeinen in Bezug auf Peripheriegeräte oder Stromverbrauch (oder beides) miteinander konkurrieren. Zahlen für Dinge wie ADCs sind also oft technischRichtig, solange Sie den ADC unter denselben lächerlichen und unpraktischen Umständen verwenden, haben sie die Messung für das Datenblatt vorgenommen. Ein Favorit, den ich oft sehe, ist das Messen des ENOB mit allen anderen Peripheriegeräten sowie des eigentlichen Prozessorkerns, der im Tiefschlaf vollständig ausgeschaltet ist. Ein anderer ist die Verwendung einer signifikanten Software-Nachbearbeitung und ähnlicher Techniken wie Oversampling, um die Messung zu erhalten. Ich glaube nicht, dass ich jemals ein MCU-Datenblatt gesehen habe, in dem der ADC nicht in Bezug auf "Dies ist das Beste, was Sie jemals erreichen werden, angegeben ist, und wir können Ihnen vielleicht sogar sagen, wie wir es geschafft haben" statt "Dies ist die Spezifikation, bevor Sie versuchen, das Signal in der Software zu bereinigen."

Und um ganz klar zu sein, es hört sich so an, als hätte dieser Teil einen ziemlich guten ADC, zumindest im Vergleich zu allen anderen schrecklichen MCU-ADCs. 8,5 Bit? Solche Opulenz! So bürgerlich! Die meiste Zeit werden Sie bekommen vielleicht 6 Bits von einem 10 - Bit - ADC in einer MCU. Denken Sie daran, wenn sie 12-Bit-Auflösung sagen, bedeutet dies, dass Sie irgendwo 12 Bits aus einem Register lesen können. Es gibt keine Implikation, dass es sich nicht um 12 Bit nutzloses Rauschen handelt. Das einzige Versprechen ist, dass es 12 Bits von etwas geben wird .

An diesem Punkt könnten Sie ein wenig skeptisch sein, dass diese analogen Peripheriegeräte ausnahmslos so schrecklich sind, oder sich zumindest fragen, warum einige Chiphersteller nicht einfach eine MCU mit einem halbwegs anständigen analogen Frontend herausbringen.

Nun, sie können nicht. Es spielt keine Rolle, wie gut die Referenz wirklich ist, es ist kein Stabilitätsproblem. Es ist Lärm. Und Physik.

Es ist einfach physikalisch unmöglich, einen ADC mit hoher Leistung (oder wirklich nur mittelmäßiger Leistung) auf demselben Siliziumchip wie eine MCU zu erstellen. Und es braucht nur eine Gotchya, um die analoge Leistung zu verbessern. In diesem Fall gibt es nicht eine Gotchya, sondern mehrere.

Erstens wird nur eine CMOS-Transistorumschaltung alle Arten von Harmonischen und Rauschen direkt in alles abladen und beim Umschalten in alles eingekoppelt (Sie haben es erraten). Wir neigen dazu , von CMOS zu denken , als Low - Power zu sein (und es ist), aber es lohnt sich wenn man bedenkt , dass die Power - CMOS tut Gebrauch ist effektiv Null - außer , wenn ein Transistor Zustand ändert. Und sie ändern ihren Zustand sehr schnell in der Größenordnung von zehn bis Hunderten von Pikosekunden. Wenn Sie ein Dutzend Milliampere nehmen, die von etwas verbraucht werden, das im Wesentlichen keine statische Energie verbraucht, und all dieser Strom vollständig in intensive 100-ps-Stromspitzen von buchstäblich Millionen kleiner Bastarde umgewandelt wirdSchalter, Wechsel insgesamt ... nun, das sollte die Dinge ein wenig umgestalten. Diese wenigen Milliampere sind viel finsterer als sie scheinen, zumindest für analoge Sachen. Geringer Stromverbrauch ≠ geringes Rauschen. CMOS ist stromsparend, da zum Schalten nur Strom benötigt wird. Aber es schaltet härter als ein Dubstep-Bass-Drop.

Diese Spitzen müssen alle durch das Substrat, das Substrat, das der ADC teilt, reißen und resistiv genug sein, um einen lokalisierten Erdungssprung im Substrat zu verursachen, der für digitale Schaltungen bedeutungslos, für analoge Schaltungen jedoch sehr problematisch ist.

Und daran führt wirklich kein Weg vorbei. Das ist nur ein Problem. Das andere ist, dass es physikalisch unmöglich ist, ein analoges Hochleistungslayout zu erstellen, das mit der MCU koexistieren kann, die diese Pins auch als GPIO verwenden muss, und andere Überlegungen, die die Chance eines guten analogen Abschnitts tödlich stören Layout.

Jetzt gibt es einige spezialisierte MCUs mit etwas verbesserten ADCs, die dies erreichen, indem sie tatsächlich zwei vollständig getrennte Siliziumchips in einem Gehäuse haben, die durch Bonddrähte verbunden sind, wodurch eine Substratisolation erzielt wird. Sie werden jedoch für diese Funktion bezahlen, und die Ergebnisse werden aufgrund der Nähe immer noch schlechter sein als bei einem dedizierten ADC.

Oh, und ich habe noch nicht einmal angesprochen, wie dies alles davon ausgeht, dass Sie ein einwandfreies externes Layout und eine Erdungs- und Entkopplungssituation in Bezug auf Ihren analogen und digitalen Bereich haben. Das allein ist nicht trivial, fragen Sie einfach Henry Ott .

Zusammenfassend befürchte ich, dass der ADC auf Ihrem Chip wirklich so schrecklich ist. Genau wie jeder andere MCU ADC. Es tut uns leid. Entweder es ist gut genug - und für viele , viele Anwendungen (unterstützt von einigen ziemlich clevere Software Quelle ry - pun) - es ist. Es ist erstaunlich, was man trotz der schlechten analogen Leistung wirklich erreichen kann, solange man schlau ist. Aber klug kann dich nur so weit tragen. Wenn Sie eine kalte, harte und effektive Anzahl von Bits wünschen, müssen Sie wirklich nur in die Kugel beißen und einen dedizierten ADC zusammen mit einem sorgfältigen Layout und Entkopplung der Leiterplatte verwenden oder ein spezielleres Teil (wie Multi-Die-Pakete) verwenden.


3
+1 für Zitat des Tages: "CMOS ist stromsparend, weil es nur zum Schalten Strom benötigt. Aber es schaltet härter als ein Dubstep-Bass-Drop."
Araho

Ich stelle fest, dass dieser Teil einen ADC im Ladungsverteilungsstil verwendet, der seine eigenen einzigartigen Probleme hat: analog.com/en/search.html?q=an-931
Peter Smith
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.