Ich habe einen 14-Bit- ADC . Betrachtet man jedoch das Datenblatt (siehe Tabelle 2 auf Seite 5), so beträgt die effektive Anzahl der Bits (ENOB) immer weniger als 12 Bits.
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?
Antworten:
Du wurdest bamboozled!
14-Bit ist Marketing-Sprache, und die Hardware gibt Ihnen auch das, so werden sie sagen, Sie haben nichts zu beanstanden. Direkt über ENOB im Datenblatt werden SINAD-Nummern (Signal to Noise and Distortion) angegeben. Das sind 72 dB, und 1 Bit entspricht einem Pegel von 6 dB, so dass 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 eine sehr gute Korrelation erfordern, was bedeutet, dass sie sehr vorhersehbar sein müssen.
quelle
Angenommen, man möchte eine konstante Spannung so genau wie möglich mit einem ADC messen, 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 nominal für Spannungen zwischen (N-0,5) / 100 und (N + 0,5) / 100 Volt zurückgegeben wird (so würde beispielsweise ein Code von 47 nominal etwas zwischen 0,465 und 0,475 darstellen Volt). Was soll man wünschen, wenn der ADC-Ausgang mit einer stationären Spannung von genau 0,47183 Volt gespeist wird?
Wenn der ADC immer den Wert ausgibt, der den oben definierten Bereich darstellt, in den die Eingabe fällt (in diesem Fall 47), wird der Wert unabhängig von der Anzahl der Messungen 47 angezeigt unmöglich.
Nehmen wir stattdessen an, dass der ADC so konstruiert ist, dass ein zufälliger "Dither" -Wert, der linear von -0,5 bis +0,5 verteilt ist, zu jedem Messwert hinzugefügt wird, bevor er in eine Ganzzahl konvertiert wird. Unter diesem Szenario würde eine Spannung von 47,183 Volt einen Messwert von 48 ergeben, was ungefähr 18,3% der Zeit und einen Wert von 47 in den anderen 81,7% der Zeit entspricht. Wenn man den Durchschnitt von 10.000 Ablesungen berechnet, sollte man damit rechnen, dass es ungefähr 47.183 sind. Wegen der Zufälligkeit kann es etwas höher oder niedriger sein, aber es sollte ziemlich nahe sein. Es ist zu beachten, dass bei einer ausreichenden Anzahl von Messwerten ein beliebiges Maß an erwarteter Genauigkeit erreicht werden kann, obwohl jedes zusätzliche Bit mehr als die doppelte Anzahl von Messwerten erfordern würde.
Das Hinzufügen von genau einem LSB für linear verteiltes Dithering wäre für einen ADC ein sehr schönes Verhalten. Leider ist die Implementierung eines solchen Verhaltens nicht einfach. Wenn das Dithering nicht linear verteilt ist oder wenn seine Größe nicht genau ein LSB ist, ist der Betrag an realer Präzision, den man durch Mitteln erhalten kann, stark begrenzt, unabhängig davon, wie viele Abtastwerte verwendet werden. Wenn anstelle eines LSB mit linear verteilter Zufälligkeit mehrere LSBs addiert werden, erfordert das Erreichen eines bestimmten Genauigkeitsniveaus mehr Messwerte als bei Verwendung einer idealen Ein-LSB-Zufälligkeit erforderlich wären, jedoch die letztendliche Grenze für die erreichbare Genauigkeit Wenn Sie eine beliebige Anzahl von Messungen vornehmen, ist die Empfindlichkeit gegenüber Fehlern in der Dithering-Quelle weitaus geringer.
Beachten Sie, dass es in einigen Anwendungen am besten ist, einen ADC zu verwenden, der das Ergebnis nicht schwankt. Dies gilt insbesondere unter Umständen, bei denen es mehr um die Beobachtung von Änderungen der ADC-Werte als um die genauen Werte selbst geht. Wenn es wichtiger ist, die Differenz zwischen einer Anstiegsrate von +3 Einheiten / Abtastung und einer Anstiegsrate von +5 Einheiten / Abtastung schnell aufzulösen, als zu wissen, ob eine stationäre Spannung genau 13,2 oder 13,4 Einheiten beträgt, ist ein nicht ditherender ADC möglicherweise besser als ein Dithering eins. Auf der anderen Seite kann die Verwendung eines Dithering-ADC hilfreich sein, wenn man die Dinge genauer messen möchte, als ein einziger Messwert zulässt.
quelle
Bonus-Lektion: Sie erhalten wirklich 14 Bit Präzision , aber nur 12 Bit Genauigkeit .
quelle
Eine zusätzliche Einschränkung ... manchmal möchten Sie tatsächlich Zufälligkeit .
Beispielsweise:
In kryptografischen Anwendungen (Sicherheit / Authentizität) ist eine reine "nicht ermittelbare" Zufälligkeit erforderlich. Die Verwendung der LSBs eines Konverters (die unterhalb des Grundrauschens liegen) ist eine schnelle Möglichkeit, rein zufällige Zahlen zu generieren.
Wenn die ADC-Hardware für andere Zwecke (Sensoren usw.) verfügbar ist, können Sie schnell und einfach eine sichere Kommunikation herstellen. Sie können den Effekt verstärken, indem Sie die Verstärkung des Eingangsverstärkers maximieren (viele MCUs bieten eine solche Funktion an) und den Eingang schweben lassen.
Die ADC-Zufälligkeit beruht hauptsächlich auf zwei physikalischen Prinzipien: 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 es treten daher keine Quantisierungsfehler oder Zufälligkeiten auf. Thermisches Rauschen wirkt sich in den meisten Szenarien nicht auf die höherwertigen Bits bei der Konvertierung aus.
Im weiteren Verlauf können Sie feststellen, dass eine Änderung der Konvertierungsparameter (Abtastzeit, Tiefe, Rate, Referenzspannung) eine Änderung der Zufälligkeit der Ergebnisse bewirkt, indem Sie den Schwellenwert für die Zufälligkeit verschieben (entweder erhöhen, indem Sie ihn erhöhen, oder verringern, indem Sie den Schwellenwert senken) ). Ein ähnlicher Effekt wird durch Variieren der Umgebungs- / Systemparameter (Temperatur, Stromversorgung usw.) erzielt.
Das heißt, viele erfolgreiche kommerzielle Hardware-Zufallszahlengeneratoren verlassen sich auf diese Technik, weil äußere Effekte die Zufälligkeit nur verringern - sie beseitigen sie keineswegs (physikalisch unmöglich).
Sie können eine Verringerung der Zufälligkeit ausgleichen, indem Sie mehr Conversions durchführen und die Ergebnisse anhängen. Dieser Prozess der Bit-Erweiterung (Verkettung der Low-Bits aufeinanderfolgender Konvertierungen) wird unter anderem in den STM32-Nucleo-Dongles, dem FST-01 (einschließlich NeuG 1.0) und der Grang-Gerätefamilie von LE Tech verwendet.
Die Grang-Geräte erzeugen Bits durch Konvertieren mit über 400 Millionen Konvertierungen pro Sekunde (1 Bit pro Konvertierung). Wenn Sie genügend Conversions durchführen, können Sie eine hohe Zufälligkeit auch unter Umgebungsbedingungen garantieren.
quelle