Ich habe einen 14-Bit- ADC . Wenn man sich jedoch das Datenblatt ansieht (siehe Tabelle 2 auf Seite 5), ist die effektive Bitanzahl (ENOB) immer kleiner als 12 Bit.
Warum behauptet mein DAC, ein 14-Bit-ADC zu sein, wenn er nur eine Genauigkeit von 12 Bit hat? Was bringt es, zwei zusätzliche Bits zu haben, wenn sie bedeutungslos sind?
Du wurdest betrogen!
14-Bit ist Marketingsprache, und die Hardware bietet Ihnen das auch, also werden sie sagen, dass Sie sich nicht beschweren müssen. Direkt über ENOB im Datenblatt gibt es SINAD-Zahlen (Signal to Noise and Distortion). Das sind 72 dB, und 1 Bit entspricht einem Pegel von 6 dB, sodass 72 dB tatsächlich 12 Bit sind. Die 2 niedrigsten Bits sind Rauschen.
Es ist möglich, Daten abzurufen, die niedriger als das Grundrauschen sind, aber es ist eine sehr gute Korrelation erforderlich, was bedeutet, dass es sehr vorhersehbar sein muss.
001100110011..
aufeinanderfolgende Samples lesen, und Sie fügen 2 LSB Gaußsches Rauschen hinzu. Meinen Sie, Sie können das LSB des Signals wiederherstellen?Angenommen, man möchte eine konstante Spannung so genau wie möglich messen, indem man einen ADC verwendet, der für jede Messung einen 8-Bit-Wert zurückgibt. Nehmen wir weiter an, dass ADC so spezifiziert ist, dass ein Code von N nominell für Spannungen zwischen (N-0,5)/100 und (N+0,5)/100 Volt zurückgegeben wird (also würde z. B. ein Code von 47 nominell etwas zwischen 0,465 und 0,475 darstellen Volt). Was sollte der ADC-Ausgang haben, wenn er mit einer stationären Spannung von genau 0,47183 Volt versorgt wird?
Wenn der ADC immer den Wert ausgibt, der den oben definierten Bereich darstellt, in den der Eingang fällt (in diesem Fall 47), dann erscheint der Wert unabhängig von der Anzahl der Messwerte als 47. Eine feinere Auflösung als das wäre möglich unmöglich.
Nehmen wir stattdessen an, dass der ADC so konstruiert wurde, dass jedem Messwert ein zufälliger "Dither" -Wert hinzugefügt wurde, der linear von -0,5 bis +0,5 verteilt ist, bevor er in eine Ganzzahl umgewandelt wird? In diesem Szenario würde eine Spannung von 47,183 Volt in etwa 18,3 % der Fälle einen Wert von 48 und in den anderen 81,7 % der Fälle einen Wert von 47 zurückgeben. Wenn man den Durchschnitt von 10.000 Messwerten berechnet, sollte man ungefähr 47,183 erwarten. Aufgrund der Zufälligkeit kann es etwas höher oder niedriger sein, aber es sollte ziemlich nahe beieinander liegen. Beachten Sie, dass man bei genügend Messwerten ein beliebiges Maß an erwarteter Genauigkeit erreichen kann, obwohl jedes zusätzliche Bit mehr als eine Verdoppelung der Anzahl von Messwerten erfordern würde.
Das Hinzufügen von genau einem LSB von linear verteiltem Dithering wäre ein sehr nettes Verhalten für einen ADC. Leider ist die Umsetzung eines solchen Verhaltens nicht einfach. Wenn das Dithering nicht linear verteilt ist oder wenn seine Größe nicht genau ein LSB ist, wäre die Menge an echter Genauigkeit, die man durch Mittelwertbildung erhalten könnte, stark eingeschränkt, egal wie viele Samples verwendet werden. Wenn man, anstatt ein LSB linear verteilter Zufälligkeit hinzuzufügen, mehrere LSB-Werte hinzufügt, erfordert das Erreichen eines bestimmten Genauigkeitsgrades mehr Messwerte, als mit der idealen Ein-LSB-Zufälligkeit erforderlich wären, aber die ultimative Grenze für die erreichbare Genauigkeit B. durch Vornahme einer willkürlichen Anzahl von Messwerten, weit weniger empfindlich gegenüber Unvollkommenheiten in der Zitterquelle.
Beachten Sie, dass es in einigen Anwendungen am besten ist, einen ADC zu verwenden, der sein Ergebnis nicht dithert. Dies gilt insbesondere unter Umständen, in denen man mehr daran interessiert ist, Änderungen in den ADC-Werten zu beobachten als in den genauen Werten selbst. Wenn die schnelle Auflösung des Unterschieds zwischen einer Anstiegsrate von +3 Einheiten/Abtastung und einer Anstiegsrate von +5 Einheiten/Abtastung wichtiger ist als zu wissen, ob eine stationäre Spannung genau 13,2 oder 13,4 Einheiten beträgt, kann ein Non-Dithering-ADC besser sein als ein schwankender. Andererseits kann die Verwendung eines Dithering-ADC hilfreich sein, wenn man Dinge genauer messen möchte, als es eine einzelne Messung erlauben würde.
Bonuslektion: Sie erhalten wirklich 14 Bit Genauigkeit , aber nur 12 Bit Genauigkeit .
Eine zusätzliche Einschränkung ... manchmal möchten Sie tatsächlich Zufälligkeit .
Zum Beispiel:
In kryptografischen (Sicherheits-/Authentizitäts-)Anwendungen ist eine reine „nicht zu erratende“ Zufälligkeit erforderlich. Die Verwendung der LSBs eines Konverters (die unterhalb des Grundrauschens) ist eine schnelle Möglichkeit, reine Zufallszahlen zu erzeugen.
Wenn die ADC-Hardware für andere Zwecke (Sensoren und dergleichen) verfügbar ist, ist dies eine schnelle und einfache Möglichkeit, eine sichere Kommunikation aufzubauen. Sie können den Effekt verstärken, indem Sie die Verstärkung am Eingangsverstärker maximieren, falls verfügbar (viele MCUs bieten eine solche Funktion) und den Eingang floaten.
Die ADC-Zufälligkeit leitet sich hauptsächlich von zwei physikalischen Prinzipien ab: Quantisierungsrauschen und thermisches Rauschen.
Diese Effekte haben eine Schwelle auf makroskopischer Ebene. Beispielsweise müssen Zahlen, die ausreichend von der Bitgrenze entfernt sind, nicht gerundet werden und erfahren daher keinen Quantisierungsfehler oder Zufälligkeit. Thermisches Rauschen wirkt sich in den meisten Szenarien nicht auf die signifikanteren Bits in der Konvertierung aus.
Als Erweiterung können Sie sehen, dass das Variieren der Konvertierungsparameter (Abtastzeit, Tiefe, Rate, Referenzspannung) eine Änderung der Zufälligkeit der Ergebnisse bewirkt, indem der Schwellenwert der Zufälligkeit verschoben wird (entweder durch Erhöhen oder Verringern des Schwellenwerts). ). Ein ähnlicher Effekt wird durch Variieren der Umgebungs-/Systemparameter (Temperatur, Stromversorgung usw.) erzielt.
Allerdings verlassen sich viele erfolgreiche kommerzielle Hardware-Zufallszahlengeneratoren auf diese Technik, da äußere Effekte die Zufälligkeit nur reduzieren – sie beseitigen sie keineswegs (physikalisch unmöglich).
Sie können eine Verringerung der Zufälligkeit kompensieren, indem Sie mehr Konvertierungen durchführen und die Ergebnisse anhängen. Dieser Prozess der Biterweiterung (Verkettung der niedrigen Bits aufeinanderfolgender Konvertierungen) wird in den STM32 Nucleo Dongles, dem FST-01 (einschließlich NeuG 1.0), der Grang-Gerätefamilie von LE Tech und vielen anderen verwendet.
Die Grang-Geräte erzeugen Bits, indem sie mit über 400 Millionen Konvertierungen pro Sekunde konvertieren (1 Bit pro Konvertierung). Wenn Sie genügend Konvertierungen durchführen, können Sie auch angesichts der Umgebungsbedingungen eine hohe Zufälligkeit garantieren.
Chris Stratton
PsychedGuy