Ich muss in meiner aktuell bearbeiteten Schaltung die Eingänge dahingehend testen, dass ich sicherstellen soll, dass sie passend reagieren, ohne, dass ich von aussen ein Signal anführen kann. Die einzige Möglichkeit die ich sehe ist, einen Ausgang zu spendieren und diesen auf den Eingang zu routen, um ihn im Betriebsfall auf tri state schalten und die Schaltung unbeeinflusst arbeiten lassen zu können. Problem: Ich brauche für die kritischen 32 Pins weitere 32 pins. Alternativ habe ich überlegt, einen Ausgang zu nehmen und damit Transitoren einzuschalten, die jeweils die Leitungen auf 0 oder 1 pullen. Macht 64 Transistoren! Lieber wäre es mir, wenn ich per Commando die internen pullups / pulldowns benützen könnte. Frage: Kann ich die internen pull-Widerstände im FPGA während des Betriebs ohne Änderung des images dynamisch an und abschalten? Das angeschlossene Modul, dass die Eingänge treibt, ist in dem Testmodus hochohmig oder in der Phase des Tests in der Produktion zu Beginn des Einbaus gar nicht gesteckt. Ich möchte den FPGA sowei als möglich befähigen, das board selber zu testen, ohne noch einen Testdapapter oder Zusatzelektronik zu verbauen.
Ingenieur schrieb: > Frage: Kann ich die internen pull-Widerstände im FPGA während des > Betriebs ohne Änderung des images dynamisch an und abschalten? Allgemein kann man die Frage nicht beantworten, jeder FPGA Hersteller kann da machen was er will. Bei Lattice ECP3: Geht nicht. Diese internen Pullup/downs sind relativ hochohmig (10-200 k) und unbestimmt. Hängt also extrem davon ab was hochohmig auf der anderen Seite heisst.
In meinem Fall heisst es: mindestens 100k. Ich habe ja schon Versuche gemacht, mit fixen images die pulls zu bedienen, was prima ging. Ich hätte es halt gerne dynamisch während des Betriebs. Wie sieht es aus mit dynamic reconfiguration? Da schwärmen doch alle davon. Ginge das damit?
Ingenieur schrieb: > Ich muss in meiner aktuell bearbeiteten Schaltung die Eingänge > dahingehend testen, dass ich sicherstellen soll, dass sie passend > reagieren, ohne, dass ich von aussen ein Signal anführen kann. > > Die einzige Möglichkeit die ich sehe ist, einen Ausgang zu spendieren > und diesen auf den Eingang zu routen, um ihn im Betriebsfall auf tri > state schalten und die Schaltung unbeeinflusst arbeiten lassen zu > können. Mach den Eingang zum I/O, treibe ihn und guck, was Du zurückliest (Treiben und Lesen geht schließlich gleichzeitig). Wenn Du den Ausgang auf Tristate setzt, kannst Du sogar schauen, ob Pull-ups oder -down richtig gesetzt sind. Am einfachsten wäre ein Boundary-Scan-Test, das ist ein Standardanwendungsfall. Da musst Du dein Design gar nicht ändern.
Das mit dem Prüfen der pull-R ist schon klar - genau so mache ich es. Aber das geht ja nur durch Ersetzen des FPGAs weil entweder pull-up oder pull-down gesetzt werden können. Zum zweiten Vorschlag: Geht leider nicht, weil die IOs nicht alle als Ausgänge schaltbar sind, dummerweise :-)
Zwei Gruppen für die Pull Widerstände (>=100k) bilden. Eine für die geraden eine für die ungeraden datenbus pins. Die zwei Gruppen werden dann auf jeweils einem FPGA IO Pin zusammengeführt. Somit kannst du checkerboard pattern pullen. 0x5555 und 0xAAAA. 0x0000 und 0xFFFF geht natürlich auch. Damit solltest du die Meisten Fehler entdecken können. Während des Betriebs werden die Test-IO's auf '0' getrieben. Somit sieht jeder Input eine zusätzliche Last von einem Pull Widerstand. Das sollte verkraftbar sein.
Ottmar schrieb: > Zwei Gruppen für die Pull Widerstände (>=100k) bilden. > Eine für die geraden eine für die ungeraden datenbus pins. > Die zwei Gruppen werden dann auf jeweils einem FPGA IO Pin > zusammengeführt. Verstehe ich nicht. Schlägst du damit nicht vor, jeweils die Hälfte der Eingänge untereinander kurzzuschließen? Oder meinst du, dass die Eingänge über Dioden auf den Test-IO zusammengeführt werden? (Dann würde auch ich es verstehen.) Wenn Ingenieur z.B. Schottky-Arrays mit gemeinsamer Kathode nutzt, könnte er so die schaltbaren Low-Treiber realisieren und bräuchte deutlich weniger Zusatzkomponenten als in seiner Idee mit 64 Transistoren. Es würde zwar nicht der volle Eingangspegel erreicht, aber für die meisten Interfacestandards würde es wohl reichen. Ingenieur schrieb: > Wie sieht es aus mit dynamic reconfiguration? > > Da schwärmen doch alle davon. Ginge das damit? Könnte vielleicht gehen. Aber meiner Erfahrung nach erzeugst du dir mit solchen "Testfeatures" oft mehr Probleme, Unsicherheiten und Ausfälle, als du ohne sie je hättest..
Ingenieur schrieb: > Das mit dem Prüfen der pull-R ist schon klar - genau so mache ich es. > Aber das geht ja nur durch Ersetzen des FPGAs weil entweder pull-up > oder pull-down gesetzt werden können. Ich meinte externe Pull-ups oder -downs, nicht die innerhalb des FPGAs. Ingenieur schrieb: > Geht leider nicht, weil die IOs nicht alle als Ausgänge schaltbar sind, > dummerweise :-) Wieso nicht? Weil die Pins das physikalisch nicht hergeben (wäre bei FPGA eher ungewöhnlich)? Oder weil es das Design nicht hergibt (aber das möchstes Du ja gerade ändern)? Wie wird das FPGA (bzw. das Config-PROM) programmiert? Per JTAG? Dann ist Boundary Scan IMHO immer noch die einfachste Lösung.
Rudolph schrieb: > Ingenieur schrieb: >> Geht leider nicht, weil die IOs nicht alle als Ausgänge schaltbar sind, >> dummerweise :-) > > Wieso nicht? Weil die Pins das physikalisch nicht hergeben (wäre bei > FPGA eher ungewöhnlich)? Oder weil es das Design nicht hergibt (aber das > möchstes Du ja gerade ändern)? Ist sicher ein Spartan 3 oder sowas, da gabs jede Menge Input Only Pins. > Wie wird das FPGA (bzw. das Config-PROM) programmiert? Per JTAG? Dann > ist Boundary Scan IMHO immer noch die einfachste Lösung. Das lässt sich aber schwer aus dem laufenden Design heraus machen, denn dazu muss das FPGA in den EXTEST Modus geschaltet werden. Und man muss an die JTAG Kette kommen. Beides eventuell machbar...
Achim S. schrieb: > Verstehe ich nicht. IN0--R--| |--R--IN1 IN2--R--| |--R--IN3 IN4--R--| |--R--IN5 IN6--R--| |--R--IN7 | | FPGA FPGA I/0 I/O
Ottmar schrieb: > Achim S. schrieb: >> Verstehe ich nicht. > > IN0--R--| |--R--IN1 > IN2--R--| |--R--IN3 > IN4--R--| |--R--IN5 > IN6--R--| |--R--IN7 > | | > FPGA FPGA > I/0 I/O Also über Widerstände zusammenführen. Ok, das würde bei passender Dimensionierung der Widerstände funktionieren. Aber da gefällt mir die Zusammenführung über Dioden trotzdem besser. Zum Beispiel mit http://www.diodes.com/datasheets/ds30775.pdf könnten je 6 Eingänge kontrolliert werden (bei Gehäusegröße 1,6mm x 1,6mm). Treibt man den Test-IO auf high sind die Eingänge vollständig entkoppelt (<6pF), und offene Eingänge werden vom internen Pullup auf high gezogen. Treibt man den Test-IO auf low werden die Eingänge gegen den Pullup auf ca. 300mV gezogen.
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.