mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehlersuche AD-Wandler AD9650


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Gustl B. (-gb-)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Platine entworfen und jetzt teilbestückt die neben FPGA 
auch einen ADC, einen AD9650 ( 
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9650.pdf 
) enthält.

Ich habe schon zwei Vorgängerplatinen mit diesem ADC, diese 
funktionieren auch. Aber diese jetzt nicht obwohl sich an der Schalung 
nichts verändert hat.

Das Problem:
Egal was ich einstelle, (ausser den Test Modes) bekomme ich immer genau 
den Wert 32768 zurück. Also das MSB gesetzt, der Rest nicht.

Was funktioniert?
Ich kann die Register im ADC über SPI beschreiben und lesen. Das 
Geschriebene kommt an, steht also in den Registern. Die verbauten 
Widerstände haben alle die Werte wie im Schaltplan. Die von aussen 
angelegte Spannung 1,8 V ist minimal höher, 1,825 V. Das will ich aber 
weil die noch runter geht wenn die Platine weiter bestückt wird. Sollte 
auch nicht das Problem sein, da der ADC bis 2 V Maximal funktioniert.

Der Takt kommt aus einem Taktteiler, hat die geforderten 25 MHz, ist 
LVDS mit einem 1,2 V DC-Offset. Wird zuerst mit 100 Ohm terminiert und 
dann über zwei 100 nF Kondensatoren an den ADC weitergereicht. Der ADC 
selber macht intern einen DC-Bias von 0.9 V. Wenn ich die Kondensatoren 
weglöte kann ich an jedem der beiden ADC Takteingänge eine DC-Spannung 
von 0,45 V messen.
1. Frage: Passt das weil die beiden Eingänge zusammen dann doch 0,9 V DC 
haben oder ist das deutlich zu wenig und jeder Eingang müsste 0,9 V DC 
haben?

Dann hat der ADC noch einen SENSE Pin, der liegt auf Masse 
(nachgemessen) und schaltet so die interne Referenz an. V_REF liegt bei 
1,345V (gemessen) und passt zu den 1,35V aus dem Datenblatt.

V_CM sollte bei der halben Versorgungsspannung liegen, liegt etwas höher 
bei 1V statt 0,9 ist aber noch in dem Bereich der OK ist.

Aus dem ADC geht auch ein Takt raus zum FPGA, der hat auch die 25 MHz, 
mit dem werden die Daten dort in ein Dual-Clock-FIFO geschrieben.

Was habe ich schon gemacht?
Auf Kurzschlüsse geprüft, auf schlechte Lötstellen geprüft, den ADC 
durch einen anderen baugleichen ersetzt.
Ich kann natürlich auch Register x"0D" beschreiben, und somit den Test 
Mode festlegen. Und die funktionieren alle wunderfein.

Ich habe schon alle möglichen Einstellungen probiert und es sieht für 
mich jetzt so aus, als würde der Analogeingang vom ADC einfach nicht 
funktionieren. Warum wauch immer.

Ich habe den Datenausgang B nicht angeschlossen weil ich CMOS 
interleaved verwende. Das habe ich schon auf einer anderen Platine 
getestet und funktioniert.

Habt ihr Ideen?

Autor: Magnus M. (magnetus) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Ist dir bereits aufgefallen dass du in der Eingangsbeschaltung VIN-A und 
VIN+A vertauscht hast?

Autor: Gustl B. (-gb-)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Ja das ist ein Fehler, stimmt, aber egal weil die Namen von den Signalen 
ausserhalb ja passen.

Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> bekomme ich immer genau
> den Wert 32768 zurück

was der erwartete Wert ist, wenn der ADC im Zweierkomplement arbeitet 
und die Eingangsspannung kleiner als Vref ist.

Deshalb zur Sicherheit die Nachfrage: hast du denn mal direkt an den 
Eingängen nachgemessen, wie groß die Eingangsspannung tatsächlich ist 
(also was tatsächlich an den Eingangspins ankommt)? Vielleicht hat ja 
der vorgeschaltete ADC-Treiber ein Problem, und der ADC gibt einfach den 
dazu richtig passenden Wert aus.

Autor: Gustl B. (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, habe ich gemessen. Das ist ja differentiell. Einmal 0,96V und 1,2V 
und am anderen Eingang 0,85V und 1,15V. Das müsste also OK sein.

Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, dann die nächste Frage nur zur Sicherheit: das Teil hat ja einen 
Pipeline-Delay von 12 Samples. Du lässt das Sampling nach der 
Konfiguration des ADCs schon kontinuierlich durchlaufen und schaust dir 
nicht etwa immer nur einen der ersten zwölf (undefinierten) Messwerte 
an, oder?

Autor: Gustl B. (gustl_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jap ich taste durchgehend ab, es wird auch durchgehend in den 
Dual-Clock-FIFO geschrieben wenn dieser nicht voll ist.

Und dann wenn ich Werte auslesen will lese ich von der anderen Seite 
variabel 2^9 bis 2^14 Werte aus dem FIFO in BRAM und das schicke ich 
dann zum PC.

Ich muss mir das jetzt alles mal simulieren. Gerade schreibe ich mir die 
ganzen externen Bausteine in VHDL damit ich in der Testbench die ganze 
Platine nachstellen kann. Ist doch recht aufwändig ...

Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht VREF richtig aus?

Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> Und dann wenn ich Werte auslesen will lese ich von der anderen Seite
> variabel 2^9 bis 2^14 Werte aus dem FIFO in BRAM und das schicke ich
> dann zum PC.

Um auszuschließen, dass das Problem hier liegt (d.h. dass nicht 
viellleicht aus dem ADC zwar richtige Werte kommen, die aber im FPGA 
falsch weitergegeben werden) kannst du auch eine Oszi-Probe direkt an 
den Datenausgang des ADCs hängen. Um zu verifizieren, dass D15 wirklich 
immer auf high und alle anderen Datenausgänge immer auf low liegen.

Zeigt denn der ORA-Ausgang einen Overrange an? (was wohl der Fall sein 
sollte, wenn wirklich im Analogteil des ADCs was schief geht)

Sven B. schrieb:
> Sieht VREF richtig aus?

Ja ;-)

Gustl B. schrieb:
> V_REF liegt bei
> 1,345V (gemessen) und passt zu den 1,35V aus dem Datenblatt.

Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, überlesen, sorry ;)

Autor: Gustl B. (-gb-)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie hat das was mit dem Takt zu tun. Vielleicht aber auch was ganz 
anderes.
ORA ist low. Aber ich bekomme auch nur manchmal einen Takt bei DCOA. Der 
Takteingang ist wunderbar LVDS mit 25 MHz, aber der Ausgang DCOA ist oft 
weg. DCOB ist aber da und auch bei 25 MHz. Der Takteingang hat keine 
Unterbrechungen.
Ich vermute noch irgendwelche Kontaktprobleme. Wobei der Footprint passt 
und bisher habe ich solche Packaged immer problemlos verlötet. Morgen 
werde ich da nochmal mit Heißluft rangehen.
Der IC hat unten ein großes Pad das mit Masse verbunden werden soll. Ich 
habe im Footprint dieses Pad etwas kleiner gemacht weil das beim IC 
schon recht weit an den Rand geht und ich keine Verbindungen zwischen 
dem Pad und den Pins haben will. Aber im Layout habe ich diesen Platz 
genutzt und ein paar Vias in diesen Bereich gesetzt. Auch DCOA. Und 
diese Vias sind zwar dünn, aber man kann z. B. mit der 
Oszi-Tastkopfspitze ohne viel Kraft an so einem Via das jeweilige Signal 
messen. Die sind also nicht abgedeckt, war ja auch nicht so bestellt, 
sie sind dafür eben minimal abgesenkt. Jetzt habe ich die Vermutung, 
dass das Pad auf der Unterseite des ICs mit dem Lot einen Kontakt zu 
einem odder mehreren dieser Vias hat. Vielleicht auch keinen guten 
Kontakt, aber eben ein bischen oder so. Andere Vermutungen habe ich 
kaum. Und in den Vorgängerboards gab es diese Vias nicht unter dem IC.
Habe die Pins schon mehrmals mit der Lötspitze erwärmt, Zinn gefüttert 
und die sehen alle verbunden aus und haben auch keinen Kontakt 
untereinander (ausser die mit dem gleichen Signal).
Aber jetzt werde ich den Footprint verändern und unter dem IC keine Vias 
setzen.

Autor: Gustl B. (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, jetzt habe ich versucht Kaptonstreifen unter das IC zu setzen aber 
das hat nicht funktioniert. Situation ist unverändert. Ich werde jetzt 
noch versuchen unter dem IC die Vias mit Lack oder Kleber zu überziehen. 
Muss halt die Hitze aushalten. Vermutlich werde ich einfachen 
Sprüh-Klarlack nehmen in mehreren Schichten.

Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> ORA ist low.

also wohl kein "echter Überlauf", das Problem steckt eher im Digitalteil 
als im Analogteil des ADCs.

Gustl B. schrieb:
> Aber ich bekomme auch nur manchmal einen Takt bei DCOA. Der
> Takteingang ist wunderbar LVDS mit 25 MHz, aber der Ausgang DCOA ist oft
> weg. DCOB ist aber da und auch bei 25 MHz.

DOCA und DOCB werden wohl intern aus dem gemeinsamen Takteingang CLK 
abgeleitet, gemeinsam erzeugt und von eng benachbarte Treibern Treibern 
getrieben. Es ist schon seltsam, dass du zwischen beiden Unterschiede 
messen kannst.

Eine mögliche Ursache dafür könnte sein, dass OEB einen unsauberen Pegel 
hat. Über OEB werden die digitalen Ausgänge (inkl. DCO) enabled. Wenn 
hier kein sauberer Logikpegel anliegen sollte, könnte es theoretisch 
sein, dass ein Teil der Ausgänge enabled ist, ein anderer Teil nicht.

Ansonsten: du könntest vielleicht mal auf FPGA-Seite für den Datenbus 
zum ADC ein "Wiederekennbares Pattern" bezüglich Pull-Up und Pull-Down 
implementieren. Also z.B. bei D0, D2, D4... jeweils den Pull-Up 
aktivieren, bei D1, D3, D5... jeweils den Pull-Down. Bekommst du dann 
als ADC-Wert immer noch 0x8000? Oder wechselt es auf 0x5555?. Im zweiten 
Fall würde es bedeuten, dass der Datenausgang vom ADC zum FPGA 
tatsächlich nicht getrieben wird sondern von den schwachen (und bisher 
zufälligen) Belastungen der Datenleitungen abhängt. In dem Fall würde 
ich mich weiter auf das OEB konzentrieren.

Autor: Gustl B. (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achim S. schrieb:
> Eine mögliche Ursache dafür könnte sein, dass OEB einen unsauberen Pegel
> hat.

OEB liegt hybsch auf Masse. Kleiner 0.2 Ohm incl. der Messstrippen vom 
Multimeter.

Nun habe ich alle Pins mal einzeln nachgelötet aber irgendwie scheinen 
die trotzdem nicht sauber zu sitzen. Oder unter dem FPGA sind 
Kurzschlüsse ...
Die Lötstellen sehen gut aus, aber das sahen sie schon vorher.


Jedenfalls bekomme ich jetzt die Clock. Und sehe ein schlechtes 
Analogsignal.
Bei den Testmustern ist Folgendes:
Checker liefert immer abwechselnd die Werte
dezimal 43711, binär 1010101010111111
dezimal 22367, binär 0101011101011111
1/0 Word togge liefert immer abwechselnd die Werte
65535, binär 1111111111111111
00537, binär 0000001000011001

Da sind also Fehler drinnen. Ich bekomme diese Testmuster auf beiden ADC 
Kanälen. Also wenn ich CMOS interleaved ausgeben lasse bekomme ich für 
jeden Kanal die Muster. Aber ich bekomme nur für einen Kanal das 
Analogsignal. Egal wie ich die DCO Phase verschiebe.

Der ADC kann also +Full Scale ausgeben, aber -Full Scale nicht weil ein 
paar Bits gesetzt bleiben.
Wenn ich auf allen Datenleitungen Pulldowns einbaue ins FPGA, dann sind 
immer noch Fehler da, aber -Full Scale ist dann statt 537 nur noch 536.

So, weiter getestet, und zwar jetzt von der FPGA Seite aus. Damit ich da 
aber Daten einlesen und die ADC Ausgänge hochohmig setzen kann lese ich 
mit einer anderen Clock ein. Jetzt habe ich einmal alle Datenleitungen 
mit einem Pulldown runtergezogen und die Datenausgänge vom ADC 
ausgeschaltet. Und es ist leider nicht besser.
Ich bekomme einen wilden Wert von 50232. Wenn ich aber als Testmode 
-Full Scale einstelle bekomme ich jetzt noch 24. Also zwei falsche Bits. 
Ich hatte das zwischenzeitlich vom Flussmittel gereinigt.

Checker sieht jetzt so aus:
43198, 1010100010111110b
21854, 0101010101011110b

Und das 1/0 Word toggle:
65534, 1111111111111110
00024, 0000000000011000

Das bedeutet, dass das LSB jetzt auch spinnt. ARGH!!!! Zum Mäuse melken. 
Aber ich habe einen etwas anderen Footprint entworfen bei dem ich auch 
nachträglich noch mit dem Lötkolben an die Pads rankomme und dann werde 
ich in Zukunft Vias unter dem IC vermeiden und auch bei diesem 
Speziellen IC auf Vias in Pads verzichten.
Eine neue wackelkontaktfreie andere USB-Buchse muss auch auf die nächste 
Platine.

So, jetzt habe ich die Kondensatoren wieder auf die Platine gesetzt und 
nochmal mit Heißluft und sehr viel Flussmittel erwärmt. Als alles schön 
flüssig war habe ich den ADC von oben auf die Platine gedrückt. Der ist 
noch etwas abgesackt.
Abere jetzt vor der Reinigung bekomme ich am Ausgang zwar die Clock, 
aber  nicht mal die Testmuster ... OEB liegt wieder schön auf Masse.

Ich schreibe hier vielleicht noch weiter Updates, habe diese Platine 
aber innerlich schon abgeschrieben. Habe noch so eine unbestückt hier, 
weiß aber nicht ob ich die bestücke weil ja doch Layoutfehler drinnen 
waren und ich definitiv eine Nachfolgerplatine entwerfe/baue (habe schon 
angefangen).

: Bearbeitet durch User
Autor: Rächdschraip Leera (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Gustl B. schrieb:
> Jedenfalls bekomme ich jetzt die Clock.

Gustl B. schrieb:
> bekomme ich am Ausgang zwar die Clock

Meinst du jetzt "der Uhr" oder "die Takt"?

In unserer (nicht kleinen und auch nicht unbedeutenden) Firma
spricht man seit Jahrzehnten von "der Clock".

Autor: Gustl B. (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, die Clock_In.

Aber egal, jetzt habe ich den ADC heruntergenommen und mit Lack alles 
unter dem IC bedeckt bis auf das Massepad. Das lasse ich jetzt erstmal 
trocknen und bevor ich den ADC wieder drauf setze lege ich mal am FPGA 
Signale auf die Datenleitungen und auch auf den Clock. Vielleicht sehe 
ich da ja ein Übersprechen oder sonst was das komisch aussieht.

Autor: Rächdschraip Leera (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Gustl B. schrieb:
> OK, die Clock_In.

Asoooooo, die Eingangs Uhr.

Ja dann .... manche Dinge oder Menschen sind so gestört,
das muss man nicht verstehen ...

Autor: Gustl B. (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, kleines Update:
Das mit dem Lack unter dem ADC als Isolation zwischen Vias und GND Pad 
am ADC hätte funktioniert, allerdings haben sich einige Pads gelöst. Da 
habe ich einfach schon zu oft draufgebraten mit dem Heißluftfön.

Ich habe mich also entschieden eine neue Platine zu bestücken, 
baugleich. Also ein 1:1 Umzug der Teile. Zuerst habe ich mir die Platine 
ausgedruckt, Top und Btn zusammen auf A4. Dann habe ich unter Heißluft 
alle Teile von der alten Platine genommen und auf das Papier gelegt. 
Damit die nicht sofort wegfliegen habe ich sie mit etwas 
Flussmittelpaste "angeklebt". Ja und dann habe ich die vom Papier unter 
Heißluft wieder auf die neue Platine gesetzt. Bisher die komplette 
Rückseite und auf der Vorderseite den Schaltregler, FTDI und FPGA. 
Funktioniert alles und hat mich bis jetzt nur 3 kleine Kondensatoren 
gekostet die ich irgendwo verloren habe.

Dabei ist mir etwas aufgefallen:
Der FT2232HQ 
https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf 
hat laut Zeichnung auf Seite 57 ein 4.35 mm x 4.35 mm großes Massepad. 
Das muss auch mit Masse verbunden sein (ebenfalls laut Datenblatt).

Aber:
1. Ich hatte bisher auf keiner meiner Platinen ein Masse Pad vorgesehen. 
Und der Stein funktionierte trotzdem. Ist natürlich ein Fehler, sehe ich 
ein und werde das in Zukunft anders machen.
2. Könnte man meinen, dass zwischen Massepad und den Pins an der Seite 
ja Platz ist um Vias und so zu setzen. Aber auf der Unterseite des 
FT2232HQ sind in diesem Bereich viele Leitungen ohne Isolation.
https://media.digikey.com/Photos/FTDI%20(Future%20Tech%20Devices)/FT2232HQ-REEL.JPG
Ich bin der Meinung das gehört auch ins Datenblatt.

Morgen oder Freitag werde ich weiter bestücken, aber vorher werde ich 
alle IOs testen. Jetzt sitzt ja fast nur das FPGA auf der Platine, da 
kann ich also einen langen Zähler im FPGA zählen lassen und jedes 
einzelne Bit mit einem IO verbinden.
Klar, das MSB würde dann sehr langsam toggeln, daher werde ich mehrere 
Zähler verwenden, aber so kann man schön erkennen ob zwischen IOs eine 
Verbindung besteht.

Edit:
In meinem Eagle-Layout hatte ich den FT2232HQ aus der in Eagle 
enthaltenen Lib ftdichip-3 verwendet. Da hat sich also schon wer anderes 
nicht ans Datenblatt gehalten.

: Bearbeitet durch User
Autor: Gustl B. (-gb-)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, jetzt habe ich weiterbestückt und auch wieder den ADC draufgesetzt. 
Ja, einen Gebrauchten und keinen Neuen. Alle Testmodi funktionieren, 
also alle Datenleitungen sind OK. Am Eingang habe ich +IN, -IN jeweils 
und V_CM zusammen verbunden für beide Kanäle.

Aber was ich bekomme ist zwar ein Analogsignal, aber sehr kantig. So als 
würden viele Bits nicht funktionieren. Im Anhang mal eine Datei mit 512 
Abtastwerten und auch zwei Bildchen davon.

Tja ... kann man so einen ADC leicht schlachten?
Wenn ich die Platine an den Strom (USB) stecke, dann ist natürlich 
erstmal kein Baustein konfiguriert. Auch nicht der externe Taktteiler. 
Da gehen also kurzfristig 500 MHz an den ADC. Das sehe ich auch schön 
bei der Leistungsaufnahme. Im unkonfigurierten Zustand zieht die Platine 
ca. 460 mA, im konfigurierten Zustand ca. 260 mA.

Dann gibt es ja noch ESD und so. Vor dem ADC saß/wird/soll wieder ein 
VGA sitzen (das ist vermutlich nicht sehr sinnvoll, weil der viel 
Gerausche hinzufügt, aber ich wollte mal mit dem spielen). Das ist ein 
HMC960 
https://www.analog.com/media/en/technical-documentation/data-sheets/hmc960.pdf 
. Der wird mit +5V versorgt und soll dann ein Signal ausgeben, das um 
V_cm (1V) herum liegt. Aber so wie ich das Datenblatt verstehe, das ist 
leider etwas arg knapp, kann der Ausgang zwischen +0.5 V und +4.5 V 
liegen. Und das ist über den +1.8 V der ADC Versorgung. Ich kann den ADC 
also deutlich übersteuern und wollte das auf FPGA-Seite "verhindern", 
das Gain also maximal so hoch regeln dass der ADC nicht clippt.
Aber auch das ist natürlich nicht verfügbar solange weder FPGA noch VGA 
konfiguriert wurden.

Und als letzer Punkt fällt mir noch die Temperatur ein beim Löten. Ich 
verwende hier einen ganz normalen Heißluftfön. Alle anderen Bauteile 
(FPGA, Schaltregler, Taktteiler, SPI-Flash mit Konfiguration, FT2232H, 
...) haben das bisher immer gut überstanden. Jetzt sogar den Umzug auf 
die neue Platine, also zweimaliges Erwärmen.

Ich habe noch ein paar neue ADCs da, würde die aber ungerne einfach auf 
Verdacht verbraten wenn ein anderer Fehler offensichtlich ist.

Edit:
Den Takt mit dem die Daten im FPGA erfasst werden habe ich schon 
verschoben. Da kommt leider kein schöneres Signal bei rum.

Edit2:
Eine Verbindung kann ich natürlich nicht überprüfen. Und zwar die 
Masseverbindung. Der ADC hat "nur" eine Masseverbindung, das große 
Massepad auf der Unterseite.
Aber ... kann das sein, dass DCO, die Datenleitungen, V_REF und V_VM die 
korrekten Werte haben wenn die Masseanbindung fehlt?
Ich vermute nein, aber es sind ja andere Pins wie OEB, PWND, SENSE (und 
R_BIAS über 10k) mit Masse verbunden, vielleicht genügt das für den 
teilweisen Betrieb ...

Danke für eure Hinweise.

: Bearbeitet durch User
Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mal einen Sägezahn dranmachen? Am besten einen ziemlich 
langsamen. Wenn sich einzelne Bits komisch verhalten, findet man den 
Fehler meiner Erfahrung nach so am schnellsten.

Autor: Gustl B. (gustl_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja kann ich die Tage mal machen, aber ... wenn Bits im Analogteil defekt 
sind kann ich die auch schlecht reparieren. Das Digitalinterface 
funktioniert.

Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> So, jetzt habe ich weiterbestückt und auch wieder den ADC draufgesetzt.
> Ja, einen Gebrauchten und keinen Neuen. Alle Testmodi funktionieren,
> also alle Datenleitungen sind OK.

na prima.

Gustl B. schrieb:
> Aber was ich bekomme ist zwar ein Analogsignal, aber sehr kantig. So als
> würden viele Bits nicht funktionieren.

Ist das mit den kurzgeschlossenen Eingängen gemessen (also V+ = V- = 
Vcm)? Dann sollte der ADC "ungefähr" 0 liefern falls du mit 
Zweierkomplement arbeitet und ungefähr 32768 falls du mit binary offset 
arbeitest.

Da nur der oberste Wert in deiner Messung wirklich fest ist (33279) gehe 
ich mal davon aus, dass du im Zweikomplement arbeitest und dann noch im 
FPGA einen Offset-Wert addierst, oder? Sonst würde ich als Obergrenze 
die 32767 erwarten.

Die anderen "kantigen" Werte sind in Wirklichkeit fein aufgelöst, da 
wackeln durchaus auch die unteren Bits. Die Kantigkeit ergibt sich durch 
die Abtastung.

Für mich sieht es so aus, als hättest du einen schnellen Signalverlauf 
am oberen Ende deines Aussteuerbereichs. (Allerdings passt das nicht zu 
der Beschreibung V+=V-=VCM). Und als du pro Periode deines Signals grade 
mal 5-6 Abtastpunkte hättest - das sorgt für die die Kantigkeit. Ich 
würde Svens Vorschlag unterstützen, mal eine langsamere Funktion zu 
untersuchen.

Gustl B. schrieb:
> Und als letzer Punkt fällt mir noch die Temperatur ein beim Löten.

Na ja, das ist ein Präzisionsbauteil. Wenn du dich nicht genau an das 
vorgegebene Lötprofil hälst, garantiert dir AD wahrscheinlich schon 
nicht mehr die volle Performance. Mehrmaliges Umlöten sorgt mit 
ziemlicher Sicherheit zu messbaren Verschlechterungen der Performance. 
Allerdings nur bei genauer Messung, nicht so, dass man mit bloßem Auge 
den Samples Fehler ansieht.

Autor: Gustl B. (-gb-)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Achim S. schrieb:
> Ist das mit den kurzgeschlossenen Eingängen gemessen

Das hatte ich auch vor und haben das Datenblatt gelesen:
The analog inputs of the AD9650 are not internally dc biased.

Und da dachte ich ich lege da überall V_CM an. Mit der internen Referenz 
von 1.35 V kann der ADC 2.7 Vpp differentiell, jeder der Eingänge darf 
dabei V_Ref um V_CM herum schwingen. Mit V_CM bei 0.9 V darf jeder 
Eingang also von 0.9 V - V_REF/2 bis 0.9 V + V_REF/2 schwingen. Und das 
geht dann eben von 0.225 V bis 1.575 V. Masse oder 0 V ist da also 
ausserhalb des Bereichs. Oder habe ich das falsch verstanden?

Achim S. schrieb:
> Ich
> würde Svens Vorschlag unterstützen, mal eine langsamere Funktion zu
> untersuchen.

OK, kann ich machen. Ich bestücke aber dazu nicht den VGA HMC960 sondern 
nehme einen zweikanal Signalgenerator und erzeuge dort ein 
differentielles Signal  mit einem DC-Offset von V_CM. Und ich messe mal 
die Versorgungsspannungen mit dem Oszi, vielleicht ist da ja tatsächlich 
ein Signal drauf.

Edit:
Wohoooo!!!! Jetzt habe ich mal AVDD gemessen und dachte natürlich, dass 
das passt, aber ... nein, ich konnte sehr deutlich den Datenausgang 
sehen. Ich gebe die Daten ja interleaved aus, also konnte ich 50 MHz 
schön sehen mit grob 40 - 50 mVpp. Ja und das obwohl ich AVDD von DVDD 
mit einem Ferrit getrennt habe und AVDD nicht von den digitalen 
Ausgängen gequert wird. Ich hatte auch aus meiner Sicht (glaubte ich 
zumindest) genug Kapazität als Kerkos verbaut, 2x 47uF in 0805 und 2x 
470nF in 0402 auf der Rückseite unter dem ADC. Aber da sind eben Vias 
dazwischen. Die Oberseite hatte ich nur minimal bestückt.
Jedenfalls habe ich jetzt auch auf der Oberseite die Kondensatoren 
hingelötet, das sind 4x 470nF in 0402 und siehe da, das Signal sieht 
wunderbar sauber aus. Hach (-:
Im Anhang noch zwei Bildchen. Mit dem DC-Histogramm komme ich schon 
hybsch nache an Figure 17 Seite 16 ran 
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9650.pdf 
.

Vielen Dank für eure Anregungen, diese Aktion hat mich einige Nerven 
gekostet, aber ich habe auch gelernt.

: Bearbeitet durch User
Autor: Gustl B. (-gb-)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, jetzt habe ich direkt an IN+ und IN- jeweils ein kleines Koax 
gelötet und mit je einem Generatorausgang meines Oszis verbunden. Dort 
erzeuge ich zwei um 180° verschobene Signale mit 0.9 V DC und 1.35 Vpp.

Einmal 1 MHz Sinus als FFT und einmal eine Rampe als Bildchen.
Dafür, dass da kein analogfilter dazwischen sitzt und auch kein 
Kondensator an den IN+ und IN- Eingängen ist das glaube ich OK.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.