Hallo, ich habe auf einer Platine 3 gleiche ADCs, es sind die THS1206 von TI. Diese Platine ist über ein Flachbandkabel an ein FPGA-Entwicklungsboard angeschlossen, welches die ADC ansteurt und auslesen soll. Dazu habe ich in VHDL die Ansteurung nach Datenblatt des THS1206 realisiert und für alle drei ADCs wird der selbe Code instanziiert. Mein Problem ist nun, dass nur zwei der drei ADC funktionieren, der dritte stürzt immer ab. Das äußert sich so, dass der DATA_AV (data availiable) Pin immer anzeigt der ADC hätte keine Daten zum Auslesen. Das Abstürzen/Deaktivieren des 3. ADC tritt in sehr unregelmäßigen Abständen auf: Manchmal läuft er ein paar Sekunden, manchmal auch für 10 Minuten. Ab und zu läuft er gar nicht nach dem Aufstarten. Erst nach einem Neustart kommen wieder Daten. Da meine Signale ja über 7cm Flachbandkabel + 8cm PCB gehen, habe ich meine Leitungen terminiert (100 Ohm + 1nF in Reihe nach Masse). Diese Terminierung habe ich nachträglich eingefügt, weil ohne diese bei den Schaltflanken deutliche Überschwinger erkennbar sind. Durch die Terminierung ist das nun auf +/-0.5V überschwingen/"Unterschwingen" reduziert. Könnte es sein, dass der ADC defekt ist? Er funktioniert aber manchmal für längere Zeit und dann fällt er plötzlich wieder in den Schlaf :-( Ich muss dazu sagen, dass der 3. ADC der ist, der die längsten Leitungen zum FPGA hat, allerdings habe ich nun ja terminiert und das hat aber nichts geändert :-( Über Tipps, was ich noch genau Messen kann/soll oder was ich sonst versuchen könnte, bin ich sehr dankbar! Viele Grüße, Doran
@Doran S. (utzer) >Da meine Signale ja über 7cm Flachbandkabel + 8cm PCB gehen, habe ich >meine Leitungen terminiert (100 Ohm + 1nF in Reihe nach Masse). Hmmm. Und auch mal RICHTIG gemessen, wie die Signale aussehen? Wie sieht deine Signalbelegung auf dem Flachbandkabel aus? Wieviele Masseleitungen? Wie sind die verteilt? Siehe Wellenwiderstand. >Terminierung habe ich nachträglich eingefügt, weil ohne diese bei den >Schaltflanken deutliche Überschwinger erkennbar sind. Richtig gemessen? https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen > Durch die >Terminierung ist das nun auf +/-0.5V überschwingen/"Unterschwingen" >reduziert. Naja. >Könnte es sein, dass der ADC defekt ist? Er funktioniert aber manchmal >für längere Zeit und dann fällt er plötzlich wieder in den Schlaf :-( Kann sein, ist aber eher unwahrscheinlich. >Ich muss dazu sagen, dass der 3. ADC der ist, der die längsten Leitungen >zum FPGA hat, allerdings habe ich nun ja terminiert Das hat der T800 auch und war am Ende auch Schrott ;-) > und das hat aber >nichts geändert :-( Man muss RICHTIG messen. Und 100R + 1nF ist ein AC-Terminierung, die nur für konstante Taktsignale taugt.
>>Da meine Signale ja über 7cm Flachbandkabel + 8cm PCB gehen, habe ich >>meine Leitungen terminiert (100 Ohm + 1nF in Reihe nach Masse). > > Hmmm. Und auch mal RICHTIG gemessen, wie die Signale aussehen? > Wie sieht deine Signalbelegung auf dem Flachbandkabel aus? Wieviele > Masseleitungen? Wie sind die verteilt? Masseleitung gibt es leider nur eine am Rand. Kann das schon das Problem sein? > > Siehe Wellenwiderstand. > >>Terminierung habe ich nachträglich eingefügt, weil ohne diese bei den >>Schaltflanken deutliche Überschwinger erkennbar sind. > > Richtig gemessen? > > https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen > >> Durch die >>Terminierung ist das nun auf +/-0.5V überschwingen/"Unterschwingen" >>reduziert. > > Naja. Ist -/+0.5V Überschwingen viel oder wenig? (Ich kann das nicht so gut einschätzen, darum frage ich....) > >>Könnte es sein, dass der ADC defekt ist? Er funktioniert aber manchmal >>für längere Zeit und dann fällt er plötzlich wieder in den Schlaf :-( > > Kann sein, ist aber eher unwahrscheinlich. Ok, ja, denn wenn er manchmal für mehrere Minuten läuft, sollte der ADC ja noch in Ordnung sein.... > >>Ich muss dazu sagen, dass der 3. ADC der ist, der die längsten Leitungen >>zum FPGA hat, allerdings habe ich nun ja terminiert > > Das hat der T800 auch und war am Ende auch Schrott ;-) Was ist denn ein T800? Und könnten meine langen Leitungen ein Problem sein? > >> und das hat aber >>nichts geändert :-( > > Man muss RICHTIG messen. Und 100R + 1nF ist ein AC-Terminierung, die nur > für konstante Taktsignale taugt. Ok, dass ich richtig gemessen habe, denke ich schon. Habe sogar so eine Feder an den Tastkopf gemacht, damit die Masse möglichst direkt angebunden ist. Warum funktioniert 100R + 1nF nur bei konstanten Taktsignalen und nicht allgemein? Vielen Dank schon mal für die Anregungen, Foto folgt am Montag
@Doran S. (utzer) >Masseleitung gibt es leider nur eine am Rand. Kann das schon das Problem >sein? Ganz sicher! >Ist -/+0.5V Überschwingen viel oder wenig? (Ich kann das nicht so gut >einschätzen, darum frage ich....) Kommt drauf an. Es kann aber auch ein Meßfehler sein und das Signal in Wahrheit besser aussehen. >> Das hat der T800 auch und war am Ende auch Schrott ;-) >Was ist denn ein T800? http://terminator.wikia.com/wiki/T-800_(The_Terminator) > Und könnten meine langen Leitungen ein Problem > sein? Ja, aber auch die fehlenden Massen. >angebunden ist. Warum funktioniert 100R + 1nF nur bei konstanten >Taktsignalen und nicht allgemein? Steht im Artikel Wellenwiderstand.
Ich wurde eher jede Leitung mit einem 10kOhm Pullup oder Pulldown Widerstand beschalten. Gibts auch ala Reihenwiderstans zu kaufen. Ein Bild wäre gut weil man dann auch sieht ob oder wie sparsam du mit Kerkos umgegangen bist.
@Thomas O. (kosmos) >Ich wurde eher jede Leitung mit einem 10kOhm Pullup oder Pulldown >Widerstand beschalten. Gibts auch ala Reihenwiderstans zu kaufen. Und was soll der Quark? 10k sind HF-technisch nicht vorhanden.
Ich hatte mal vor Jahren ein EEPROM versuchsweise per Hand programmiert. Einige Latches, DIP-Schalter,LEDs, Flachbandkabel usw., es gab immer etwas PIN Gezappel, erst mit einer kleinen Belastung also Pulldowns bekamm ich da Ruhe rein. hes auch mit so nem Flachkabel und DIP Schaltern manuell angesteuert um Daten in ein EEPROM per Hand zu schreiben, und da gab es auch PIN gewackel erst mit Pullups bzw- Pulldowns gabs ruhe. Und bei einem Pollin Board eines Freundes gabs auch mal solche komischen Überschwinger, da lag es an kleine Kerkos, die glaube parallel über den Schalten lagen.
Hallo, Danke für die zahlreichen Tipps. Ich habe nun die Terminierung von R+C zu reinem Widerstand (100Ohm) nach Masse geändert und damit läuft der ADC jetzt endlich. Viele Grüße, Doran
@Doran S. (utzer) >Danke für die zahlreichen Tipps. Ich habe nun die Terminierung von R+C >zu reinem Widerstand (100Ohm) nach Masse geändert und damit läuft der >ADC jetzt endlich. Ohje. Schon mal GEMESSEN, wie deine Signale jetzt aussehen? 100 Ohm an 3,3V macht 33mA! Das ist für einen normalen CMOS-Ausgang viel zuviel! Da bricht der HIGH-Pegel massiv ein! Da ist es eher Glück, daß dein ADC noch funktioniert! Wenn schon, dann Theveninterminierung, das halbiert den Strombedarf. Ist zwar immer noch viel aber es geht so lala. Flachbandleitung hat um die 120-150 Ohm Wellenwiderstand, da kann man es erstmal mit 2x 240 Ohm probieren. https://www.mikrocontroller.net/articles/Wellenwiderstand#Parallelterminierung Außerdem ist bei einer einfachen Punkt zu Punkt Verbindung die Serienterminierung deutlich entspannter! Nutze diese!
Hallo, Oha, an die 33mA habe ich gar nicht gedacht. Das ist ja tatsächlich ein Problem, da die Ausgänge des FPGAs auf 18mA eingestellt sind.... Bei der Serienterminierung muss der Widerstand aber doch in der Nähe der Quelle sein? Das geht bei mir aber nicht, da der FPGA ja auf einem fertigen Board sitzt und ich somit nur am ADC terminieren kann!? Sollte ich den Widerstand einfach etwas erhöhen, oder doch wieder R-C einsetzen? Werde am Montag nochmal genauer messen und mich mit einem Kollegen unterhalten. Vielen Dank nochmals für eure Unterstützung und die Tipps, so lerne ich etwas dazu :-) Viele Grüße, Doran
Mach einen Spannungsteiler statt einem Widerstand nach Masse. Der benötigt weniger Strom vom CMOS-Ausgang. Die +3,3V müssen natürlich mit einem C (0,1uF, 1uF) abgeblockt werden. Masse---220Ohm---o---220Ohm---3,3V
Habe jetzt doch die Leiterbahn aufgekratzt und 120 Ohm in Reihe eingebaut. Damit sieht das Signal nun wie im Bilderbuch aus :-) Und der ADC läuft jetzt super. Allerdings ist der Widerstand jetzt in der Nähe des ADC, also nicht bei der Quelle.... Es funktioniert aber trotzdem. Sollte man hier noch etwas optimieren? Der FPGA sitzt leider auf einem fertigen Entwicklungsboard, daher kann ich da schlecht einen Widerstand direkt nach dem FPGA plazieren... Kann man die Serienterminierung eigentlich auch für das Taktsignal verwenden? Oder ist da R+C besser? (Wenn ich eine Punkt-zu-Punkt Verbindung habe). Viele Grüße und Danke für die tolle Hilfe hier, Doran
@Doran S. (utzer) >Allerdings ist der Widerstand jetzt in der Nähe des ADC, also nicht bei >der Quelle.... Es funktioniert aber trotzdem. Das ist der Sieg der Praxis über die Theorie. >Sollte man hier noch etwas >optimieren? Nein. >Kann man die Serienterminierung eigentlich auch für das Taktsignal >verwenden? Ja. > Oder ist da R+C besser? (Wenn ich eine Punkt-zu-Punkt >Verbindung habe). Nicht unbedingt. Ich würde meistens eher zur Serienterminierung greifen.
Ja genau, leider kommt die Praxis an der Uni meistens zu kurz. Und wenn man dann mal wirklich was baut, dann stößt man auf total unbekannte Probleme. Daher hat mir das hier wirklich geholfen, weil ich jetzt ein Problem in der Praxis gelöst habe und es eben große Abweichungen zwischen der Theorie und der Praxis gibt. Da hilft echt nur die Berufserfahrung.....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.