Hallo Zusammen, in meinem Projekt möchte ich einen FPGA bzw. dessen Ports (3,3V) (MachXOLF aus dem Starterkit von Lattice) mit verschiedenen I/O Signalen aus einem anderen (5V) IC verbinden. Dabei bin ich darauf angewiesen das ich die I/O Richtung wechseln kann. Am besten automatisch, weswegen ich mich für den TXB0104 als Pegelwandler entschieden habe. Über die interne Beschaltung der I/O Ports des anderen IC's habe ich leider keine weiteren Informationen. Zu Anfang hatte ich den I/O Wandler einfach verbunden und gehofft das alles so klappt, leider war dem nicht so. Nun habe ich die Schaltung deutlich reduziert und mir die Signale nochmal auf dem Oszilloskop angeschaut. Das "Programm" im FPGA macht (zu Testzwecken) aktuell nichts anderes als eine I/O Leitung zu lesen und den Zustand auf einer separaten LED auszugeben. Zur Analyse habe ich mir nun ein "Takt"-Signal aus dem externen 5V IC angeschaut und Testweise verschiedene Pull-Up/Down Wiederstände auf seiten des FPGA an den I/O Buffer gebunden. In den angehängten Bildern sieht man nun die Signale die Beim FPGA ankommen. Leider sehen alle nicht besonders gut aus und keines der Signale kommt an die 3,3V rann, oder ähnelt der eigentlich gewollten Wellenform. Hat vielleicht jemand einen Tipp woran es liegen könnte oder was ich als nächstes tun sollte? Anbei ein Bild mit (von Oben nach Unten): - 5V Ausgangssignal vom externen IC - Signal zwischen FPGA und TXB0104 ohne Pull Up/Down - Signal zwischen FPGA und TXB0104 mit internem Pull Down - Signal zwischen FPGA und TXB0104 mit internem Pull Up
über was für Geschwindigkeiten reden wir hier? Sind alle Oszi-Bilder mit der selben Zeitbasis?
Das Signal hat etwa 3,5 MHz. Die Basis auf den Bildern ist meinem Wissen nach gleich. (bei dem letzten bin ich mir nicht ganz sicher) Weiterhin sind es auf der Y Achse 1V pro Rastereinheit. Hier fällt auf das es auf dem ersten bild ~5V sind, auf den anderen jedoch nicht annähernd 3,3V.
Andre F schrieb: > Zur Analyse habe ich mir nun ein "Takt"-Signal aus dem externen 5V IC > angeschaut und Testweise verschiedene Pull-Up/Down Wiederstände auf > seiten des FPGA an den I/O Buffer gebunden. Mal davon abgesehen, dass es keine "Wiederstände" gibt: hast hast im Datenblatt des Bausteins auf der Seite 3 im Bild 5 die Fußnote D gesehen? > Dabei bin ich darauf angewiesen das ich die I/O Richtung wechseln kann. > Am besten automatisch Warum "automatisch"? Weißt du denn nicht, zu welchem Zeitpunkt die Signale in welche Richtung gehen? Wie sicherst du dich gegen einen Buskonflikt ab oder wie löst du einen Buskonflikt auf?
Lothar M. schrieb: > Andre F schrieb: >> Zur Analyse habe ich mir nun ein "Takt"-Signal aus dem externen 5V IC >> angeschaut und Testweise verschiedene Pull-Up/Down Wiederstände auf >> seiten des FPGA an den I/O Buffer gebunden. > Mal davon abgesehen, dass es keine "Wiederstände" gibt: hast hast im > Datenblatt des Bausteins auf der Seite 3 im Bild 5 die Fußnote D > gesehen? Die Fußnote hatte ich zwar nicht dort gesehen, jedoch im Fließtext des Datenblattes etwas weiter vorne. Testweise hatte ich einen entsprechenden Widerstand manuell eingebaut, bevor ich die internen des FPGA verwendet hatte. Ein "hocher" Wert - also entsprechend dem Datenblatt" größer als 50k Ohm - hatte auf das Signal keine/so gut wie keine Außwirkung. Ein Test mit einem etwas kleinerem Widerstand entspracht etwa dem auf dem Bild mit internem Pull Up bzw. Pull Down. Also vermutlich etwas besser, jedoch ncoh weit vom eigentlichen Signalverlauf entfernt. >> Dabei bin ich darauf angewiesen das ich die I/O Richtung wechseln kann. >> Am besten automatisch > Warum "automatisch"? Weißt du denn nicht, zu welchem Zeitpunkt die > Signale in welche Richtung gehen? Wie sicherst du dich gegen einen > Buskonflikt ab oder wie löst du einen Buskonflikt auf? Theoretisch weiß ich das schon, bzw. kann es eventuell experimentiell ermitteln. Vielleicht ein paar Worte zum Hintergrund. Es geht um die Kommunikation zwischen einem Super Nintendo CIC Chip und dem Pendant aus der Cartridge. Etwas vereinfacht gesagt funktioniert die Kommunikation so: Der IC-SNES ist mit IC-Cart über zwei I/O Leitungen P0 und P1 über Kreuz verbunden. Zu Anfang wird über die Leitungen ein paar Bits ausgetauscht, dann wechselt die I/O Richtung von P0 und P1 und die beiden IC's reden quasi in umgekerter Richtung miteinander. Hierauf habe ich leider keinen Einfluss. Ich vermute mal das diese Designentscheidung getroffen wurde um es anderen schwieriger zu machen mit den IC's zu kommunizieren. Meine Kenntnisse bzgl. Design/Entwicklung für FPGA's ist aktuell noch recht beschränkt. Deswegen bestand meine Idee darin auf FPGA-Seite einen In/Out Port zu verwenden und diesen über einen Pegelwandler mit dem anderen IC auf SNES Seite zu verbinden. Hierbei muss ich zwar immer noch im FPGA darauf achten zum richtigen Moment zwischen Input und Output zu wechseln (in meinem Fall wohl High-Z und 0/1) jedoch habe ich dann nicht die Gehfahr Hardware zu beschädigen, wenn ich bei der Kommunikation etwas falsch mache. Angenommen ich würde beispielsweise eine 1 (3,3V) ausgeben und die andere Seite fungiert gerade auch als Ausgang mit 0 (0V) dann hätte ich ja quasi einen Kurzschluss der ggf. eine Seite beschädigen könnte. Oder übersehe ich da etwas?
Andre F schrieb: > Meine Kenntnisse bzgl. Design/Entwicklung für FPGA's ist aktuell noch > recht beschränkt. Deswegen bestand meine Idee darin auf FPGA-Seite einen > In/Out Port zu verwenden und diesen über einen Pegelwandler mit dem > anderen IC auf SNES Seite zu verbinden. Mit welchem Ziel? Willst du dich "dazwischenklemmen" und die Daten manipulieren? Oder willst du eine Cartridge basteln? Oder willst du nur mithorchen?
Lothar M. schrieb: > Andre F schrieb: >> Meine Kenntnisse bzgl. Design/Entwicklung für FPGA's ist aktuell noch >> recht beschränkt. Deswegen bestand meine Idee darin auf FPGA-Seite einen >> In/Out Port zu verwenden und diesen über einen Pegelwandler mit dem >> anderen IC auf SNES Seite zu verbinden. > Mit welchem Ziel? Willst du dich "dazwischenklemmen" und die Daten > manipulieren? Oder willst du eine Cartridge basteln? Oder willst du nur > mithorchen? Ich möchte den Chip auf der Cartridge durch meine eigene Lösung ersetzen. Eigentlich wollte ich hier jedoch garnicht so genau in die Ziele meines Projektes abtauchen. Es ging mit mehr darum zu ermitteln warum die Kummunikation so kaputt aussehen könnte.
Andre F schrieb: > Ich möchte den Chip auf der Cartridge durch meine eigene Lösung > ersetzen. Dann musst du doch sowieso wissen, wann du umschalten musst/kannst/darfst. Und dann kannst du auch einen normalen umschaltbaren Treiber aus der Liga SN74LVCC4245A nehmen... Wenn das ganze eine Art Mulstimaster/I²C-Bus ist, dann nimmst du diesen allseits Schaltungstrick zur Pegelwandlung eines I²C Busses: http://www.nxp.com/documents/application_note/AN10441.pdf
Lothar M. schrieb: > Andre F schrieb: >> Ich möchte den Chip auf der Cartridge durch meine eigene Lösung >> ersetzen. > Dann musst du doch sowieso wissen, wann du umschalten > musst/kannst/darfst. Richtig, aber mit dem TXB0104 Schaltung war ich mir sicher das ich im Zweifelsfall nichts kaputt machen kann. Das schlimmste was passieren kann war in meinem Gedankengang das nichts passiert. > Und dann kannst du auch einen normalen > umschaltbaren Treiber aus der Liga SN74LVCC4245A nehmen... Was würde denn passieren wenn beide Seiten der Schaltung als Ausgang konfiguriert sind und auf einer Seite 5V anliegen und auf der anderen 0V? Ich mchte vermeiden den Super Nintendo zu grillen. (Anhand des Datenblattes bin ich mir nicht sicher was genau passieren würde)
Andre F schrieb: > Was würde denn passieren wenn beide Seiten der Schaltung als Ausgang > konfiguriert sind und auf einer Seite 5V anliegen und auf der anderen > 0V? Das wäre.eine Buskollision.Und passieren würde mit an Wahrscheinlichkeit grenzender Sicherheit gar nichts. Ich habe solche Sachen schon mit 32Bits auf Dauer gemacht, da war nach 2 Wochen immer noch nichts kaputt. Und es passiert schon gleich überhaupt gar nichts, wenn du während der Entwicklung einfach 100R Serienwiderstände in die Busleitungen vom Treiber zur Konsole bastelst.
:
Bearbeitet durch Moderator
Andre F schrieb: > Was würde denn passieren wenn beide Seiten der Schaltung als Ausgang > konfiguriert sind und auf einer Seite 5V anliegen und auf der anderen > 0V? Bei I2C wird das Problem auf der FPGA-Seite z.B. dadurch gelöst, dass statt einer '1' am Ausgang ein 'Z' den Ausgang in den Hi-Z Zustand versetzt. Per Pullup wird dann eine '1' generiert.
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.