Forum: Analoge Elektronik und Schaltungstechnik DAC Modell, Probleme mit dem Gain error %FSR


von Jan K. (jan_k776)


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?

: Bearbeitet durch User
von Jan K. (jan_k776)


Lesenswert?

Hat keiner Ahnung davon? Denke ich habe alle relevanten Informationen 
gezeigt und konkrete Fragen gestellt.

von Purzel H. (hacky)


Lesenswert?

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

: Bearbeitet durch User
von Stephan (stephan_h623)


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.

von Jan K. (jan_k776)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.