DAC Modell, Probleme mit dem Gain error %FSR

OP #7593587
Lesenswert?

Hallo zusammen,

ich versuche gerade, ein einfaches DAC Modell zu bauen, um es in Monte Carlo Analysen zu verwenden. Es sollen folgende Eigenschaften unterstützt werden

  • Resolution
  • Vref
  • Offset error
  • gain error

Ich habe insbesondere mit dem Gain Error Probleme. Ich schreibe mal ein paar Definitionen. Die meisten Infos stammen aus https://e2e.ti.com/blogs_/b/analogwire/posts/dac-essentials-the-pursuit-of-perfection und https://www.infineon.com/dgdl/ap3212111-ADC-Measurement-v11.pdf?fileId=db3a304318f3fe2901191955cd3c2de3

Annahmen, Auflösung = 8 bit, kein Rauschen, kein INL, keine Temperaturabhängigkeit. Vref = V+ = 3V3, V- = GND = 0V

  • N = Auflösung = 8 Bit
  • LSB = gain = Steigung der Kennlinie = eine "Kodierstufe": FSR/2^N = 12.89 mV/code
  • FSR = Full scale range: Vref = 3.3 V
  • FS = Full scale = maximal ausgebbare Spannung bei DAC_MAX: FSR-LSB = 3.287 V
  • DAC_MAX = maximaler dac code: 2^N-1 = 255

Ich denke soweit sollte es passen.

Jetzt steht z.B. im DB von Analog Devices https://www.analog.com/media/en/technical-documentation/data-sheets/ad5673r-5677r.pdf

  • offsetErr = Offset Error max = +/- 2 mV
  • gainErr = Gain Error max = +/- 0.12 %FSR

Ich würde sagen, die Ausgangskennlinie des DAC kann dann so beschrieben werden:

vOut = dacIn*(gain + gainErr/100*FSR) + offsetErr

vOut ist dann die ausgegebene Spannung am DAC Pin, dacIn ist quasi der code = der DAC Register Wert.

Aber: Irgendwas passt nicht. Angenommen ich möchte den code 16=2^4 ausgeben, der in einer idealen Spannung von 206.25 mV (16*LSB) resultieren würde, dann wäre mit offset Fehler vOut=206.25 mV +/- 2 mV.

Aber der gainErr wäre +/-0.12/100*3.3 = +/-3.96 mV und damit ja schon im 1/10 Wertebereich wie der gain von 12.89 mV/code.

Der Fehler wäre dann also entweder 16*(gain + 3.96) +/-2 mV = 269 +/- 2 mV oder 16*(gain - 3.96) +/- 2 mV = 143 +/-2 2mV.

Das sind ja gigantische Fehler, das kann ich mir nicht vorstellen.

Habe ich bei der Umrechnung des gain errors in %FSR einen Fehler gemacht? Muss das nochmal durch 2^N oder so geteilt werden?

Vielen Dank!

Edit: Könnte es sein, dass es

vOut = dacIn*(gain*(1 + gainErr/100*FSR)) + offsetErr

sein muss, also der gainErr noch mit dem gain multipliziert werden muss?

#7596593
Lesenswert?

Vielleicht mal Figure 9 ankucken. Der Gain Error ist nicht je LSB sondern gesamt.

Aber was soll Monte Carlo da bringen? Vergleich wie sich die Ergebnisse zwischen 100 DAC unterscheiden? Für das Verhalten eines einzelnen DAC wärs völliger Käse weil der Gain error sich nicht zufällig verteilt sondern grob deterministisch. Auch zwischen unterschiedlichen Devices verläuft der vmtl. Eher ähnlich, wenn auch nicht weiter spezifiziert.

OP #7606572
Lesenswert?

Purzel H. schrieb:

Was soll die Simulation zeigen ? Gain Error bedeutet, dass der Gain einen Fehler aufweist. Im Sinne von Ausgangssignal = ((Code x Refererenz x Gain)/ 2^N) + Offset

Genau, der Fehler kann aber in %Full Scale oder auch anders angegeben sein. Wie würdest in deiner Formel den gain error mit einbauen? Wo würdest du die Klammern setzen?

Stephan schrieb:

Vielleicht mal Figure 9 ankucken. Der Gain Error ist nicht je LSB sondern gesamt.

Genau, er ist in %Full Scale. Figure 9 ist was anderes, das ist der total unadjusted error. In der Tabelle 3 gibt es drei Werte, die in %FSR angegeben sind, Gain error, full-scale error, und total unadjusted error. FSR sind 3.3V. Angenommen, ich betrachte nur den gain error, wie komme ich zum Gesamtfehler?

Es ist ja nicht einfach gain = ideal gain + gain error %FSR

Aber was soll Monte Carlo da bringen? Vergleich wie sich die Ergebnisse zwischen 100 DAC unterscheiden? Für das Verhalten eines einzelnen DAC wärs völliger Käse weil der Gain error sich nicht zufällig verteilt sondern grob deterministisch. Auch zwischen unterschiedlichen Devices verläuft der vmtl. Eher ähnlich, wenn auch nicht weiter spezifiziert.

Ich möchte gucken, wie stark sich der Ausgang verändert, wenn ich gain und offset gemäß des Datenblattes variiere. Und ja, wir sprechen über viele tausende DAC.

Danke euch!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren